Version courte: je recherche un package R capable de construire des arbres de décision alors que chaque feuille de l'arbre de décision est un modèle de régression linéaire complet. AFAIK, la bibliothèque rpart
crée des arbres de décision où la variable dépendante est constante dans chaque feuille. Y a-t-il une autre bibliothèque (ou un rpart
paramètre que je ne connais pas) qui peut construire de tels arbres?
Version longue: je recherche un algorithme qui construit un arbre de décision basé sur un ensemble de données de formation. Chaque décision dans l'arbre divise l'ensemble de données d'apprentissage en deux parties, selon une condition sur l'une des variables indépendantes. La racine de l'arborescence contient l'ensemble de données complet, et chaque élément de l'ensemble de données est contenu dans exactement un nœud feuille.
L'algorithme va comme ceci:
- Commencez par l'ensemble de données complet, qui est le nœud racine de l'arborescence. Choisissez ce nœud et appelez .
- Créer un modèle de régression linéaire sur les données .
- Si de modèle linéaire de est supérieur à un certain seuil , nous avons fini avec , marquer si comme une feuille et sauter à l' étape 5. N θ R 2 N N
- Essayez décisions aléatoires et choisissez celle qui donne le meilleur dans les sous-nœuds:
R 2
- Choisissez une variable indépendante aléatoire , ainsi qu'un seuil aléatoire .θ i
- La décision divise l'ensemble de données de en deux nouveaux nœuds, et . N N ~ N
- Créez des modèles de régression linéaire sur et , et calculez leur (appelez-les et ). ~ N R2 r ~ r
- À partir de tous ces tuples , sélectionnez celui avec le maximal . Cela donne une nouvelle décision dans l'arborescence et a deux nouveaux sous-noeuds et .
- Nous avons fini le traitement . Sélectionnez un nouveau nœud qui n'a pas encore été traité et revenez à l'étape 2. Si tous les nœuds ont été traités, l'algorithme se termine.
Cela créera récursivement un arbre de décision qui divise les données en parties plus petites et calcule un modèle linéaire sur chacune de ces parties.
L'étape 3 est la condition de sortie, qui empêche l'algorithme de sur-adapter. Bien sûr, il existe d'autres conditions de sortie possibles:
- Quittez si la profondeur de dans l'arborescence est supérieure à
- Quittez si l'ensemble de données dans est inférieur à
Existe-t-il un tel algorithme dans un package R?
la source
Réponses:
Bien qu'ils fonctionnent différemment de votre algorithme, je pense que vous trouverez mob () et FTtree intéressants. Pour la foule de Zeileis, voir http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf Pour FTtree, les arbres fonctionnels de Gama, une implémentation est disponible dans Weka et donc RWeka. Voir http://cran.r-project.org/web/packages/RWeka/index.html pour plus de détails.
la source
RWeka package propose de nombreuses méthodes de régression. Parmi eux, vous pouvez trouver M5P (M5 Prime), qui est exactement un modèle de régression basé sur un arbre avec des équations linéaires dans les feuilles. Pour plus de détails sur la méthode M5, voir la publication .
Un exemple de code serait:
Si vous souhaitez utiliser un ensemble d'ensachage avec la méthode M5, essayez quelque chose comme:
Pour voir les options de contrôle du modèle M5P, essayez:
Si vous souhaitez optimiser la méthode M5, il existe une solution pour cela dans le
caret
package:la source
Je pense que cela répond à la version courte de votre question:
Depuis les vues de tâches Cran: Machine Learning
la source