Je ne peux évidemment pas parler au nom de l'ensemble du secteur, mais comme je travaille dans l'industrie et que j'ai concouru pour Kaggle, je vais donc partager mon point de vue.
Tout d'abord, vous avez raison de penser que Kaggle ne correspond pas exactement à ce que les gens font dans l'industrie. C'est un jeu, soumis à la malédiction, avec beaucoup de restrictions folles. Par exemple, dans la compétition actuelle de Santander :
- Les noms des fonctionnalités ont été hachés artificiellement pour masquer leur signification
- L'ensemble de "formation" a été artificiellement limité pour comporter moins de lignes que de colonnes, de sorte que la sélection des fonctionnalités, la robustesse et la technique de régularisation seraient indispensables au succès.
- La série dite de "test" a une distribution très différente de celle de la formation et les deux ne sont clairement pas des échantillons aléatoires de la même population.
Si quelqu'un me donnait un tel ensemble de données au travail, je lui proposerais immédiatement de travailler avec lui sur l'ingénierie des fonctionnalités afin que nous puissions obtenir des fonctionnalités plus utiles. Je suggérerais que nous utilisions la connaissance du domaine pour décider des termes d’interaction probables, des seuils, des stratégies de codage de variables catégoriques, etc. Il serait évidemment plus productif de traiter le problème de cette manière que d’extraire de la signification à partir d’un fichier exhaustif produit par un ingénieur de base de données. formation en ML.
En outre, si vous apprenez, par exemple, qu’une colonne numérique particulière n’est pas du tout numérique, mais plutôt un code postal, vous pouvez obtenir des données provenant de sources de données tierces, telles que le recensement des États-Unis, pour compléter vos données. Ou, si vous avez une date, vous pourrez peut-être inclure le cours de clôture du S & P 500 pour cette journée. De telles stratégies d'augmentation externe nécessitent une connaissance détaillée de l'ensemble de données spécifique et une connaissance de domaine importante, mais ont généralement des avantages beaucoup plus importants que les améliorations purement algorithmiques.
Ainsi, la première grande différence entre l'industrie et Kaggle est que, dans l'industrie, les fonctionnalités (en termes de données d'entrée) sont négociables.
Une deuxième catégorie de différences est la performance. Les modèles sont souvent déployés en production de deux manières: 1) les prédictions de modèle sont pré-calculées pour chaque ligne dans une très grande table de base de données, ou 2) une application ou un site Web transmettra au modèle une seule ligne de données et besoin d'une prédiction retournée en temps réel. Les deux cas d'utilisation nécessitent de bonnes performances. Pour ces raisons, vous ne voyez pas souvent de modèles pouvant être lents à prévoir ou utilisant une quantité de mémoire énorme comme K-Nearest-Neighbours ou Extra Random Forests. En revanche, une régression logistique ou un réseau neuronal peuvent marquer un lot d'enregistrements avec quelques multiplications matricielles, et la multiplication matricielle peut être hautement optimisée avec les bonnes bibliothèques.Même si je pouvais obtenir +0,001 AUC si j'empilais un autre modèle non paramétrique, je ne le ferais pas, car le débit de prédiction et la latence chuteraient trop.
Cela comporte également une dimension de fiabilité: empiler quatre bibliothèques tierces tierces à la pointe de la technologie , telles que LightGBM , xgboost , catboost et Tensorflow (sur des GPU , bien sûr) pourrait vous faire bénéficier de cette réduction de 0,01 en MSE. remporte les compétitions Kaggle, mais il existe quatre bibliothèques différentes à installer, déployer et déboguer en cas de problème. C'est formidable de pouvoir utiliser tout ce matériel sur votre ordinateur portable, mais le faire fonctionner dans un conteneur Docker fonctionnant sur AWS est une histoire complètement différente. La plupart des entreprises ne souhaitent pas mettre en place une petite équipe de développement pour se consacrer uniquement à ce type de problèmes de déploiement.
Cela dit, empiler en soi n’est pas nécessairement une grosse affaire. En fait, empiler deux modèles différents qui fonctionnent tous aussi bien mais dont les limites de décision sont très différentes est un excellent moyen d’obtenir une petite augmentation de l’AUC et une grande augmentation de la robustesse. Il suffit de ne pas jeter autant d'éviers de cuisine dans votre ensemble hétérogène que vous commencez à avoir des problèmes de déploiement.