Je fais mes devoirs sur les arbres de décision, et l'une des questions auxquelles je dois répondre est "Pourquoi les estimateurs sont-ils construits à partir d'arbres biaisés, et comment l'ensachage aide-t-il à réduire leur variance?".
Maintenant, je sais que les modèles surajustés ont tendance à avoir un biais vraiment faible, car ils essaient de s'adapter à tous les points de données. Et, j'avais un script en Python qui adaptait un arbre à un ensemble de données (avec une seule fonctionnalité. C'était juste une sinusoïde, avec quelques points d'arrêt, image ci-dessous). Alors, je me suis demandé "eh bien, si je sur-ajuste vraiment les données, puis-je ramener le biais à zéro?". Et, il s'est avéré que, même avec une profondeur de 10000, il y a encore des points par lesquels la courbe ne passe pas.
J'ai essayé de chercher pourquoi, mais je n'ai pas vraiment pu trouver d'explication. Je suppose qu'il peut y avoir des arbres qui traverseraient parfaitement tous les points, et que ceux que j'ai obtenus n'étaient que de la «malchance». Ou que peut-être un ensemble de données différent aurait pu me donner un résultat non biaisé (peut-être une sinusoïde parfaite?). Ou même cela, peut-être que les coupes faites au début ont empêché de nouvelles coupes de séparer complètement tous les points.
Donc, en tenant compte de cet ensemble de données (car il pourrait être différent pour d'autres), ma question est: est-il possible d'ajuster un arbre au point où le biais va à zéro, ou y aura-t-il toujours un biais, même si vraiment petit? Et s'il y a toujours au moins un certain biais, pourquoi cela se produit-il?
PS Je ne sais pas si cela pourrait être utile, mais je le DecisionTreeRegressor
de sklearn
pour adapter le modèle aux données.
Réponses:
Un modèle d'arbre de décision n'est pas toujours plus biaisé que tout autre modèle d'apprentissage.
Pour illustrer, regardons deux exemples. Soit une variable uniforme aléatoire sur . Voici les processus statistiques possiblesX [ 0 , 1 ]
Vérité 1: étant donné est une fonction indicatrice de X, plus le bruit:Oui X
Vérité 2: étant donné est une fonction linéaire de , plus le bruit:Oui X X
Si nous ajustons un arbre de décision dans les deux situations, le modèle est non biaisé dans la première situation, mais est biaisé dans la seconde. En effet, un arbre binaire divisé en deux peut récupérer le véritable modèle de données sous-jacent dans la première situation. Dans le second, le mieux qu'un arbre puisse faire est d'approximer la fonction linéaire en agitant le pas à des intervalles de plus en plus fins - un arbre de profondeur finie ne peut être aussi proche.
Si nous ajustons une régression linéaire dans les deux situations, le modèle est biaisé dans la première situation, mais n'est pas biaisé dans la seconde.
Donc, pour savoir si un modèle est biaisé, vous devez savoir quel est le véritable mécanisme de données sous-jacent. Dans des situations réelles, vous ne le savez jamais, vous ne pouvez donc jamais vraiment dire si un modèle dans la vie réelle est biaisé ou non. Parfois, nous pensons que nous avons tout à fait raison pendant longtemps, mais ensuite le biais émerge avec une compréhension plus profonde (la gravité newtonienne à la gravité Einstein est au moins un exemple apocryphe).
Dans un certain sens, nous nous attendons à ce que la plupart des processus du monde réel (à quelques exceptions près) soient si inconnaissables, qu'une approximation suffisamment raisonnable de la vérité est que tous nos modèles sont biaisés. Je doute que la question demande une discussion philosophique approfondie sur la futilité essentielle de la modélisation d'un processus statistique complexe, mais il est amusant d'y penser.
la source
Le fait que certains points de vos données ne soient toujours pas prédits pourrait être dû à ce que l'on appelle une erreur irréductible. La théorie est que dans l'apprentissage automatique, il y a une erreur réductible et irréductible. L'idée d'erreur irréductible est que peu importe la qualité de votre modèle, il ne sera jamais parfait. Cela est dû à plusieurs raisons. Premièrement, quelle que soit la robustesse de vos fonctions d'entraînement, il y aura toujours une fonction cachée affectant la sortie que vos données d'entraînement n'incluent pas. Une autre raison est que dans presque toutes les données, il y a forcément des valeurs aberrantes. Vous pouvez toujours essayer de rendre vos modèles aussi robustes que possible aux valeurs aberrantes, mais peu importe vos efforts, les valeurs aberrantes existeront toujours. (Cela ne signifie pas que vous ne devriez pas penser aux valeurs aberrantes lors de la création de vos modèles). Et un dernier détail est que vous ne le faites pas
la source