Quand choisir la régression linéaire ou l'arbre de décision ou la régression de forêt aléatoire? [fermé]

10

Je travaille sur un projet et j'ai du mal à décider quel algorithme choisir regression. Je veux savoir dans quelles conditions choisir un linear regressionou Decision Tree regressionou Random Forest regression? Y a-t-il des caractéristiques spécifiques des données qui pourraient décider d'aller vers un algorithme spécifique parmi l'arbre mentionné ci-dessus? Quelles sont les caractéristiques que je dois rechercher dans mon jeu de données pour prendre la décision? Et y a-t-il des raisons qui inciteraient à choisir un algorithme decision treeou random forestmême si la même exactitude peut être obtenue par linear regression?

Jason Donnald
la source
C'est trop large - commencez par une description de vos données et quelles sont vos contraintes?
Sean Owen

Réponses:

10

Permettez-moi de l'expliquer en utilisant quelques exemples pour une intuition claire:

Quand utilisez-vous la régression linéaire par rapport aux arbres de décision?

La régression linéaire est un modèle linéaire, ce qui signifie qu'il fonctionne très bien lorsque les données ont une forme linéaire. Mais, lorsque les données ont une forme non linéaire, un modèle linéaire ne peut pas capturer les entités non linéaires.

Donc, dans ce cas, vous pouvez utiliser les arbres de décision, qui capturent mieux la non-linéarité des données en divisant l'espace en sous-espaces plus petits en fonction des questions posées.

Quand utilisez-vous Random Forest vs Decision Trees?

Je suppose que la réponse de Quora ici ferait un meilleur travail que moi, en expliquant la différence entre eux et leurs applications. Permettez-moi de citer ceci pour vous:

Supposons que vous soyez très indécis, donc chaque fois que vous voulez regarder un film, vous demandez à votre amie Willow si elle pense que vous l'aimerez. Pour répondre, Willow doit d'abord déterminer quels films vous aimez, alors vous lui donnez un tas de films et lui dites si vous les aimez ou non (c.-à-d., Vous lui donnez un ensemble de formation étiqueté). Ensuite, lorsque vous lui demandez si elle pense que vous aimerez le film X ou non, elle joue à un jeu de 20 questions avec IMDB, posant des questions comme "Est-ce que X est un film romantique?", "Est-ce que Johnny Depp joue dans X?" , etc. Elle pose d'abord des questions plus informatives (c'est-à-dire qu'elle maximise le gain d'informations de chaque question) et vous donne une réponse oui / non à la fin.

Ainsi, Willow est un arbre de décision pour vos préférences de film.

Mais Willow n'est qu'humaine, donc elle ne généralise pas toujours très bien vos préférences (c'est-à-dire qu'elle en fait trop). Afin d'obtenir des recommandations plus précises, vous aimeriez demander à un groupe de vos amis et regarder le film X si la plupart d'entre eux disent qu'ils pensent que vous l'aimerez. Autrement dit, au lieu de demander uniquement à Willow, vous voulez également demander à Woody, Apple et Cartman, et ils votent pour savoir si vous aimerez un film (c'est-à-dire que vous construisez un classificateur d'ensemble, alias une forêt dans ce cas).

