Tengo un gran problema de datos con un gran conjunto de datos (por ejemplo, 50 millones de filas y 200 columnas). El conjunto de datos consta de aproximadamente 100 columnas numéricas y 100 columnas categóricas y una columna de respuesta que representa un problema de clase binaria. La cardinalidad de cada una de las columnas categóricas es inferior a 50.
Quiero saber a priori si debo optar por métodos de aprendizaje profundo o métodos basados en árboles de conjunto (por ejemplo, aumento de gradiente, adaboost o bosques aleatorios). ¿Existe algún análisis exploratorio de datos o alguna otra técnica que pueda ayudarme a decidir un método sobre el otro?
Respuestas:
¿Por qué restringirse a esos dos enfoques? ¿Porque son geniales? Siempre comenzaría con un simple clasificador / regresor lineal. Entonces, en este caso, un SVM lineal o una regresión logística, preferiblemente con una implementación de algoritmo que puede aprovechar la escasez debido al tamaño de los datos. Me llevará mucho tiempo ejecutar un algoritmo DL en ese conjunto de datos, y normalmente solo trataría de aprender en profundidad sobre problemas de especialistas donde haya cierta estructura jerárquica en los datos, como imágenes o texto. Es excesivo para muchos problemas de aprendizaje más simples, y requiere mucho tiempo y experiencia para aprender, y también los algoritmos DL son muy lentos para entrenar. Además, el hecho de que tenga 50 millones de filas no significa que necesite usar todo el conjunto de datos para obtener buenos resultados. Dependiendo de los datos, Puede obtener buenos resultados con una muestra de unas pocas 100.000 filas o unos pocos millones. Comenzaría de manera simple, con una pequeña muestra y un clasificador lineal, y me volvería más complicado si los resultados no son satisfactorios. Al menos así obtendrás una línea de base. A menudo hemos encontrado modelos lineales simples para realizar modelos más sofisticados en la mayoría de las tareas, por lo que siempre debe comenzar allí.
fuente
Además de otras respuestas (y hay un buen enlace en los comentarios), depende de cuál sea el problema o qué tipo de preguntas desea responder. Como solo puedo sugerir en base a mi propia experiencia, en el caso de una tarea de clasificación, los métodos posibles pueden verse severamente limitados en función del equilibrio de la clase en el conjunto de datos.
Una vez que va a un desequilibrio de clase mayor que alrededor de 1:10, la mayoría de los métodos de clasificación simplemente dejan de funcionar. Te quedarán métodos basados en bosque aleatorio y quizás redes neuronales (no lo he probado aún). Trabajo con el saldo de clase en el rango de 1: 500 a 1: 1000 y he descubierto que ni el muestreo descendente ni el superior. Afortunadamente, mi conjunto de datos es "solo" 6 millones de observaciones por 200 variables y puedo ejecutar árboles potenciados en todo el conjunto en un tiempo razonable.
Entonces, para responder directamente a su pregunta:
debe formular un montón de preguntas que desee responder y, en caso de clasificación, verifique los saldos de clase de las variables objetivo.
debe verificar la distribución (no en sentido matemático) de los valores faltantes en todos sus datos y documentar lo que encuentre. Algunos métodos de ML están bien con valores perdidos, mientras que otros no lo están y debe examinar la imputación de datos (que tiene su propio conjunto de reglas, pautas y problemas).
fuente
Desde mi perspectiva, para 5 millones de instancias necesita muchos árboles para obtener una buena generalización (un buen modelo en el término laico). Si esto no es un problema, entonces hágalo, incluso la respuesta exacta depende de la naturaleza de su problema. GBT es un buen método, especialmente si tiene tipos de características mixtas como categórica, numérica y similares. Además, en comparación con las redes neuronales, tiene una menor cantidad de hiperparámetros para sintonizar. Por lo tanto, es más rápido tener un mejor modelo de configuración. Una cosa más es la alternativa del entrenamiento paralelo. Puedes entrenar varios árboles al mismo tiempo con una buena CPU. Si no está satisfecho con los resultados, busque Redes neuronales, ya que eso significa que su modelo debería ser más extenso y debería obtener información de orden superior a través de sus datos. Eso se debe a las NN en comparación con otros algoritmos de aprendizaje.
fuente
En las líneas de lo que @Simon ya ha dicho:
Para su problema, el esfuerzo vs beneficio no parece favorecer el aprendizaje profundo. DL sería una exageración
fuente
Cuando tiene un conjunto de datos tan grande, puede jugar con cualquiera de las técnicas de modelado estadístico y de aprendizaje automático y eso es muy recomendable. Como otros han sugerido, también recomendaría tomar algunos millones de muestras aleatorias de datos y jugar con eso. Como se trata de un problema de clasificación, primero seguiría las técnicas de clasificación simples y luego seguiría con las más complejas. La regresión logística es excelente para comenzar.
Quería agregar que los modelos generativos también deben probarse. El clasificador Naive Bayes es uno de los clasificadores probabilísticos más simples y supera a muchos métodos complejos como máquinas de vectores de soporte en muchas tareas. Puede ver esta implementación simple de NB y este enlace para comparar NB con regresión logística.
Uno puede construir un clasificador Naive bayes (NB) como modelo de referencia y luego optar por cualquier técnica de aprendizaje automático como máquinas de vectores de soporte (SVM) o perceptrones multicapa (MLP). Una compensación aquí es que NB es computacionalmente menos costoso que MLP, por lo que se desea un mejor rendimiento de MLP.
Llegando a su consulta exacta: el aprendizaje profundo y el impulso del árbol de gradientes son técnicas muy poderosas que pueden modelar cualquier tipo de relación en los datos. Pero, ¿qué pasa si en su caso una simple regresión logística o NB está dando la precisión deseada? Por lo tanto, siempre es mejor probar primero las técnicas simples y tener un rendimiento básico. Entonces uno puede ir a los modelos complejos y comparar con la línea de base.
fuente