J'espère que le titre est explicite. Dans Kaggle, la plupart des gagnants utilisent l’empilement avec parfois des centaines de modèles de base pour réduire au minimum quelques points de pourcentage de MSE, de précision ... En général, selon votre expérience, l’importance de la modélisation sophistiquée telle que l’empilement par rapport à la simple collecte de plus de données et de fonctionnalités pour les données?
56
Réponses:
En guise de fond, je fais des séries de prévisions magasin SKU pour les ventes au détail depuis 12 ans maintenant. Des dizaines de milliers de séries chronologiques dans des centaines ou des milliers de magasins. J'aime dire que nous utilisons le Big Data depuis avant que le terme ne devienne populaire.×
J'ai toujours trouvé que le plus important était de comprendre vos données . Si vous ne comprenez pas les principaux moteurs tels que Pâques ou les promotions, vous êtes condamné. Cela revient souvent assez souvent à comprendre le métier spécifique pour poser les bonnes questions et dire des inconnus connus à partir d'inconnus inconnus .
Une fois que vous avez compris vos données, vous devez travailler pour obtenir des données propres . J'ai supervisé un grand nombre de juniors et de stagiaires, et la seule chose qu'ils n'avaient jamais vue dans tous leurs cours de statistiques et de science des données, c'était la quantité de merde que peuvent contenir ces données. Ensuite, vous devez soit retourner à la source et essayer de la faire produire de bonnes données, soit essayer de la nettoyer, ou même simplement jeter des données. Changer un système en cours d'exécution pour produire de meilleures données peut être étonnamment difficile.
Une fois que vous avez compris vos données et que vous avez en réalité des données relativement propres, vous pouvez commencer à les manipuler. Malheureusement, à ce stade, je me suis souvent retrouvé à court de temps et de ressources.
Personnellement, je suis un grand partisan de la combinaison de modèles ("empilage"), du moins dans un sens abstrait , moins dans celui de l'ingénierie des fonctions sophistiquées, qui passe souvent au- dessus de la hiérarchie - et même si votre modèle plus sophistiqué fonctionne légèrement mieux en moyenne, on constate souvent que les très mauvaises prédictions s’aggravent avec un modèle plus complexe. C'est un dealbreaker dans mon secteur d'activité. Une seule très mauvaise prévision peut assez complètement détruire la confiance dans l'ensemble du système, donc la robustesse est extrêmement élevée dans ma liste de priorités. Votre kilométrage peut varier.
Dans mon expérience, oui, la combinaison de modèles peut améliorer la précision. Cependant, les deux premières étapes sont très rentables: comprendre vos données et les nettoyer (ou obtenir des données propres en premier lieu).
la source
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 :
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.
la source
D'après mon expérience, plus de données et plus de fonctionnalités sont plus importantes que les modèles les plus fantaisistes, les plus empilés et les plus optimisés.
Regardez les concours de publicité en ligne qui ont eu lieu. Les modèles gagnants étaient si complexes qu'ils ont nécessité toute une semaine de formation (sur un très petit jeu de données, par rapport au standard de l'industrie). De plus, la prédiction dans un modèle empilé est plus longue que dans un modèle linéaire simple. Sur le même sujet, rappelez-vous que Netflix n’a jamais utilisé son algorithme 1M $ en raison de coûts d’ingénierie .
Je dirais que les compétitions en ligne sur la science des données sont un bon moyen pour une entreprise de savoir "quelle est la plus grande précision (ou toute métrique de performance) pouvant être obtenue" en utilisant les données qu’elles collectent (à un moment donné). Notez qu’il s’agit d’un problème difficile à résoudre! Toutefois, dans l’industrie, les connaissances sur le terrain, le matériel et les contraintes commerciales découragent généralement l’utilisation de la «modélisation sophistiquée».
la source
L'empilement augmente considérablement la complexité et réduit les possibilités d'interprétation. Les gains sont généralement relativement faibles pour le justifier. Ainsi, bien que l’ensemblage soit probablement largement utilisé (par exemple, XGBoost), je pense que l’empilement est relativement rare dans l’industrie.
la source
D'après mon expérience, collecter de bonnes données et fonctionnalités est beaucoup plus important.
Les clients avec lesquels nous avons travaillé ont généralement beaucoup de données, et pas toutes dans un format facile à exporter ou à utiliser. Le premier lot de données n’est généralement pas très utile; Il est de notre devoir de travailler avec le client pour déterminer les données dont nous aurions besoin pour rendre le modèle plus utile. C'est un processus très itératif.
Il y a beaucoup d'expérimentation en cours et nous avons besoin de modèles qui sont:
Le point 3) est particulièrement important, car les modèles faciles à interpréter sont plus faciles à communiquer au client et il est plus facile à détecter si nous avons commis une erreur.
la source
Voici quelque chose qui ne vient pas beaucoup sur Kaggle: le
le risque plus vous ferez face pendant toute la durée de ce modèle. Le temps est généralement soit figé dans les compétitions Kaggle, soit il existe une courte fenêtre temporelle dans laquelle les valeurs des ensembles de tests entrent en jeu. Dans l'industrie, ce modèle peut durer des années. Et tout ce qu’il faudrait peut-être, c’est qu’une variable disparaisse pour que votre modèle entier aille au diable, même si elle a été construite parfaitement. Je comprends que personne ne veuille assister à un concours où les concurrents comparent soigneusement la complexité du modèle au risque, mais si vous travaillez dans un emploi, votre entreprise et votre qualité de vie en souffriront si quelque chose ne va pas avec le modèle dont vous êtes responsable. Même les personnes extrêmement intelligentes ne sont pas à l'abri. Prenez, par exemple, l' échec de la prévision de Google Flu Trends . Le monde a changé et ils ne l'ont pas vu venir.
A la question d'OP, " En général, selon votre expérience, quelle est l'importance d'une modélisation sophistiquée telle que l'empilement par rapport à la simple collecte de plus de données et de fonctionnalités pour les données? " Eh bien, je suis officiellement vieux, mais ma réponse est que si vous n'avez pas Pour une infrastructure de modélisation vraiment robuste, il est préférable d’avoir des modèles simples, avec un ensemble minimal de variables, dans lesquels la relation entrée-sortie est relativement simple. Si une variable améliore à peine votre métrique de perte, laissez-la de côté. Rappelez-vous que c'est un travail. En dehors du travail, commencez à vous rendre aux concours Kaggle, où il y a l'incitatif «Allez-y ou rentrez chez vous».
Une exception serait si la situation commerciale exigeait un certain niveau de performances de modèle, par exemple si votre société devait égaler ou surpasser les performances d'un concurrent pour obtenir un avantage (probablement en marketing). Mais lorsqu'il existe une relation linéaire entre la performance du modèle et le gain commercial, l'augmentation de la complexité ne justifie généralement pas le gain financier (voir " Netflix n'a jamais utilisé son algorithme d'un million de dollars en raison des coûts d'ingénierie " - excuses à @ RUser4512 pour avoir invoqué le même principe. article). Dans une compétition Kaggle, ce gain supplémentaire peut vous faire changer de rang au fur et à mesure que vous passez devant les solutions proches.
la source
Une réponse courte qui est une citation du livre Deep Thinking de Gary Kasparov qui me plait.
Je travaille principalement avec des données financières de séries chronologiques, et le processus de collecte, de nettoyage, de traitement des données, puis de travail avec les propriétaires du problème, afin de déterminer ce qu’ils souhaitent réellement faire, puis de créer des fonctionnalités et des modèles pour les résoudre. le problème et enfin d’examiner rétrospectivement le processus à améliorer pour la prochaine fois.
Tout ce processus est supérieur à la somme de ses parties. J'ai tendance à obtenir des performances de généralisation «acceptables» avec une régression linéaire / logistique et à parler avec des experts du domaine pour générer des fonctionnalités, temps bien plus avantageux que de passer du temps à adapter mon modèle aux données dont je dispose.
la source