¿Cómo codificar una clase con 24,000 categorías?


10

Actualmente estoy trabajando en un modelo de regresión logística para genómica. Uno de los campos de entrada que quiero incluir como covariable es genes. Hay alrededor de 24,000 genes conocidos. Hay muchas características con este nivel de variabilidad en biología computacional y se necesitan cientos de miles de muestras.

  • Si yo LabelEncoder()esos genes de 24K
  • y luego OneHotEncoder()ellos ...

¿24,000 columnas harán que mis tiempos de entrenamiento de keras sean irrazonables para una CPU i7 quad-core de 2.2 GHz?

Si es así, ¿hay un enfoque diferente para la codificación que pueda adoptar con esto?

¿De alguna manera debería intentar dedicar una capa de mi modelo a esta función?

¿Esto significa que necesito nodos de entrada de 24K?


¿Por qué no aprender representación usando VAE? Creo que en la secuencia de genes aprender la representación (como se hace en PNL) tendrá mucho sentido en comparación con un simple PCA ...
n1tk

Respuestas:


10

Sí, el uso de la codificación one-hot en funciones de 24k requiere nodos de entrada de 24k. Sin embargo, esto no debería ser un problema para Keras (o cualquier otra biblioteca de aprendizaje profundo). El procesamiento del lenguaje natural a menudo usa una codificación única en palabras con un tamaño de vocabulario en el mismo estadio.

Si está utilizando un modelo "profundo", una de sus capas ocultas debería encargarse de reducir la dimensionalidad de sus datos. Por lo general, no se necesita un paso de preprocesamiento separado.

El tiempo de entrenamiento no debe ser irrazonable.


Gracias por el control de cordura.
HashRocketSyntax

Noté que mencionaste una capa, no PCA en sklearn. ¿Recomendaría autoencoders como una forma de reducción de dimensionalidad?
HashRocketSyntax

2
Usted mencionó que usa Keras, por lo que está utilizando algún tipo de red neuronal, ¿verdad? Si en algún lugar de su red, tiene una capa con un número menor de nodos que su entrada, la red está realizando una reducción de dimensionalidad automáticamente. Supongo que solo tiene una (o una pequeña cantidad de) resultados de regresión. Entonces, una forma simple es tener la capa de entrada (d = 24k), una o más capas intermedias (d = 1k o algo así) y su capa de salida (d = 1).
C. Yduqoli

Si bien las capas de tamaño similar son comunes en la PNL, generalmente no es razonable entrenar modelos modernos de PNL en la CPU, las GPU potentes realmente son apuestas de mesa en la PNL para cualquier cosa más allá de los pequeños modelos de "juguete". Por otro lado, no es una gran barrera, ya que tanto las GPU físicas como las de la nube están fácilmente disponibles.
Peteris

6

La incorporación de entidades para variables categóricas ( localizador original ) sería un enfoque muy adecuado aquí. Sigue leyendo aquí o aquí . De hecho, he puesto códigos de aquí y de allá e hice una implementación completa en ejecución, vea este repositorio de git. Esto maneja fácilmente variables categóricas cardinales muy altas utilizando redes neuronales. No enumeraré los pros y los contras de OHE, solo lo buscas en Google, pero uno de sus principales inconvenientes especialmente. cuando se tiene una variable categórica cardinal muy alta, ¿está aumentando drásticamente su espacio de características innecesariamente, lo que en mi opinión no es ideal? Y lo que es más importante, OHE, que yo sepa, ¡no tiene en cuenta la relación semántica entre categorías si existe tal relación! Sin embargo, la incrustación de entidades es un concepto para la incrustación de palabras en PNL, los pesos que se aprenden a codificar las categorías pueden capturar potencialmente las relaciones intracategorías.


3

En general, ese número de genes debería reducirse a un conjunto mucho más pequeño de características significativas. Luego, el conjunto de características reducidas puede usarse en el modelo. Por ejemplo, el análisis de componentes principales (PCA) es una de las técnicas de reducción más comunes y se ha utilizado para datos de expresión génica .

" Aprendizaje automático para integrar datos en biología y medicina: principios, práctica y oportunidades" por Zitnika et al. cubre una variedad de técnicas de ingeniería de características para genes.


Gracias tiene sentido Reduzca el espacio de funciones a la cantidad de genes relevantes (y zonas reguladoras en wgs).
HashRocketSyntax

¿Es una pregunta demasiado novata preguntar qué tipo de reducción de dimensionalidad recomendaría ?: PCA, múltiple, agrupación / densidad, algún tipo de red neuronal?
HashRocketSyntax
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.