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, но по моим подсчетам это не так.

В примере с игрушкой я создал следующую таблицу:

caret_SVM

Есть ли способ увидеть, что происходит "под капотом"? Например, 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). Ошибка в том, что я не хранил правильное количество параметров.