Tengo un conjunto de datos de alrededor de 5000 características. Para esos datos, utilicé por primera vez la prueba Chi Square para la selección de funciones; después de eso, obtuve alrededor de 1500 variables que mostraron una relación significativa con la variable de respuesta.
Ahora necesito ajustar la regresión logística en eso. Estoy usando el paquete glmulti para R (el paquete glmulti proporciona una selección eficiente de subconjuntos para vlm) pero solo puede usar 30 funciones a la vez, de lo contrario su rendimiento disminuye ya que el número de filas en mi conjunto de datos es de alrededor de 20000.
¿Hay algún otro enfoque o técnica para resolver los problemas anteriores? Si sigo el método anterior, tomará demasiado tiempo ajustar el modelo.
sklearn
'sLogisticRegression
y resuelve un problema de 4000 características, 20,000 filas en aproximadamente un minuto en mi computadora portátil.Respuestas:
No es apropiado hacer un análisis de características y luego introducir características sobrevivientes en un método que no comprende cuánta tortura de datos se realizó anteriormente. Es mejor usar un método que pueda manejar todas las características potenciales (p. Ej., Red elástica). Las sugerencias de otros sobre el uso de la reducción de datos también son ideas excelentes.
fuente
Un primer enfoque es usar PCA para reducir la dimensionalidad del conjunto de datos. Intente retener ~ 97% de la varianza total, esto puede ayudar bastante.
Otra opción es usar algo como el descenso de gradiente estocástico, este puede ser un algoritmo mucho más rápido y capaz de caber en la memoria de R.
EDITAR: Un problema con R es que solo puede usar su RAM, por lo que si solo tiene 8 GB de memoria, eso es lo que está limitado. Me he encontrado con muchos problemas con esto y desde entonces he pasado a usar scikit-learn de python, que parece manejar mucho mejor los conjuntos de datos más grandes.
Puede encontrar un gráfico muy agradable que da una idea de los lugares para comenzar en función del tamaño del conjunto de datos aquí: http://3.bp.blogspot.com/-dofu6J0sZ8o/UrctKb69QdI/AAAAAAAADfg/79ewPecn5XU/s1600/scikit-learn-flow -chart.jpg
fuente
Como ya mencionó @Frank Harrell, usar una red elástica o LASSO para realizar una regresión penalizada con las 5000 características ( p ) sería un buen comienzo para la selección de características (no se pueden eliminar 3500 variables simplemente porque no son "estadísticamente significativas" con el variable dependiente de interés). Cualquiera de estos métodos se pueden realizar utilizando el paquete de R,
glmnet
.Para tener en cuenta las relaciones compartidas entre las posibles variables predictoras de interés ( p = 5000), recomendaría ejecutar un bosque aleatorio utilizando el
randomForest
paquete y / o el aumento de gradiente utilizando elgbm
paquete para evaluar la importancia relativa de las posibles variables predictoras. en lo que respecta al resultado binario. Con esta información, estará mucho más preparado para construir un modelo de regresión logística más parsimonioso.fuente
Supongo que no está limitado a R, ya que este es un problema de big data que probablemente no debería ser. Puede probar MLlib , que es la biblioteca de aprendizaje automático escalable de Apache Spark.
Apache Spark , a su vez, es un motor rápido y general para el procesamiento de datos a gran escala en memoria. Estos operan en un marco Hadoop que permite el procesamiento distribuido de grandes conjuntos de datos en grupos de computadoras utilizando modelos de programación simples. Está diseñado para escalar desde servidores individuales a miles de máquinas, cada una de las cuales ofrece computación y almacenamiento local.
Tenga en cuenta que 'miles de máquinas' es opcional (!), También puede configurarlo en su escritorio local de trabajo / hogar.
Volviendo a MLlib, viene con los siguientes algoritmos listos para usar:
Si trabaja regularmente con Big Data, es posible que deba adoptar una solución Hadoop.
fuente
Puedes probar Vowpal Wabbit: Vowpal Wabbit . Funciona bien con conjuntos de datos muy grandes y una gran cantidad de características.
según el sitio web:
fuente