Maintenant, vous ne voulez pas que chacun de vos amis fasse la même chose et vous donne la même réponse, vous devez donc d'abord donner à chacun d'eux des données légèrement différentes. Après tout, vous n'êtes pas absolument sûr de vos préférences vous-même - vous avez dit à Willow que vous aimiez Titanic, mais peut-être étiez-vous simplement heureux ce jour-là parce que c'était votre anniversaire, alors peut-être que certains de vos amis ne devraient pas utiliser le fait que vous aimait Titanic pour faire ses recommandations. Ou peut-être que vous lui avez dit que vous aimiez Cendrillon, mais en fait vous vraiment vraimentJ'ai adoré, donc certains de vos amis devraient donner plus de poids à Cendrillon. Donc, au lieu de donner à vos amis les mêmes données que vous avez fournies à Willow, vous leur donnez des versions légèrement perturbées. Vous ne changez pas vos décisions d'amour / haine, vous dites simplement que vous aimez / détestez certains films un peu plus ou moins (vous donnez à chacun de vos amis une version bootstrapée de vos données d'entraînement originales). Par exemple, alors que vous avez dit à Willow que vous aimiez Black Swan et Harry Potter et que vous n'aimiez pas Avatar, vous dites à Woody que vous avez tellement aimé Black Swan que vous l'avez regardé deux fois, vous avez détesté Avatar et ne mentionnez pas du tout Harry Potter.

En utilisant cet ensemble, vous espérez que même si chacun de vos amis donne des recommandations quelque peu idiosyncrasiques (Willow pense que vous aimez les films de vampires plus que vous, Woody pense que vous aimez les films Pixar et Cartman pense que vous détestez tout), les erreurs sont annulées en majorité. Ainsi, vos amis forment maintenant une forêt ensachée (agrégée par bootstrap) de vos préférences de film.

Cependant, il y a toujours un problème avec vos données. Bien que vous ayez aimé Titanic et Inception, ce n'est pas parce que vous aimez les films qui mettent en vedette Leonardio DiCaprio. Peut-être que vous avez aimé les deux films pour d'autres raisons. Ainsi, vous ne voulez pas que vos amis basent tous leurs recommandations sur le fait que Leo soit dans un film ou non. Ainsi, lorsque chaque ami pose une question à IMDB, seul un sous-ensemble aléatoire des questions possibles est autorisé (c.-à-d. Lorsque vous construisez un arbre de décision, à chaque nœud, vous utilisez un caractère aléatoire pour sélectionner l'attribut à fractionner, par exemple en sélectionnant au hasard un attribut ou en sélectionnant un attribut dans un sous-ensemble aléatoire). Cela signifie que vos amis ne sont pas autorisés à demander si Leonardo DiCaprio est dans le film quand ils le souhaitent. Alors qu'auparavant, vous injectiez de l'aléatoire au niveau des données,

Et donc vos amis forment maintenant une forêt aléatoire.

Dawny33
la source
7
when the data has a non-linear shape, then a linear model cannot capture the non-linear featuresIl s'agit d'une idée fausse courante. Tout d'abord, une simple régression linéaire peut modéliser même des séries harmoniques stats.stackexchange.com/questions/60500/… . Deuxièmement, une interaction de caractéristiques peut être introduite et, bien sûr, il existe un modèle linéaire généralisé où une fonction non linéaire sur les termes linéaires est introduite (par exemple, la régression logistique).
Ricardo Cruz
2

Pour autant que je sache, il n'y a pas de règle pour dire quel algorithme fonctionne pour quel ensemble de données. Assurez-vous simplement que votre ensemble de données et vos variables d'intérêt respectent les pré-hypothèses de l'exécution de chaque algorithme et essayez-le. Par exemple, la régression linéaire comporte des présupposés tels que la normalité des resuduals, l'homoscédasticité (la variabilité de la variable de réponse est la même à tous les niveaux de la variable explicative), etc. Vérifiez simplement ces variables pour vos variables et essayez l'algorithme.

Vous pouvez utiliser un logiciel pointer et cliquer pour voir les résultats sans vous impliquer dans le paramétrage du code et des paramètres. Si vous êtes un utilisateur R, le paquet hochet sera un outil très utile à ce stade. Vous faites votre travail en mode pointer et cliquer et vous avez accès au code derrière.

Hamideh
la source
La seule règle empirique que j'ai lue est que les régressions gèrent mieux le bruit que les forêts aléatoires, ce qui semble vrai parce que les arbres de décision sont des modèles discrets, mais je n'ai jamais vu cela testé quantitativement.
Ricardo Cruz