Jak zakodować klasę z 24 000 kategorii?


10

Obecnie pracuję nad modelem regresji logistycznej dla genomiki. Jednym z pól wejściowych, które chcę uwzględnić jako zmienną towarzyszącą, jest genes. Istnieje około 24 000 znanych genów. Istnieje wiele funkcji o tym poziomie zmienności w biologii obliczeniowej i potrzebne są setki tysięcy próbek.

  • Jeśli ja LabelEncoder()te geny 24K
  • a potem OneHotEncoder()oni ...

Czy 24 000 kolumn sprawi, że moje czasy treningów z kamerami będą nieuzasadnione dla czterordzeniowego procesora i7 2,2 GHz?

Jeśli tak, to czy mogę zastosować inne podejście do kodowania?

Czy powinienem w jakiś sposób spróbować poświęcić warstwę mojego modelu tej funkcji?

Czy to oznacza, że ​​potrzebuję 24K węzłów wejściowych?


Dlaczego nie nauczyć się reprezentacji za pomocą VAE? Myślę, że w nauce sekwencji genów reprezentacja (podobnie jak w NLP) będzie miała sens w porównaniu z prostym PCA ...
n1tk

Odpowiedzi:


10

Tak, użycie kodowania „na gorąco” dla funkcji 24k wymaga 24k węzłów wejściowych. Nie powinno to jednak stanowić problemu dla Keras (ani żadnej innej biblioteki do głębokiego uczenia się). Przetwarzanie języka naturalnego często wykorzystuje jedno-gorące kodowanie słów o rozmiarze słownictwa na tym samym boisku.

Jeśli używasz modelu „głębokiego”, jedna z ukrytych warstw powinna zadbać o zmniejszenie wymiarów danych. Oddzielny etap wstępnego przetwarzania zwykle nie jest potrzebny.

Czas szkolenia nie powinien być nierozsądny.


Dziękuję za kontrolę poczytalności.
HashRocketSyntax

Zauważyłem, że wspomniałeś o warstwie, a nie PCA w sklearn. Czy poleciłbyś autoencodery jako formę redukcji wymiarów?
HashRocketSyntax

2
Wspomniałeś, że używasz Keras, więc używasz jakiejś sieci neuronowej, prawda? Jeśli gdzieś w twojej sieci masz warstwę z mniejszą liczbą węzłów niż twoja wejściowa, sieć automatycznie redukuje wymiarowość. Zakładam, że masz tylko jedną (lub niewielką liczbę) wyników regresji. Tak więc jednym prostym sposobem jest posiadanie warstwy wejściowej (d = 24k), jednej lub więcej warstw pośrednich (d = 1k lub coś w tym rodzaju) i warstwy wyjściowej (d = 1).
C. Yduqoli,

Podczas gdy warstwy NLP o podobnych rozmiarach są powszechne, generalnie nie jest rozsądne trenowanie nowoczesnych modeli NLP na procesorze, potężne karty graficzne naprawdę są stawkami tabeli w NLP dla czegokolwiek poza małymi „zabawkowymi” modelami. Z drugiej strony nie jest to duża bariera, ponieważ zarówno fizyczne, jak i chmurowe procesory graficzne są dość łatwo dostępne.
Peteris,

6

Osadzanie encji dla zmiennych kategorialnych ( oryginalny pager ) byłoby tutaj bardzo odpowiednim podejściem. Czytaj tutaj lub tutaj . Właściwie umieściłem fragmenty kodów tu i tam i zrobiłem pełną działającą implementację, zobacz to git repo. To z łatwością radzi sobie z bardzo dużymi zmiennymi kategorialnymi za pomocą sieci neuronowych. Nie wymienię zalet i wad BHP, wystarczy go Google, ale jedną z jego głównych wad jest esp. gdy ma się bardzo wysoką kardynalną zmienną kategorialną, drastycznie zwiększa się niepotrzebnie przestrzeń cech, co moim zdaniem nie jest idealne. Co ważniejsze, OHE, o ile mi wiadomo, nie uwzględnia semantycznego związku między kategoriami, jeśli istnieje taki związek! Osadzanie jednostek jest jednak pojęciem osadzania słów w NLP. Wagi, których uczy się kodowania kategorii, mogą potencjalnie uchwycić relacje wewnątrz kategorii.


3

Zasadniczo tę liczbę genów należy zredukować do znacznie mniejszego zestawu znaczących cech. Następnie zredukowany zestaw funkcji może być użyty w modelu. Na przykład analiza głównych składników (PCA) jest jedną z najpopularniejszych technik redukcji i została wykorzystana do danych dotyczących ekspresji genów .

Uczenie maszynowe dla integracji danych w biologii i medycynie: zasady, praktyka i możliwości” Zitnika i in. obejmuje różnorodne techniki inżynierii cech genów.


Dziękuję ma sens. Zredukuj przestrzeń cech do liczby odpowiednich genów (i stref regulacyjnych w wgs).
HashRocketSyntax

Czy zbyt wiele pytań Nooba należy zadać, jaki rodzaj redukcji wymiarów poleciłbyś ?: PCA, rozmaitość, skupianie / gęstość, jakaś sieć neuronowa?
HashRocketSyntax
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.