Jest to podobne do metody ponownego próbkowania pytania Careta , chociaż tak naprawdę nigdy nie odpowiedziałem na tę część pytania w uzgodniony sposób.
oferty funkcji pociągu Careta cv
i repeatedcv
. Jaka jest różnica w powiedzeniu:
MyTrainControl=trainControl(
method = "cv",
number=5,
repeats=5
)
vs
MyTrainControl=trainControl(
method = "repeatedcv",
number=5,
repeats=5
)
Rozumiem, że cv
rozkłada zestaw na k-folds (parametr number
), a następnie zaczyna od nowa i uruchamia parametry repeats
kilka razy.
Jedyne, co myślę, że być może jest regularny cv
ze repeats
wykorzystuje te same dokładne indeksy na fałdach za każdym razem? zasadniczo uruchamiając te cv
same dokładne fałdy za każdym razem, a może repeatedcv
wybiera nowe fałdy za każdym razem?
Czy ktoś może to wyjaśnić?
r
machine-learning
caret
Brian Feeny
źródło
źródło
Control()
składni pociągu w R) dla każdego z k krotnie (podanych przez liczbę). W przypadku składania krotowego podczas korzystania z CV jest to proces jednorazowy dla każdego z foldów (ustawiany za pomocą liczb w pociągucontrol()
).Odpowiedzi:
Zgodnie z podręcznikiem, strona 22 , parametr
repeats
ma zastosowanie tylko wtedy, gdymethod
jest ustawiony narepeatedcv
, więc powtarzanie nie jest wykonywane, gdymethod
jest ustawiony nacv
. Różnica między tymi dwiema metodami polega na tym, żerepeatedcv
powtarza się icv
nie powtarza .Poza tym: powtórzenie walidacji krzyżowej z dokładnie takim samym podziałem przyniesie dokładnie taki sam wynik dla każdego powtórzenia (przy założeniu, że model jest trenowany w sposób deterministyczny), co jest nie tylko nieefektywne, ale także niebezpieczne, jeśli chodzi o porównanie wyników walidacji dla różne algorytmy modelowe w sposób statystyczny. Pamiętaj więc o tym, jeśli będziesz musiał samodzielnie zaprogramować walidację.
źródło
Rzeczywisty kod za tymi parametrami można znaleźć w (
selectByFilter.R
icreateDataPartition.R
wcześniejcreateFolds.R
) plikach źródłowych w folderze `caret / R / 'pakietu.Zobacz te pliki np. Tutaj i tutaj (uwaga, że te linki mogą ostatecznie wskazywać na starszą wersję kodu). Dla wygody odpowiednie fragmenty (od wersji 6.0-78 c. Listopada 2017) pokazano poniżej
W selectByFilter.R c. linia 157
W createDataPartition.R c. linia 227
źródło