Espero que el título se explique por sí mismo. En Kaggle, la mayoría de los ganadores usan apilamiento con cientos de modelos base, para exprimir un poco más de MSE, precisión ... En general, en su experiencia, qué tan importante es el modelado sofisticado como apilar vs simplemente recopilar más datos y más características para los datos?
Respuestas
¿Demasiados anuncios?A modo de introducción, he estado haciendo la previsión tienda $\times$ SKU de la serie de tiempo de ventas al por menor de 12 años. Decenas de miles de series de tiempo a través de cientos o miles de tiendas. Me gustaría decir que hemos estado haciendo Big Data desde antes de que el término se hizo popular.
He encontrado consistentemente que la única y más importante es entender mejor los datos. Si usted no entiende los principales conductores como la Pascua o promociones, usted está condenado. Bastante a menudo, esto se reduce a la comprensión de la actividad específica lo suficientemente bien como para pedir las preguntas correctas y diciendo conocidos desconocidos desconocidos desconocidos.
Una vez que usted entienda sus datos, usted necesita trabajar para conseguir limpiar los datos. He supervisado un buen número de jóvenes y estudiantes, y la única cosa que nunca había experimentado en todos sus estadísticas y datos de las clases de ciencias se cuánto pura mierda que puede haber en los datos. Entonces tienes que volver a la fuente y tratar de llegar a traer buenos datos, o intentar limpiarlo, o incluso simplemente tirar algunas cosas lejos. El cambio de un sistema en funcionamiento para producir mejor los datos pueden ser sorprendentemente difícil.
Una vez que usted entienda sus datos y en realidad tiene un poco-limpieza de datos, usted puede comenzar a juguetear con ella. Desafortunadamente, en este momento, muchas veces me he encontrado a mí mismo fuera de tiempo y recursos.
Yo personalmente soy un gran fan de modelo de combinación ("stacking"), al menos en un sentido abstracto, menos de la fantasía característica de la ingeniería, que a menudo cruza la línea de sobreajuste territorio - y, aunque su más elegante modelo se comporta ligeramente mejor, en promedio, uno a menudo encuentra que el realmente malas predicciones empeoran con modelos más complejos. Este es un dealbreaker en mi línea de negocio. Un único realmente mal pronóstico puede ser muy destruir por completo la confianza en todo el sistema, por lo que la robustez es muy alto en mi lista de prioridades. Su kilometraje puede variar.
En mi experiencia, sí, el modelo de combinación puede mejorar la precisión. Sin embargo, los realmente grandes ganancias se hacen con los dos primeros pasos: la comprensión de los datos, y la limpieza (o la obtención de datos limpia en el primer lugar).
No puedo hablar por el conjunto de la industria, obviamente, pero yo trabajo en la industria y han competido en Kaggle así que voy a compartir mi punto de VISTA.
En primer lugar, usted tiene razón para sospechar que Kaggle no coincide exactamente con lo que la gente está haciendo en la industria. Es un juego, y sujeto a la astucia, con un montón de locos restricciones. Por ejemplo, en la actualidad se ejecuta Santander competencia:
- Los nombres de función fueron artificialmente hash para ocultar su significado
- La "formación" del set, fue artificialmente limitado a tener un menor número de filas que de columnas de concreto, de modo que la selección de características, la robustez y la regularización de la técnica sería indispensable para el éxito.
- La llamada "prueba" tiene un carácter marcadamente diferentes de distribución que el conjunto de entrenamiento y los dos son claramente no muestras al azar de la misma población.
Si alguien me dio un conjunto de datos como esta en el trabajo, lo haría inmediatamente ofrecer a trabajar con ellos en función de la ingeniería por lo que podríamos llegar características que eran más útiles. Yo le sugiero que utilice el conocimiento de un dominio a decidir en los términos de interacción, los umbrales, la variable categórica estrategias de codificación, etc. Se aproxima el problema de esa manera, claro que sería más productivo que tratar de extraer el significado de un escape de archivo producido por una base de datos de ingeniero sin formación en ML.
Además, si usted aprende, dicen, que una determinada columna numérica no es numérica, sino un código POSTAL, bien, usted puede ir y obtener los datos a partir de la 3º fiesta de fuentes de datos, tales como el Censo de los estados unidos para aumentar tus datos. O si usted tiene una fecha, tal vez usted va a incluir el S&P 500 precio de cierre de ese día. Externos tales aumento de las estrategias requieren de un conocimiento detallado del conjunto de datos específico y significativo el conocimiento de un dominio, pero suelen tener mucho más grandes rentabilidades que la pura algorítmica mejoras.
Así, la primera gran diferencia entre la industria y Kaggle es que en la industria, características (en el sentido de que los datos de entrada) son negociables.
Una segunda clase de diferencias es el rendimiento. A menudo, los modelos serán desplegados para la producción en una de dos maneras: 1) las predicciones del modelo se pre-calculadas para cada fila en una base de datos muy grande de la tabla, o 2) una aplicación o sitio web pasará el modelo de una sola fila de datos y la necesidad de una predicción devuelto en tiempo real. Tanto los casos de uso que requieren un buen rendimiento. Por estas razones, no se ve a menudo modelos que pueden ser lento para predecir o el uso de una gran cantidad de memoria, como K-Nearest-los Vecinos o Extra Bosques Aleatorios. Una regresión logística o de la red neuronal, en contraste, puede marcar un lote de registros con un par de matriz de multiplicaciones, y la multiplicación de la matriz puede ser altamente optimizado, con el derecho de las bibliotecas. A pesar de que podía tener, quizás, +0.001 AUC si me apiladas una sobre otra no paramétrica del modelo, yo no porque predicción de la latencia y el rendimiento bajaría demasiado.
Hay una fiabilidad dimensión a esta como bien de apilamiento de cuatro diferentes estado-de-el-arte-de la 3º parte de las bibliotecas, decir LightGBM, xgboost, catboost, y Tensorflow ( Gpu, por supuesto) se puede obtener que .01 reducción de MSE que gana Kaggle competiciones, pero se trata de cuatro diferentes bibliotecas de instalar, implementar y depurar si algo va mal. Es genial, si usted puede conseguir todas las cosas que trabajando en su computadora portátil, pero conseguir que se ejecuta dentro de una ventana acoplable contenedor que se ejecutan en AWS es una historia completamente diferente. La mayoría de las empresas no quieren al frente de un pequeño equipo de devops solo para lidiar con estos tipos de problemas de implementación.
Dicho esto, apilado en sí mismo no es necesariamente un gran negocio. De hecho, echando un par de modelos diferentes que todos realizan igual de bien, pero tienen muy diferentes decisión de las fronteras es una gran manera de conseguir un pequeño golpe en el AUC y un gran bache en la robustez. Simplemente no van a tirar tantos fregaderos de cocina en su heterogéneo conjunto que comienza a tener problemas de implementación.
Desde mi experiencia, más datos y más características son más importantes que la más elegante, la mayoría de los apilados, más afinado, modelo uno puede venir para arriba con.
Mira la publicidad en línea en las competiciones que tuvieron lugar. Ganadora de los modelos eran tan complejos que terminó de tomar toda una semana para entrenar (sobre un pequeño conjunto de datos, en comparación con el estándar de la industria). En la parte superior de que, predicción, en un apilados modelo es más que en un simple modelo lineal. Sobre el mismo tema, recordar que Netflix nunca utilizó su 1M$ algoritmo debido a los costos de ingeniería.
Yo diría que en línea los datos de la ciencia concursos son una buena manera para que una empresa para saber "qué es la más alta precisión (o cualquier métrica de rendimiento) que se puede lograr" el uso de los datos que recogen (en algún momento). Tenga en cuenta que este es un problema difícil que es ser resuelto ! Pero, en la industria, el campo del conocimiento, de hardware y de negocios restricciones suelen desalentar el uso de la "fantasía de modelización".
El apilamiento aumenta significativamente la complejidad y reduce la interpretabilidad. Las ganancias son generalmente 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.
En mi experiencia, la recopilación de datos y características es mucho más importante.
Los clientes, hemos trabajado con general tienen una gran cantidad de datos, y no todos de la misma en el formato que puede ser fácilmente exportados o fácil trabajar con ellos. El primer lote de datos no suele ser muy útil; es nuestra tarea de trabajar con el cliente para determinar qué datos necesitamos para hacer el modelo más útil. Este es un proceso iterativo.
Hay una gran cantidad de experimentación pasando, y necesitamos modelos que son:
- Rápido para entrenar
- Rápido para predecir (También es a menudo un requisito de negocio)
- Fáciles de interpretar
El punto 3) es especialmente importante, porque los modelos que son fáciles de interpretar son más fáciles de comunicarse con el cliente y es más fácil de detectar si hemos hecho algo mal.