Mam pytanie dotyczące funkcji rfe
z biblioteki caret
. Na karetki-głównej link dają następujący algorytm RFE: algorithmR caret/Jak działa sprawdzanie krzyżowe dla pociągu w ramach pracy rfe
W tym przykładzie ja przy użyciu funkcji rfe
z 3-krotnym krzyżowego i pociągu funkcji liniowej-SVM i 5-krotnie sprawdzanie poprawności krzyżowej.
library(kernlab)
library(caret)
data(iris)
# parameters for the tune function, used for fitting the svm
trControl <- trainControl(method = "cv", number = 5)
# parameters for the RFE function
rfeControl <- rfeControl(functions = caretFuncs, method = "cv",
number= 4, verbose = FALSE)
rf1 <- rfe(as.matrix(iris[,1:4]), as.factor(iris[,5]) ,sizes = c(2,3) ,
rfeControl = rfeControl, trControl = trControl, method = "svmLinear")
- z algorytmu powyżej że zakłada się, że algorytm współpracy z 2 zagnieżdżonych poprzecznych zatwierdzania:
rfe
pęknie danych (150 próbek) w 3 fałdy- posiadają funkcję
train
byłoby uruchomić na zbiorze treningowym (100 próbek) z pięciokrotną weryfikacją krzyżową w celu dostrojenia parametrów modelu - z kolejnymi RFE.
Co mnie dezorientuje jest to, że gdy spojrzeć na wyniki funkcji rfe
:
> lapply(rf1$control$index, length)
$Fold1
[1] 100
$Fold2
[1] 101
$Fold3
[1] 99
> lapply(rf1$fit$control$index, length)
$Fold1
[1] 120
$Fold2
[1] 120
$Fold3
[1] 120
$Fold4
[1] 120
$Fold5
[1] 120
Z tego wynika, że wielkość zestawów szkoleniowych z 5-krotnie cv to 120 próbek, gdy spodziewam się rozmiaru 80.?
więc byłoby wspaniale, jeśli ktoś może wyjaśnić jak RFE i pociąg ze sobą współpracować.
Cheers
> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: i386-apple-darwin9.8.0/i386 (32-bit)
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] pROC_1.5.4 e1071_1.6-1 class_7.3-5 caret_5.15-048
[5] foreach_1.4.0 cluster_1.14.3 plyr_1.7.1 reshape2_1.2.1
[9] lattice_0.20-10 kernlab_0.9-15
loaded via a namespace (and not attached):
[1] codetools_0.2-8 compiler_2.15.1 grid_2.15.1 iterators_1.0.6
[5] stringr_0.6.1 tools_2.15.1
5-krotne CV pomija jedną piątą zestawu danych dla każdego ramienia CV. Dlatego trenujesz 120 za każdym razem, a zestaw testowy to pozostałe 30 próbek. 30 próbek * 5 = 150 próbek. – tcash21
Tak, ale zgodnie z opisem algorytmu należy zastosować 5-krotne CV na danych treningowych wynikających z 3-krotnego CV. Tak więc pierwszy zestaw treningowy = 150/3 * 2, drugi 100/5 * 4 = 80. –
@Fabian_G kiedykolwiek to rozgryzłeś? Pracuję nad tym samym problemem i rozważam skontaktowanie się z topepo lub zgłoszenie błędu. – Reilstein