Aprendizaje profundo vs aumento de gradiente: ¿cuándo usar qué?


30

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?


2
Creo que, a menos que tenga una buena intuición sobre las propiedades de los datos, terminará explorando ambas opciones (quizás en solo 500,000 filas) y validará de forma cruzada. Pero tal vez hay visualizaciones u otros análisis que pueden ayudarlo a obtener esa intuición.
Neil Slater

1
De hecho, he planeado hacer una gran comparación de modelos para mi propia investigación sobre datos reales esta semana. Limpiaré un poco los resultados y los publicaré aquí. También al menos un estudiante de CS ha estudiado la pregunta: academia.edu/3526056/…
shadowtalker

1
@NeilSlater Me gustaría ver una respuesta que aborde lo que esa intuición podría / podría / debería ser
shadowtalker

1
Todavía no tengo suficiente reputación para hacer un breve comentario sobre su pregunta original y esta no es realmente una respuesta. En cualquier caso, quería decir que creo que este artículo es bastante relevante para este tema: Fernández-Delgado, M., Cernadas, E., Barro, S. y Amorim, D. (2014). ¿Necesitamos cientos de clasificadores para resolver problemas de clasificación del mundo real? The Journal of Machine Learning Research, 15, 3133–3181. Recuperado de dl.acm.org/citation.cfm?id=2697065
José María Mateos

¿Existe algún análisis exploratorio de datos o alguna otra técnica que pueda ayudarme a decidir un método sobre el otro? En el caso general no, el "teorema de no almuerzo gratis" lo demuestra. Pero hay heurísticas que pueden guiarlo en la dirección correcta, por ejemplo, scikit-learn.org/stable/tutorial/machine_learning_map/…
Simon

Respuestas:


32

¿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í.


44
+1 para comenzar con un modelo simple y submuestreo
Matt

Estoy de acuerdo con el uso de svm para datos escasos, pero ¿no crees que svm tomará mucho tiempo entrenar un conjunto de datos dimensional tan grande?
blitu12345

No, especialmente no si es escaso y usa un núcleo lineal. Pero pueden tener problemas con un gran número de filas. De cualquier manera, será mucho más rápido que un modelo DL. Pero tenga en cuenta que también recomendé la regresión logística.
Simon

Mi punto principal es comenzar con un modelo lineal simple, y ni siquiera usar el conjunto de datos completo, ya que es poco probable que necesite todo el conjunto de datos para obtener un buen rendimiento. Dudo que haya mucha diferencia en la precisión entre usar digamos 100k filas y unos pocos millones.
Simon

+1 para probar el aprendizaje profundo en problemas de especialistas donde existe una estructura jerárquica en los datos
eric2323223

4

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).


1
Pruebe el clasificador SGD de sklearn con class_weight = "balanceado"
Diego

4

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.


4

En las líneas de lo que @Simon ya ha dicho:

  1. Los enfoques de aprendizaje profundo han sido particularmente útiles para resolver problemas en la visión, el habla y el modelado del lenguaje, donde la ingeniería de características es complicada y requiere mucho esfuerzo.
  2. Para su aplicación, ese no parece ser el caso, ya que tiene características bien definidas y solo se requieren interacciones de características, etc.
  3. Dado que los modelos de aprendizaje profundo actualmente necesitan muchos recursos informáticos y tiempo científico para codificar, sugeriría optar por un enfoque de aprendizaje no profundo.

Para su problema, el esfuerzo vs beneficio no parece favorecer el aprendizaje profundo. DL sería una exageración


1

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.

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.