Sur-ajustement: pas de solution miracle?

21

Ma compréhension est que même en suivant les procédures appropriées de validation croisée et de sélection de modèle, un sur-ajustement se produira si l'on recherche un modèle assez dur , à moins d'imposer des restrictions sur la complexité du modèle, point final. De plus, il arrive souvent que les gens essaient de tirer des pénalités de la complexité du modèle à partir des données, ce qui compromet la protection qu'ils peuvent fournir.

Ma question est la suivante: quelle est la vérité de la déclaration ci-dessus?

J'entends souvent des praticiens du ML dire: " Dans mon entreprise / laboratoire, nous essayons toujours tous les modèles disponibles (par exemple dans des bibliothèques comme caret ou scikit-learn ) pour voir lequel fonctionne le mieux ". Je soutiens souvent que cette approche peut facilement s'adapter, même s'ils sont sérieux au sujet de la validation croisée et conserver les ensembles d'exclusion comme ils le souhaitent. De plus, plus ils recherchent, plus ils sont susceptibles de s'habiller. En d'autres termes, la sur-optimisation est un vrai problème et aucune heuristique ne peut vous aider à lutter systématiquement contre elle. Ai-je tort de penser de cette façon?

Amelio Vazquez-Reina
la source
Vous posez des questions sur le ML en particulier ou sur les modèles multivariés en général?
rumtscho
@rumtscho tout en ML.
Amelio Vazquez-Reina
1
Merci @CagdasOzgenc: "plus l'espace de recherche (les modèles considérés) est grand, plus le résultat est mauvais " . Je ne sais pas à quel niveau d'abstraction "l'espace de recherche" vous faites référence ici, mais en "essayant assez fort", je veux bien sûr dire rechercher à travers de plus en plus de modèles, et ainsi augmenter la complexité / l'espace de recherche du "méta-modèle" (si vous le souhaitez) que nous essayons d'adapter.
Amelio Vazquez-Reina

Réponses:

8

Pas une réponse complète, mais une chose que les gens oublient dans cette discussion est ce que signifie la validation croisée (par exemple), pourquoi l'utilisez-vous et que couvre-t-elle?

Le problème que je vois avec la recherche trop difficile est que le CV que les gens font est souvent dans un seul modèle. Facile à faire en définissant un folds=argument de la procédure d'ajustement du modèle. Mais lorsque vous accédez à plusieurs modèles, et même à plusieurs procédures pour créer plusieurs modèles, vous ajoutez une ou deux couches supplémentaires que vous n'avez pas encapsulées dans CV.

Ils devraient donc utiliser un CV imbriqué. Et ils devraient également utiliser le "Target Shuffling" (rééchantillonnage / test de permutation) enroulé autour de tout leur processus pour voir à quel point leur procédure fonctionnerait si vous rompez la relation entre les variables dépendantes et indépendantes - c'est-à-dire que vous faites mieux que le hasard considérant l'ensemble de votre processus?

Wayne
la source
1
+1. Faire une sélection de modèle avec des couches de CV uniques (ou trop peu) qui exécutent une recherche dans la grille (sélection de modèle) peut certainement conduire à un surajustement (pour toute personne intéressée, je recommande par exemple cela et les sources qui y sont). J'avais lu sur "Target Shuffling" (pour d'autres lecteurs, je recommande cette exposition ), mais je ne l'ai jamais utilisé moi-même; Je me demande si cela peut également être abusé (par exemple, faire plusieurs tests conduisant finalement à des faux positifs, et donc à nouveau chercher "assez fort" (?)).
Amelio Vazquez-Reina
7

