J'ai exécuté un modèle de régression OLS sur un ensemble de données avec 5 variables indépendantes. Les variables indépendantes et les variables dépendantes sont à la fois continues et liées linéairement. Le carré R est d'environ 99,3%. Mais quand j'exécute la même chose en utilisant une forêt aléatoire dans R, mon résultat est '% Var expliqué: 88.42'. Pourquoi le résultat aléatoire de la forêt serait-il si inférieur à la régression? Mon hypothèse était que la forêt aléatoire serait au moins aussi bonne que la régression OLS.
r
regression
random-forest
user28906
la source
la source
Réponses:
Je ne sais pas exactement ce que vous avez fait, donc votre code source m'aiderait à deviner moins.
De nombreuses forêts aléatoires sont essentiellement des fenêtres dans lesquelles la moyenne est supposée représenter le système. C'est un arbre CAR sur-glorifié.
Disons que vous avez un arbre CAR à deux feuilles. Vos données seront divisées en deux piles. La sortie (constante) de chaque pile sera sa moyenne.
Maintenant, faisons-le 1000 fois avec des sous-ensembles aléatoires de données. Vous aurez toujours des régions discontinues avec des sorties qui sont des moyennes. Le gagnant d'un RF est le résultat le plus fréquent. Cela ne fait que "brouiller" la frontière entre les catégories.
Exemple de sortie linéaire par morceaux de l'arbre CART:
Disons, par exemple, que notre fonction est y = 0,5 * x + 2. Une intrigue qui ressemble à ceci:
Si nous devions modéliser cela en utilisant un seul arbre de classification avec seulement deux feuilles, nous trouverions d'abord le point de la meilleure division, divisé à ce point, puis approximer la sortie de la fonction à chaque feuille en tant que sortie moyenne sur la feuille.
Si nous devions recommencer avec plus de feuilles sur l'arbre CART, nous pourrions obtenir ce qui suit:
Pourquoi les forêts centrafricaines?
Vous pouvez voir que, dans la limite des feuilles infinies, l'arbre CART serait un approximateur acceptable.
Le problème est que le monde réel est bruyant. Nous aimons penser en termes de moyens, mais le monde aime à la fois la tendance centrale (moyenne) et la tendance à la variation (dev standard). Il y a du bruit.
La même chose qui donne à un arbre CAR sa grande force, sa capacité à gérer la discontinuité, le rend vulnérable à la modélisation du bruit comme s'il s'agissait d'un signal.
Leo Breimann a donc fait une proposition simple mais puissante: utiliser les méthodes Ensemble pour rendre les arbres de classification et de régression robustes. Il prend des sous-ensembles aléatoires (un cousin du rééchantillonnage bootstrap) et les utilise pour former une forêt d'arbres centrafricains. Lorsque vous posez une question sur la forêt, toute la forêt parle et la réponse la plus courante est prise en sortie. Si vous avez affaire à des données numériques, il peut être utile de regarder l'attente en tant que sortie.
Donc, pour la deuxième parcelle, pensez à modéliser à l'aide d'une forêt aléatoire. Chaque arbre aura un sous-ensemble aléatoire des données. Cela signifie que l'emplacement du "meilleur" point de partage variera d'arbre en arbre. Si vous deviez faire un tracé de la sortie de la forêt aléatoire, à l'approche de la discontinuité, les premières branches indiqueront un saut, puis plusieurs. La valeur moyenne dans cette région traversera un chemin sigmoïde lisse. Bootstrapping est convolutant avec un gaussien, et le flou gaussien sur cette fonction de pas devient un sigmoïde.
Bottom lines:
Vous avez besoin de beaucoup de branches par arbre pour obtenir une bonne approximation d'une fonction très linéaire.
Il existe de nombreux "cadrans" que vous pouvez modifier pour avoir un impact sur la réponse, et il est peu probable que vous les ayez tous définis sur les valeurs appropriées.
Les références:
la source
Je remarque que c'est une vieille question, mais je pense que plus devrait être ajouté. Comme @Manoel Galdino l'a dit dans les commentaires, vous êtes généralement intéressé par les prédictions sur les données invisibles. Mais cette question concerne les performances des données d'entraînement et la question est de savoir pourquoi la forêt aléatoire fonctionne mal sur les données d'entraînement . La réponse met en évidence un problème intéressant avec les classificateurs en sac qui m'a souvent causé des problèmes: la régression vers la moyenne.
Le problème est que les classificateurs ensachés comme la forêt aléatoire, qui sont créés en prenant des échantillons d'amorçage de votre ensemble de données, ont tendance à mal fonctionner dans les extrêmes. Parce qu'il n'y a pas beaucoup de données dans les extrêmes, elles ont tendance à être lissées.
Plus en détail, rappelons qu'une forêt aléatoire pour la régression fait la moyenne des prédictions d'un grand nombre de classificateurs. Si vous avez un seul point qui est loin des autres, de nombreux classificateurs ne le verront pas, et ceux-ci feront essentiellement une prédiction hors échantillon, ce qui pourrait ne pas être très bon. En fait, ces prévisions hors échantillon auront tendance à tirer la prédiction pour le point de données vers la moyenne globale.
Si vous utilisez un seul arbre de décision, vous n'aurez pas le même problème avec les valeurs extrêmes, mais la régression ajustée ne sera pas non plus très linéaire.
Voici une illustration dans R. Certaines données sont générées dans lesquelles
y
est une combinaison parfaite de liner de cinqx
variables. Ensuite, les prédictions sont faites avec un modèle linéaire et une forêt aléatoire. Ensuite, les valeurs dey
sur les données d'entraînement sont tracées par rapport aux prédictions. Vous pouvez clairement voir que la forêt aléatoire se porte mal dans les extrêmes car les points de données avec des valeurs très grandes ou très petites dey
sont rares.Vous verrez le même modèle pour les prédictions sur les données invisibles lorsque des forêts aléatoires sont utilisées pour la régression. Je ne sais pas comment l'éviter. La
randomForest
fonction dans R a une option de correction de biais brutcorr.bias
qui utilise une régression linéaire sur le biais, mais cela ne fonctionne pas vraiment.Les suggestions sont les bienvenues!
la source
La forêt aléatoire essaie de trouver des localités parmi de nombreuses fonctionnalités et de nombreux points de données. Il divise les entités et les donne à différents arbres, comme vous avez un petit nombre d'entités, le résultat global n'est pas aussi bon que la régression logistique. La forêt aléatoire peut gérer des variables numériques et catégorielles mais n'est pas bonne pour gérer les valeurs manquantes.
la source
Je pense que Random Forest (RF) est un bon outil lorsque la forme fonctionnelle de la relation entre Xs et y est compliquée (à cause des relations non linéaires et de l'effet d'interaction). RF classe les X en fonction du meilleur point de coupure (en termes d'ESS minimale) et n'applique pas les informations du chercheur sur la forme fonctionnelle de la relation. En revanche, la régression OLS utilise ces informations. Dans votre exemple, vous savez quel est exactement le type de relation entre Xs et y et utilisez toutes ces informations dans votre modèle de régression, mais RF n'utilise pas ces informations.
la source
Pour les bases, la régression fonctionne bien sur les variables continues et la forêt aléatoire sur les variables discrètes.
Vous devez fournir plus de détails sur le problème et sur la nature des variables afin d'être plus précis ...
la source