R-понимание {cart} train (tuneLength =) и SVM-методы из {kernlab}
Попытка лучше понять, как работает 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
параметра настройки?
Майкл
Ответы
Ответ 1
Мне нужно обновить документацию пакета больше, но детали указаны на веб-странице пакета для случайного поиска:
"Общее количество уникальных комбинаций задается параметром tuneLength
для train
".
Однако это особенно мутные SVM, использующие ядро RBF. Вот прогон:
-
svmRadial
настраивается по стоимости и использует одно значение sigma
основанное на sigest
функции kern lab
. Для поиска сетки tuneLength
- это количество значений стоимости для тестирования, а для случайного поиска - общее количество пар (стоимости, sigma
) для оценки. -
svmRadialCost
- это то же самое, что и svmRadial
но sigest
запускается внутри каждого цикла повторной выборки. Для случайного поиска, он не настраивается на sigma
. -
svmRadialSigma
с сетчатыми поисковыми svmRadialSigma
как по стоимости, так и по sigma
. В момент субоптимальной когнитивной эффективности я поставил перед этим задачу не более 6 значений sigma
во время поиска сетки, так как я считал, что пространство затрат требует более широкого диапазона. Для случайного поиска он делает то же, что и svmRadial
. -
svmRadialWeight
- это то же самое, что и svmRadial
но также считается весом класса и относится только к задачам с 2 классами.
Что касается примера SOM на веб-странице, хорошо, что ошибка. Я xdim <= ydim & xdim*ydim < nrow(x)
пространство параметров SOM, так как там должен быть фильтр для xdim <= ydim & xdim*ydim < nrow(x)
. Ошибка в том, что я не хранил правильное количество параметров.