Comment effectuer la forêt au hasard/validation croisée dans la R
Je suis incapable de trouver un moyen d'effectuer la validation croisée sur une régression aléatoire de la forêt modèle que je suis en train de produire.
Donc, j'ai un dataset contenant 1664 variables explicatives (propriétés chimiques différentes), avec une variable de réponse (temps de rétention). Je suis en train de produire une régression aléatoire de la forêt modèle afin d'être en mesure de prédire les propriétés chimiques de quelque chose compte tenu de son temps de rétention.
ID RT (seconds) 1_MW 2_AMW 3_Sv 4_Se
4281 38 145.29 5.01 14.76 28.37
4952 40 132.19 6.29 11 21.28
4823 41 176.21 7.34 12.9 24.92
3840 41 174.24 6.7 13.99 26.48
3665 42 240.34 9.24 15.2 27.08
3591 42 161.23 6.2 13.71 26.27
3659 42 146.22 6.09 12.6 24.16
Ceci est un exemple de la table que j'ai. Je veux essentiellement de la parcelle RT contre 1_MW, etc (jusqu'à 1664 variables), donc je peux le trouver laquelle de ces variables sont d'importance et qui ne le sont pas.
Je fais:-
r = randomForest(RT..seconds.~., data = cadets, importance =TRUE, do.trace = 100)
varImpPlot(r)
qui me dit que les variables qui sont d'importance et ce n'est pas, ce qui est excellent. Cependant, je veux être capable de partitionner mon ensemble de données afin que je puisse effectuer la validation croisée. J'ai trouvé un tutoriel qui explique comment le faire, mais pour un modèle de classification plutôt que de régression.
Je comprends que vous faites:-
k = 10
n = floor(nrow(cadets)/k)
i = 1
s1 = ((i-1) * n+1)
s2 = (i * n)
subset = s1:s2
pour définir le nombre de croix plis que vous voulez faire, et la taille de chaque pli, et pour définir le début et la fin de la valeur du sous-ensemble. Cependant, je ne sais pas quoi faire après. On m'a dit de faire une boucle par mais honnêtement, je n'ai aucune idée de comment faire cela. Je ne sais comment puis tracer l'ensemble de validation et le test sur le même graphique pour représenter le niveau de l'exactitude ou de l'erreur.
Si vous pouviez s'il vous plaît m'aider, je lui en serais très reconnaissante, merci!
OriginalL'auteur user2062207 | 2013-11-04
Vous devez vous connecter pour publier un commentaire.
C'est effectivement plus rapide ainsi que très facile à faire en Python à l'aide de la scikit-learn bibliothèque (http://scikit-learn.org/stable/modules/cross_validation.html). Vous pouvez faire K-fold validation, stratifié K fois (ce qui garantit que les classes sont également réparties dans chacun des plis), laisser de côté, et d'autres.
Il est également très facile de générer la courbe ROC, disposent d'importances, et d'autres de l'évaluation des mesures.
Voici un exemple rapide:
OriginalL'auteur eagle34
De la source:
En particulier,
predict.randomForest
retourne le-de-sac de prédiction sinewdata
n'est pas donné.OriginalL'auteur topchef
Comme topchef souligné, la validation croisée n'est pas nécessaire d'avoir une protection contre le sur-ajustement. C'est une caractéristique intéressante de la forêt aléatoire de l'algorithme.
Il semble que votre objectif est la fonction de sélection, de validation croisée est toujours utile à cette fin. Jetez un oeil à la
rfcv()
fonction au sein de l'randomForest paquet. La Documentation indique l'entrée d'un bloc de données & vecteur, alors je vais commencer par la création de celles de vos données.OriginalL'auteur Lenwood