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 :
- Los nombres de las características fueron codificados artificialmente para ocultar su significado
- El conjunto de "entrenamiento" se limitó artificialmente para tener menos filas que columnas específicamente, de modo que la selección de características, la robustez y la técnica de regularización serían indispensables para el éxito.
- El llamado conjunto de "prueba" tiene una distribución marcadamente diferente que el conjunto de entrenamiento y los dos claramente no son muestras aleatorias de la misma població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.