Au cours de mes 4 années d'expérience, j'ai découvert qu'essayer tous les modèles disponibles dans Caret (ou Scikit-Learn) ne conduit pas nécessairement à un sur-ajustement. J'ai trouvé que si vous avez un ensemble de données suffisamment grand (10 000+ lignes) et un équilibre plus ou moins égal des classes (c'est-à-dire, aucun déséquilibre de classe comme dans le risque de crédit ou les problèmes de marketing), le sur-ajustement a tendance à être minime. Il convient de noter que ma recherche de grille sur les paramètres de réglage n'a généralement pas plus de 30 permutations par modèle. À l'extrême, si vous utilisiez 100 ou 1 000 permutations par modèle, vous seriez probablement trop équipé.

La façon dont vous avez formulé votre question rend la réponse assez facile: à l'extrême, oui, le sur-ajustement est probable, sinon certain. Il n'y a pas de solution miracle, et je doute que quiconque suggère le contraire. Cependant, il existe encore un spectre raisonnablement large où le degré de sur-ajustement est suffisamment minime pour être acceptable. Avoir une quantité saine de données invisibles dans votre ensemble d'exclusion de validation aide certainement. Avoir plusieurs ensembles d'exclusion de validation invisibles est encore mieux. J'ai la chance de travailler dans un domaine où je reçois quotidiennement de grandes quantités de nouvelles données.

Si je suis dans une position où je suis coincé avec un ensemble de données statiques de moins de 2 000 à 3 000 observations (par exemple, des données médicales difficiles à obtenir), j'utilise généralement des modèles linéaires uniquement parce que j'ai souvent vu un sur-ajustement avec gradient booster et supporter les machines vectorielles sur des ensembles de données suffisamment petits. D'un autre côté, j'ai parlé à un top Kaggler (top 5%) qui a dit qu'il construisait des dizaines de milliers de modèles pour chaque compétition puis les assemblait, en utilisant plusieurs milliers de modèles dans son ensemble final. Il a dit que c'était la principale raison de son succès dans les classements finaux.

Ryan Zotti
la source
1
Oui. J'ai travaillé avec des données qui avaient des observations par millions. Peu importe la validation que j'ai essayée (kfold, bootstrapping et même simple holdout), il y avait peu de variation dans les modèles. Au fur et à mesure que vos données augmentent, moins vous devez prêter attention à la façon dont vous validez.
Ricardo Cruz
En d'autres termes, aucun modèle n'a suffisamment de degrés de liberté pour «mémoriser» des millions d'observations.
Ricardo Cruz
5

Tout dépend de l'échelle. J'aimerais pouvoir compter sur plus de 2 000 à 3 000 cas comme @RyanZotti en a généralement; J'en ai rarement 1 / 10ème autant. C'est une grande différence de perspective entre les gens du machine learning "big data" et ceux qui travaillent dans des domaines comme la biomédecine, ce qui pourrait expliquer certaines des différentes perspectives que vous trouverez sur ce site.

Je vais présenter une explication heuristique de mon point de vue sur ce problème. Le problème fondamental du sur-ajustement, tel que décrit sur la page Wikipédia , est la relation entre le nombre de cas et le nombre de paramètres que vous évaluez. Commencez donc avec l'idée approximative que si vous avez M modèles parmi lesquels vous choisissez et p paramètres par modèle, vous évaluez quelque chose dans l'ordre des paramètres Mp au total.

S'il existe un danger de sur-ajustement, il existe deux façons générales de revenir à un modèle plus généralisable: réduire le nombre de paramètres ou les pénaliser d'une manière ou d'une autre.

Avec des ensembles de données suffisamment volumineux, vous pourriez ne jamais vous approcher du sur-ajustement. Si vous avez 20 000 cas et 20 modèles différents avec 100 paramètres par modèle, alors vous pourriez ne pas être en difficulté même sans pénalisation car vous avez toujours 10 cas par paramètre effectif. N'essayez pas cette stratégie de modélisation avec seulement 200 cas.

La moyenne des modèles peut être considérée comme une forme de pénalisation. Dans l'exemple du Kaggler cité par @RyanZotti, le nombre de cas est vraisemblablement énorme et chacun des "plusieurs milliers" de modèles de l'ensemble final ne contribue individuellement qu'à une petite fraction du modèle final. Tout sur-ajustement spécifique à un modèle de contribution particulier n'aura pas une grande influence sur le résultat final, et le nombre extrêmement élevé de cas dans une compétition Kaggler réduit encore le risque de sur-ajustement.

Ainsi, comme pour tant de problèmes ici, la seule réponse raisonnable est: "Cela dépend." Dans ce cas, cela dépend de la relation entre le nombre de cas et le nombre effectif de paramètres examinés, ainsi que du degré de pénalisation appliqué.

EdM
la source
2

Je pense que c'est une très bonne question. Je veux toujours observer la courbe en "U" dans les expériences de validation croisée avec des données réelles. Cependant, mon expérience avec les données du monde réel (~ 5 ans dans les transactions par carte de crédit et les données sur l'éducation) ne me dit pas qu'un ajustement excessif peut facilement se produire en quantité énorme (milliards de lignes) de données du monde réel .

J'observe souvent que vous pouvez mieux vous adapter à l'ensemble d'entraînement, mais vous ne pouvez pas en faire trop (par exemple, réduire la perte à 0), car l'ensemble d'entraînement est vraiment grand et contient beaucoup d'informations et de bruit.

Dans le même temps, vous pouvez essayer le modèle le plus compliqué (sans aucune régularisation) sur les données de test, et il semble bien et encore mieux que certains avec régularisation.

Enfin, je pense que mes déclarations pourraient être vraies seulement à condition que vous ayez des milliards de points de données en formation. Intuitivement, les données sont beaucoup plus complexes que celles que vous modélisez, vous ne serez donc pas trop ajusté. Pour des milliards de lignes de données, même si vous utilisez un modèle avec des milliers de paramètres, c'est très bien. En même temps, vous ne pouvez pas vous permettre le calcul pour construire un modèle avec des millions de paramètres gratuits.

À mon avis, c'est aussi pourquoi le réseau de neurones et le deep learning sont devenus populaires ces jours-ci. Comparé à des milliards d'images sur Internet, n'importe quel modèle que vous pouvez vous permettre de former ne suffit pas à s'adapter.

Haitao Du
la source
1

Je suis d'accord avec @ ryan-zotti qu'une recherche assez difficile ne conduit pas nécessairement à un sur-ajustement - ou du moins pas à un montant tel que nous l'appellerions un sur-ajustement. Permettez-moi d'essayer d'exprimer mon point de vue à ce sujet:

Box a dit une fois:

N'oubliez pas que tous les modèles sont faux; la question pratique est de savoir à quel point elles doivent être erronées pour ne pas être utiles.

(Être parfait nécessiterait toutes les données, ce qui éliminerait à son tour le besoin d'un modèle).

1

Parce que: en fin de compte, nous aurons toujours une erreur de modèle / sur- / sous-ajustement - c'est la capacité de détecter / mesurer cette erreur dans notre centre d'intérêt pour faire des choix raisonnables qui compte.


1

geekoverdose
la source