2016-08-09 4 views
7

Попытка лучше понять, как train(tuneLength =) работает в {caret}. Моя путаница произошла, когда пытались понять некоторые различия между методами SVM от {kernlab}. Я просмотрел документацию (here) и страницу обучения каретки (here).R понимание {карет} поезд (tuneLength =) и SVM методы из {kernlab}

В качестве примера с моей игрушкой было создано пять моделей с использованием набора данных iris. Результаты: here, а воспроизводимый код here (они довольно длинны, поэтому я не копировал и не вставлял их в сообщение).

Из документации {caret}:

tuneLength
целое число, обозначающее количество зернистости в сетке параметров настройки. По умолчанию этот аргумент представляет собой количество уровней для каждого параметра настройки, который должен быть сгенерирован поездом. Если у trainControl есть опция search = "random", это максимальное количество комбинаций параметров настройки, которые будут генерироваться случайным поиском. (Примечание: Если задан, этот аргумент должен быть назван.)

В this example, trainControl(search = "random") и train(tuneLength = 30), но, как представляется, 67 результатов, а не 30 (максимальное количество комбинаций параметров настройки)? Я попытался поиграть, чтобы увидеть, возможно, было 30 уникальных значений ROC или даже значений ydim, но по моим подсчетам это не так.

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

caret_SVM

Есть ли способ, чтобы увидеть, что происходит «под капотом»? Например, M1 () и M3 (svmRadialSigma) принимают и задают одни и те же параметры настройки, но на основе вызова $results, по-видимому, используют их по-разному?

Мое понимание train(tuneLength = 9) было то, что обе модели будут производить результаты sigma и C каждого с 9 values, 9 times поскольку 9 является количество уровней для каждого параметра настройки (исключение случайного поиска)? Аналогично, M4 будет 9^3 с train(tuneLength = 9) и есть 3 параметры настройки?

Майкл

ответ

8

мне нужно обновить документацию пакета больше, но детали написаны на на package web page for random search:

«Общее количество уникальных комбинаций задается tuneLength опции к train

Однако это особенно мутные SVM, использующие ядро ​​RBF.Вот бежать вниз:

  • svmRadial мелодии над стоимостью и использует одно значение sigma основанное на sigest функции kern lab «s. Для поиска сетки tuneLength - это количество значений стоимости для тестирования, а для случайного поиска - общее количество пар (стоимость, sigma) для оценки.
  • svmRadialCost - это то же самое, что и svmRadial, но sigest запускается внутри каждого цикла передискретизации. Для случайного поиска, он не настраивается на sigma.
  • svmRadialSigma с сеткой поиска мелодий по обеим издержкам и sigma. В момент субоптимальной когнитивной эффективности я поставил перед этим задачу не более 6 значений sigma во время поиска сетки, так как я чувствовал, что пространство затрат требует более широкого диапазона. Для случайного поиска он делает то же самое, что и svmRadial.
  • svmRadialWeight - это то же самое, что и svmRadial, но также считается весом класса и предназначен только для проблем с 2 классами.

Что касается примера SOM на веб-странице, это ошибка. Я перепробовал пространство параметров SOM, так как там должен быть фильтр для xdim <= ydim & xdim*ydim < nrow(x). Ошибка в том, что я не хранил правильное количество параметров.

+0

Привет Макс, спасибо за быстрый и подробный ответ. Это очень полезно. Использование APM в классе вместе с ESL, PDSwR и Elder's Ensemble Methods - это отличный текст. Майкл –

+0

@topepo делает 'svmRadialWeight' принимает аргумент' weightights' через 'train'? – cdeterman

Смежные вопросы