Validation croisée pour les modèles glm ()
Je suis en train de faire un 10-fold cross validation pour certains modèles glm que j'ai construit plus tôt dans R. je suis un peu confus au sujet de la cv.glm()
fonction dans le boot
paquet, même si j'ai lu beaucoup de fichiers d'aide. Quand j'ai la formule suivante:
library(boot)
cv.glm(data, glmfit, K=10)
Ne les "données" argument ici se référer à l'ensemble du jeu de données ou seulement à l'ensemble de test?
Les exemples que j'ai vu jusqu'à présent, les "données" argument comme jeu de test mais qui n'a pas vraiment de sens, comme pourquoi dois-10-plis sur le même ensemble de test? Ils sont tous d'aller donner exactement le même résultat (j'assume!).
Malheureusement ?cv.glm
l'explique dans un brouillard façon:
de données: une matrice ou Un bloc de données contenant les données. Les lignes doivent être
les cas et les colonnes correspondent aux variables, qui est celui de l'
réponse
Mon autre question serait sur le $delta[1]
résultat. Est-ce la moyenne de l'erreur de prédiction sur les 10 essais? Que faire si je veux obtenir de l'erreur pour chaque pli?
Voici ce que mon script ressemble:
##data partitioning
sub <- sample(nrow(data), floor(nrow(x) * 0.9))
training <- data[sub, ]
testing <- data[-sub, ]
##model building
model <- glm(formula = groupcol ~ var1 + var2 + var3,
family = "binomial", data = training)
##cross-validation
cv.glm(testing, model, K=10)
source d'informationauteur Error404
Vous devez vous connecter pour publier un commentaire.
Je suis toujours un peu prudent sur l'utilisation de différents paquets de 10-fold cross validation des méthodes. J'ai mon propre script simple pour créer le test et de formation, les partitions manuellement pour chaque machine sur l'ensemble d'apprentissage:
@Romain a fourni quelques réponses à ses commentaires, cependant, la réponse à vos questions est fournie par l'inspection du code avec
cv.glm
:Je crois que ce morceau de code sépare le jeu de données au hasard dans la K-plis, organisation de l'arrondissement, au besoin, si K ne divise pas n:
Ce bit montre que la valeur de delta n'est PAS la racine de l'erreur quadratique moyenne. Elle est, comme le helpfile dit
The default is the average squared error function.
Qu'est-ce que cela signifie? Nous pouvons voir cela par l'inspection de la déclaration de la fonction:qui montre qu'au sein de chaque fois, nous calculons la moyenne de l'erreur quadratique, où l'erreur est dans le sens habituel entre la réponse prévue vs réelle réponse.
delta[1]
est tout simplement le moyenne pondérée de la SOMME de tous ces termes pour chaque pli, voir mes commentaires en ligne dans le code decv.glm
: