В CrossValidated существует множество тем на тему выбора модели и перекрестной проверки. Вот несколько из них:
- Внутренняя и внешняя перекрестная проверка и выбор модели
- Главный ответ @ DikranMarsupial на выбор функций и перекрестную проверку
Однако ответы на эти темы являются довольно общими и в основном освещают проблемы с конкретными подходами к перекрестной проверке и выбору модели.
Чтобы сделать вещи как можно более конкретными , скажем, например, что мы работаем с SVM с ядром RBF: , и что У меня есть набор данных функций X и меток у , и я хочу
- Найти наилучшие возможные значения моей модели ( и )
- Обучите SVM с моим набором данных (для окончательного развертывания)
- Оценить ошибку обобщения и неопределенность (дисперсию) вокруг этой ошибки
Для этого я лично выполняю поиск по сетке, например, я пробую все возможные комбинации и . Для простоты мы можем принять следующие диапазоны:
Более конкретно, используя мой полный набор данных, я делаю следующее:
- Для каждой пары ( , ) я делаю повторные итерации (например, 100 случайных повторений) перекрестной проверки с кратным смещением (например, ) в моем наборе данных, т.е. я тренирую SVM на сгибах и оцениваю ошибка в левом сгибе, повторяющаяся во всех сгибах. В целом, я собираю 100 x 10 = 1000 ошибок теста.
- Для каждой такой пары ( , ) я вычисляю среднее значение и дисперсию этих 1000 тестовых ошибок .
Теперь я хочу выбрать лучшую модель (лучшие параметры ядра), которую я бы использовал для обучения моего окончательного SVM по полному набору данных. Я понимаю, что при выборе модели , которая имела самую низкую среднюю ошибку и дисперсию и будет правильным выбором, и что модели являются мои лучшие оценки смещения ошибки обобщения модели и дисперсии , когда обучение с полный набор данных.
НО, после прочтения ответов в вышеприведенных темах, у меня складывается впечатление, что этот метод выбора лучшего SVM для развертывания и / или оценки его ошибки (производительности обобщения) имеет недостатки, и что существуют более эффективные способы выбора лучший SVM и сообщение о его ошибке. Если так, то кто они? Я ищу конкретный ответ, пожалуйста.
Придерживаясь этой проблемы, как конкретно я могу выбрать лучшую модель и правильно оценить ее ошибку обобщения ?
источник
Ответы:
Моя статья в JMLR посвящена именно этому вопросу и демонстрирует, почему процедура, предложенная в этом вопросе (или, по крайней мере, одна очень похожая на нее), приводит к оптимистически смещенным оценкам производительности:
Гэвин К. Коули, Никола Л.К. Тэлбот, «О переоснащении при выборе модели и смещении последующего выбора при оценке эффективности», Журнал исследований в области машинного обучения, 11 (июль): 2079-2107, 2010. ( www )
Важно помнить, что перекрестная проверка - это метод оценки эффективности обобщения для метода генерации модели, а не самой модели. Таким образом, если выбор параметров ядра является частью процесса генерации модели, вам также необходимо провести перекрестную проверку процесса выбора модели, в противном случае вы получите оптимистически необъективную оценку производительности (как это будет происходить с предложенной вами процедурой).
Предположим, у вас есть функция fit_model, которая принимает набор данных, состоящий из атрибутов X и желаемых ответов Y, и возвращает возвращаемую модель для этого набора данных, включая настройку гиперпараметров (в данном случае параметры ядра и регуляризации). Эта настройка гиперпараметров может быть выполнена многими способами, например, минимизируя ошибку перекрестной проверки по X и T.
Шаг 1 - Подгоните модель ко всем доступным данным, используя функцию fit_model. Это дает вам модель, которую вы будете использовать в работе.
Шаг 2 - Оценка эффективности. Выполните повторную перекрестную проверку, используя все доступные данные. В каждом случае данные делятся на тренировочный набор и тестовый набор. Установите модель, используя обучающий набор (запишите значения гиперпараметров для подобранной модели), и оцените производительность на тестовом наборе. Используйте среднее значение для всех наборов тестов в качестве оценки производительности (и, возможно, посмотрите также на разброс значений).
Шаг 3 - Изменчивость настроек гиперпараметров - выполнить анализ значений гиперпараметров, собранных на шаге 3. Однако я должен отметить, что в гиперпараметрах нет ничего особенного, это всего лишь параметры модели, которые были оценены (косвенно ) из данных. Они рассматриваются как гиперпараметры, а не параметры для удобства вычислений / математики, но это не обязательно так.
Проблема с использованием перекрестной проверки здесь состоит в том, что данные обучения и испытаний не являются независимыми выборками (поскольку они совместно используют данные), что означает, что оценка дисперсии оценки эффективности и гиперпараметров, вероятно, будет смещена (т.е. меньше, чем это было бы для действительно независимых выборок данных в каждом сгибе). Вместо повторной перекрестной проверки я, вероятно, вместо этого использовал бы начальную загрузку и суммировал бы полученные модели, если это было бы выполнимо в вычислительном отношении.
Ключевым моментом является то, что для получения объективной оценки производительности любую процедуру, которую вы используете для генерации окончательной модели (fit_model), необходимо повторять полностью независимо в каждом цикле процедуры перекрестной проверки.
источник
rather than repeated cross-validation you would go for bootstrapping
- в чем именно разница? Оба включают в себя многократные повторения деления данных на,train
аtest
затем обучениеtrain
и оценкуtest
, не так ли?Процедура, которая оптимизирует эти гиперпараметры и обучает SVM , также является алгоритмом машинного обучения . Вместо оптимизации только внутренних параметров SVM (опорных векторов) он также оптимизирует гиперпараметры.
Теперь у вас есть две проблемы [которые могут быть решены независимо]:
Как выполнить оптимизацию гиперпараметра / выбор модели?
Как оценить ошибку обобщения алгоритма машинного обучения?
Прочтите Неправильное использование перекрестной проверки (сообщая о производительности для лучшего значения гиперпараметра), чтобы убедиться, что вы не перепутаете их.
Конкретное (возможно, не оптимальное) решение конкретной проблемы вашего вопроса:
Здесь
model
будет ваша «лучшая модель» иloss_CV
«правильная оценка ее ошибки обобщения» (хотя и смещенной вверх, но вы не можете получить торт и съесть его тоже).источник