Como codificar uma classe com 24.000 categorias?


10

Atualmente, estou trabalhando em um modelo de regressão logística para genômica. Um dos campos de entrada que quero incluir como covariável é genes. Existem cerca de 24.000 genes conhecidos. Existem muitos recursos com esse nível de variabilidade na biologia computacional e centenas de milhares de amostras são necessárias.

  • Se eu LabelEncoder()esses genes 24K
  • e então OneHotEncoder()eles ...

As 24.000 colunas tornarão meus tempos de treinamento keras irracionais para uma CPU i7 quad-core de 2,2 GHz?

Em caso afirmativo, existe uma abordagem diferente para a codificação que eu possa usar com isso?

De alguma forma, devo tentar dedicar uma camada do meu modelo a esse recurso?

Isso significa que eu preciso de 24K nós de entrada?


Por que não aprender representação usando o VAE? Eu acho que na sequência do gene aprender a representação (como é feito em PNL) vai fazer muito sentido em comparação com apenas um PCA simples ...
n1tk

Respostas:


10

Sim, o uso de codificação one-hot em recursos de 24k requer nós de entrada de 24k. No entanto, isso não deve ser um problema para Keras (ou qualquer outra biblioteca de aprendizado profundo). O processamento de linguagem natural geralmente usa a codificação one-hot em palavras com tamanho de vocabulário no mesmo estádio.

Se você estiver usando um modelo "profundo", uma de suas camadas ocultas deve reduzir a dimensionalidade dos seus dados. Uma etapa separada de pré-processamento geralmente não é necessária.

O tempo de treinamento não deve ser irracional.


Obrigado pela verificação de sanidade.
HashRocketSyntax 03/09/19

Notei que você mencionou uma camada, não o PCA no sklearn. Você recomendaria auto-codificadores como uma forma de redução de dimensionalidade?
HashRocketSyntax

2
Você mencionou que usa Keras, então você está usando algum tipo de rede neural, certo? Se em algum lugar da sua rede você tiver uma camada com um número menor de nós do que a sua entrada, a rede está executando uma redução de dimensionalidade automaticamente. Presumo que você tenha apenas uma (ou um pequeno número de) saídas de regressão. Portanto, uma maneira simples é ter a camada de entrada (d = 24k), uma ou mais camadas intermediárias (d = 1k ou algo parecido) e a camada de saída (d = 1).
C. Yduqoli

Embora camadas de tamanho semelhantes sejam comuns na PNL, geralmente não é razoável treinar modelos modernos de PNL na CPU, GPUs poderosas são realmente apostas na PNL para qualquer coisa além de pequenos modelos de 'brinquedos'. Por outro lado, não é uma grande barreira, pois as GPUs físicas e na nuvem estão facilmente disponíveis.
Peteris

6

A incorporação de entidades para variáveis ​​categóricas ( pager original ) seria uma abordagem muito adequada aqui. Leia aqui ou aqui . Na verdade, eu coloquei pedaços de códigos daqui e dali e fiz uma implementação completa, veja este repositório do git. Isso lida facilmente com variáveis ​​categóricas cardinais muito altas usando redes neurais. Não vou listar os prós e contras do OHE, você apenas o pesquisa no Google, mas um de seus principais inconvenientes, especialmente. ao ter uma variável categórica cardinal muito alta, ela aumenta drasticamente o espaço de recursos desnecessariamente, o que, na minha opinião, não é o ideal. E, o que é mais importante, a OHE, que eu saiba, não leva em consideração o relacionamento semântico entre categorias, se existe esse tipo de relação! No entanto, a Incorporação de entidade é um conceito para a Incorporação de palavras na PNL, os pesos que estão sendo aprendidos para codificar as categorias podem potencialmente capturar relações entre categorias.


3

Geralmente, esse número de genes deve ser reduzido a um conjunto muito menor de características significativas. Em seguida, o conjunto de recursos reduzidos pode ser usado no modelo. Por exemplo, a Análise de Componentes Principais (PCA) é uma das técnicas de redução mais comuns e tem sido usada para dados de expressão gênica .

" Aprendizado de máquina para integrar dados em biologia e medicina: princípios, práticas e oportunidades" por Zitnika et al. abrange uma variedade de técnicas de engenharia de recursos para genes.


Obrigado faz sentido. Reduza o espaço do recurso para o número de genes relevantes (e zonas reguladoras em wgs).
HashRocketSyntax 03/09/19

É muita pergunta noob para perguntar que tipo de redução de dimensionalidade você recomendaria: PCA, coletor, agrupamento / densidade, algum tipo de rede neural?
HashRocketSyntax
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.