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?
machine-learning
keras
scikit-learn
HashRocketSyntax
fuente
fuente
Respuestas:
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.
fuente
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.
fuente
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.
fuente