Пытаюсь лучше понять, как train(tuneLength = )
работает в {caret}
. Мое замешательство произошло, когда я пытался понять некоторые различия между методами SVM из {kernlab}
. Я просмотрел документацию (здесь) и страницу обучения курсора (здесь).
В моем игрушечном примере было создано пять моделей с использованием набора данных iris
. Результаты находятся здесь, а воспроизводимый код - здесь (они довольно длинные, поэтому я не копировал и не вставлял их в сообщение).
Из документации {caret}
:
tuneLength
целое число, обозначающее степень детализации в сетке параметров настройки. По умолчанию этот аргумент представляет собой количество уровней для каждого параметра настройки, который должен быть сгенерирован поездом. Если в trainControl есть опция search = "random", это максимальное количество комбинаций параметров настройки, которые будут сгенерированы случайным поиском. (ПРИМЕЧАНИЕ: если указан, этот аргумент должен иметь имя.)
В этом примере trainControl(search = "random")
и train(tuneLength = 30)
, но, похоже, 67 результатов, а не 30 ( максимальное количество комбинаций параметров настройки)? Я попытался поиграть, чтобы увидеть, может быть, было 30 уникальных ROC
значений или даже ydim
значений, но, по моим подсчетам, это не так.
Для примера с игрушкой я создал следующую таблицу:
Есть ли способ увидеть, что происходит «под капотом»? Например, M1
(svmRadial
) и M3
(svmRadialSigma
) оба принимают и получают одни и те же параметры настройки, но на основании вызова $results
кажется, что они используют их по-разному?
Насколько я понимаю, train(tuneLength = 9)
состоял в том, что обе модели будут давать результаты sigma
и C
, каждая с 9 values, 9 times
, поскольку 9
- это количество уровней для каждого параметра настройки (исключение составляет случайный поиск)? Точно так же M4
будет 9^3
с train(tuneLength = 9)
и есть 3
параметры настройки?
Майкл