Как правильно применять перекрестную проверку в контексте выбора параметров обучения для машин опорных векторов?

9

Прекрасный пакет libsvm предоставляет интерфейс Python и файл «easy.py», который автоматически ищет параметры обучения (cost & gamma), которые максимизируют точность классификатора. В заданном наборе параметров обучения кандидата точность реализуется путем перекрестной проверки, но я чувствую, что это подрывает цель перекрестной проверки. То есть, поскольку сами параметры обучения могут быть выбраны способом, который может привести к перегрузке данных, я считаю, что более подходящим подходом было бы применение перекрестной проверки на уровне самого поиска: выполнить поиск на тренировочном наборе данных, а затем оцените предельную точность SVM, полученную в результате окончательно выбранных параметров обучения, путем оценки в отдельном наборе данных тестирования. Или я что-то здесь упускаю?

Майк Лоуренс
источник

Ответы:

10

Если вы изучите гиперпараметры в полных обучающих данных, а затем проведете перекрестную проверку, вы получите оптимистически смещенную оценку производительности, потому что тестовые данные в каждом сгибе уже использовались при настройке гиперпараметров, поэтому гипер- Выбранные параметры выбираются частично, потому что они соответствуют данным в тестовом наборе. Оптимистическая предвзятость, введенная таким образом, может быть неожиданно большой. См. Cawley и Talbot, «О переоснащении при выборе модели и последующем смещении выбора при оценке эффективности», JMLR 11 (июль): 2079-2107, 2010.(В частности, раздел 5.3). Лучшее, что можно сделать - это вложенная перекрестная проверка. Основная идея заключается в том, что вы перекрестно проверяете весь метод, использованный для генерации модели, поэтому рассматривайте выбор модели (выбор гиперпараметров) как просто часть процедуры подбора модели (где определяются параметры), и вы не сможете перейти слишком далеко не так.

Если вы используете перекрестную проверку на обучающем наборе для определения гиперпараметров, а затем оцениваете производительность модели, обученной с использованием этих параметров на всем обучающем наборе, с использованием отдельного проверочного набора, это также хорошо (при условии, что у вас достаточно данных для надежной подгонки модели и оценки производительности с использованием непересекающихся перегородок).

Дикран Сумчатый
источник
Хорошая ссылка!
Андрей
Во втором абзаце, как бы вы включили выбор функций? Было бы хорошо: i) выполнить оптимизацию гиперпараметров, как вы сказали выше (получение оптимальных гиперпараметров) ii) запустить выбор функции в другом раунде перекрестной проверки, чтобы получить набор лучших предикторов (выбор функции выполняется на обучающих данных, разбитых на набор вычитания и проверки с использованием любого метода повторной выборки, используемого при оптимизации гиперпараметров). iii) обучить модель с верхним гиперпараметром и верхним предиктором, установленным на полных данных обучения. Тест на отдельном тестовом наборе.
СМА
чтобы быть немного более понятным в ii) запустить выбор функции в другом раунде перекрестной проверки, чтобы получить набор главных предикторов (данные обучения разбиты на набор вычитания и проверки с помощью метода повторной выборки, используемого при оптимизации гиперпараметров. Затем выбор функции запускается на вычитание данных).
СМА
В качестве альтернативы, можно ли сначала сделать выбор функции с помощью перекрестной проверки, чтобы получить верхний набор функций, а затем выполнить гипер-настройку любых моделей, представляющих интерес, с использованием верхнего набора функций (как указано выше при перекрестной проверке)? Затем обучите модели с их оптимальными гиперпараметрами на полных данных обучения только с уже определенным верхним набором функций и проведите тестирование на отдельном наборе тестов.
СМА
0

Я не думаю, что перекрестная проверка неправильно используется в случае LIBSVM, потому что это делается на уровне данных тестирования. Все, что он делает - это k-кратная перекрестная проверка и поиск лучшего параметра для ядра RBF. Дайте мне знать, что вы не согласны.

user20350
источник
Выбор гиперпараметров никоим образом не должен включать данные испытаний, так как это приведет к оптимистичной оценке производительности. По сути, выбор гиперпараметров должен рассматриваться как неотъемлемая часть подбора SVM, поэтому процедура тестирования должна также проверять ошибку из-за выбора гиперпараметров, см. Мою статью, на которую я ссылаюсь в своем ответе на вопрос (это открытый доступ).
Дикран Marsupial