Espero que el título se explique por sí mismo. En Kaggle, la mayoría de los ganadores usan el apilamiento con a veces cientos de modelos base, para exprimir un porcentaje adicional de MSE, precisión ... En general, según su experiencia, cuán importante es el modelado sofisticado, como el apilamiento frente a simplemente recopilar más datos y más funciones para los datos?
56
Respuestas:
A modo de antecedentes, llevo 12 años haciendo pronósticos de series de tiempo de tienda SKU para ventas minoristas. Decenas de miles de series temporales en cientos o miles de tiendas. Me gusta decir que hemos estado haciendo Big Data desde antes de que el término se hiciera popular.×
Constantemente he descubierto que lo más importante es entender sus datos . Si no comprende los principales controladores como Semana Santa o promociones, está condenado. A menudo, esto se reduce a comprender el negocio específico lo suficientemente bien como para hacer las preguntas correctas y distinguir incógnitas conocidas de incógnitas desconocidas .
Una vez que comprenda sus datos, debe trabajar para obtener datos limpios . He supervisado a un buen número de estudiantes de tercer año y pasantes, y lo único que nunca habían experimentado en todas sus clases de estadísticas y ciencias de datos fue la cantidad de basura que puede haber en los datos que tiene. Luego, debe volver a la fuente e intentar obtener información buena, o tratar de limpiarla, o incluso simplemente descartar algunas cosas. Cambiar un sistema en ejecución para obtener mejores datos puede ser sorprendentemente difícil.
Una vez que comprenda sus datos y tenga datos realmente limpios, puede comenzar a jugar con ellos. Desafortunadamente, en este momento, a menudo me he quedado sin tiempo y recursos.
Personalmente, soy un gran admirador de la combinación de modelos ("apilamiento"), al menos en un sentido abstracto , menos de la ingeniería de características sofisticada, que a menudo cruza la línea en un territorio sobreajustado , e incluso si su modelo más elegante funciona ligeramente mejor en promedio, a menudo se encuentra que las predicciones realmente malas empeoran con un modelo más complejo. Este es un factor decisivo en mi línea de negocio. Un solo pronóstico realmente malo puede destruir completamente la confianza en todo el sistema, por lo que la solidez es extremadamente alta en mi lista de prioridades. Su experiencia puede ser diferente.
En mi experiencia, sí, la combinación de modelos puede mejorar la precisión. Sin embargo, las grandes ganancias se obtienen con los dos primeros pasos: comprender sus datos y limpiarlos (u obtener datos limpios en primer lugar).
fuente
No puedo hablar por toda la industria, obviamente, pero trabajo en la industria y he competido en Kaggle, así que compartiré mi POV.
Primero, tiene razón al sospechar que Kaggle no coincide exactamente con lo que la gente hace en la industria. Es un juego, y está sujeto a la habilidad de juego, con muchas restricciones locas. Por ejemplo, en la competencia Santander actualmente en ejecución :
Si alguien me proporcionara un conjunto de datos como este en el trabajo, inmediatamente me ofrecería trabajar con ellos en ingeniería de características para que pudiéramos obtener características que fueran más útiles. Sugeriría que usemos el conocimiento del dominio para decidir sobre términos de interacción probables, umbrales, estrategias de codificación de variables categóricas, etc. Abordar el problema de esa manera sería claramente más productivo que tratar de extraer el significado de un archivo de escape producido por un ingeniero de bases de datos sin entrenamiento en ML.
Además, si aprende, por ejemplo, que una columna numérica en particular no es numérica en absoluto, sino más bien un código postal, bueno, puede ir y obtener datos de fuentes de datos de terceros como el Censo de los EE. UU. Para aumentar sus datos. O si tiene una cita, tal vez incluirá el precio de cierre del S&P 500 para ese día. Dichas estrategias de aumento externo requieren un conocimiento detallado del conjunto de datos específico y un conocimiento significativo del dominio, pero generalmente tienen los beneficios mucho mayores que las mejoras algorítmicas puras.
Entonces, la primera gran diferencia entre la industria y Kaggle es que en la industria, las características (en el sentido de los datos de entrada) son negociables.
Una segunda clase de diferencias es el rendimiento. A menudo, los modelos se implementarán en producción de una de dos maneras: 1) las predicciones del modelo se calcularán previamente para cada fila en una tabla de base de datos muy grande, o 2) una aplicación o sitio web pasará al modelo una sola fila de datos y necesita una predicción devuelta en tiempo real. Ambos casos de uso requieren un buen rendimiento. Por estas razones, no suele ver modelos que pueden ser lentos para predecir o utilizar una gran cantidad de memoria como K-Nearest-Neighbours o Extra Random Forests. Una regresión logística o red neuronal, por el contrario, puede puntuar un lote de registros con unas pocas multiplicaciones matriciales, y la multiplicación matricial se puede optimizar con las bibliotecas correctas.Aunque podría obtener quizás +0.001 AUC si apilara otro modelo no paramétrico, no lo haría porque el rendimiento y la latencia de la predicción caerían demasiado.
También hay una dimensión de confiabilidad: apilar cuatro bibliotecas de terceros de última generación , por ejemplo , LightGBM , xgboost , catboost y Tensorflow (en GPU , por supuesto) podría obtener esa reducción de .01 en MSE que gana los concursos de Kaggle, pero hay cuatro bibliotecas diferentes para instalar, implementar y depurar si algo sale mal. Es genial si puede hacer que todo eso funcione en su computadora portátil, pero hacerlo funcionar dentro de un contenedor Docker que se ejecuta en AWS es una historia completamente diferente. La mayoría de las empresas no quieren enfrentar a un pequeño equipo de desarrolladores solo para lidiar con este tipo de problemas de implementación.
Dicho esto, apilar en sí mismo no es necesariamente un gran problema. De hecho, apilar un par de modelos diferentes que funcionan igual de bien pero tienen límites de decisión muy diferentes es una excelente manera de obtener un pequeño aumento en el AUC y un gran aumento en la robustez. Simplemente no vayas a tirar tantos fregaderos de cocina en tu conjunto heterogéneo que comiences a tener problemas de implementación.
fuente
Según mi experiencia, más datos y más funciones son más importantes que el modelo más elegante, más apilado y más afinado que se pueda encontrar.
Mira los concursos de publicidad en línea que tuvieron lugar. Los modelos ganadores fueron tan complejos que terminaron tomando toda una semana para entrenar (en un conjunto de datos muy pequeño, en comparación con el estándar de la industria). Además de eso, la predicción en un modelo apilado es más larga que en un modelo lineal simple. Sobre el mismo tema, recuerde que Netflix nunca usó su algoritmo de 1 millón de dólares debido a los costos de ingeniería .
Diría que las competencias de ciencia de datos en línea son una buena manera para que una empresa sepa "cuál es la precisión más alta (o cualquier medida de rendimiento) que se puede lograr" utilizando los datos que recopilan (en algún momento). Tenga en cuenta que este es realmente un problema difícil que se está resolviendo. Pero, en la industria, el conocimiento de campo, el hardware y las restricciones comerciales usualmente desalientan el uso de "modelos sofisticados".
fuente
El apilamiento aumenta significativamente la complejidad y reduce la capacidad de interpretación. Las ganancias suelen ser relativamente pequeñas para justificarlo. Entonces, aunque el ensamblaje es probablemente ampliamente utilizado (por ejemplo, XGBoost), creo que el apilamiento es relativamente raro en la industria.
fuente
En mi experiencia, recopilar buenos datos y características es mucho más importante.
Los clientes con los que trabajamos generalmente tienen muchos datos, y no todos en un formato que pueda exportarse fácilmente o con el que sea fácil trabajar. El primer lote de datos generalmente no es muy útil; Es nuestra tarea trabajar con el cliente para calcular qué datos necesitaríamos para que el modelo sea más útil. Este es un proceso muy iterativo.
Se está experimentando mucho y necesitamos modelos que sean:
El punto 3) es especialmente importante, porque los modelos que son fáciles de interpretar son más fáciles de comunicar al cliente y es más fácil captarlos si hemos hecho algo mal.
fuente
Aquí hay algo que no aparece mucho en Kaggle: el
el mayor riesgo que se enfrentará durante la vida útil de ese modelo. El tiempo generalmente se congela en las competiciones de Kaggle, o hay un corto período de tiempo futuro en el que entran los valores del conjunto de pruebas. En la industria, ese modelo podría funcionar durante años. Y todo lo que se necesita es que una variable se vuelva loca para que todo tu modelo se vaya al infierno, incluso si fue construido sin problemas. Lo entiendo, nadie quiere ver un concurso donde los competidores equilibran cuidadosamente la complejidad del modelo con el riesgo, pero en un trabajo, su negocio y su calidad de vida sufrirán si algo sale mal con un modelo del que está a cargo. Incluso las personas extremadamente inteligentes no son inmunes. Tomemos, por ejemplo, la falla de predicción de Google Flu Trends . El mundo cambió y no lo vieron venir.
A la pregunta de OP: " En general, según su experiencia, ¿qué tan importante es el modelado sofisticado, como apilar frente a simplemente recopilar más datos y más funciones para los datos? " Bueno, soy oficialmente viejo, pero mi respuesta es que a menos que tenga un infraestructura de modelado realmente robusta, es mejor tener modelos sencillos, con un conjunto mínimo de variables, donde la relación de entrada a salida es relativamente sencilla. Si una variable apenas mejora su métrica de pérdida, no la use. Recuerda que es un trabajo. Obtenga sus patadas fuera del trabajo en los concursos de Kaggle donde existe el incentivo de "ir a lo grande o irse a casa".
Una excepción sería si la situación comercial exigiera un cierto nivel de rendimiento del modelo, por ejemplo, si su empresa necesita igualar o superar el rendimiento de un competidor para obtener alguna ventaja (probablemente en marketing). Pero cuando hay una relación lineal entre el rendimiento del modelo y la ganancia comercial, los aumentos en la complejidad generalmente no justifican la ganancia financiera (ver " Netflix nunca usó su algoritmo de $ 1 millón debido a los costos de ingeniería " - disculpas a @ RUser4512 por citar el mismo artículo). Sin embargo, en una competencia de Kaggle, esa ganancia adicional puede moverlo cientos de rangos a medida que pasa soluciones cercanas.
fuente
Una respuesta corta que es una cita que me gusta del libro de Gary Kasparov Deep Thinking
Trabajo principalmente con datos financieros de series de tiempo, y el proceso de recopilar datos, limpiarlos, procesarlos y luego trabajar con los propietarios del problema para descubrir qué es lo que realmente quieren hacer, para luego construir características y modelos para tratar de abordar el problema y finalmente examinar retrospectivamente el proceso para mejorar la próxima vez.
Todo este proceso es mayor que la suma de sus partes. Tiendo a obtener un rendimiento de generalización 'aceptable' con una regresión lineal / logística y hablar con expertos en dominios para generar características, mucho mejor tiempo que pasar tiempo ajustando mi modelo a los datos que tengo.
fuente