Перекрестная проверка и настройка параметров

17

Кто-нибудь может сказать мне, что именно дает перекрестный анализ? Это просто средняя точность или дает какую-либо модель с настроенными параметрами?

Потому что я где-то слышал, что для настройки параметров используется перекрестная проверка.

Сана Судхир
источник

Ответы:

26

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

Таким образом, сам процесс не дает вам оценки модели или параметра, но вы можете использовать его для выбора альтернативы.

Джонатан Кристенсен
источник
12

Добавить к ответу Джонатана.

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

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

cbeleites поддерживает Монику
источник
3

Чтобы добавить к предыдущим ответам, мы начнем с самого начала:

Есть несколько способов, которыми вы можете подогнать свои модели под тренировочные данные, некоторые очевидны, некоторые менее. Во-первых, и наиболее важным является подгонка параметров обучения (весов) к данным (параметры подбора кривой в логистической регрессии, весовые коэффициенты сети в нейронной сети и т. Д.). Затем вы смоделируете шум в данных - если вы переизбираете, вы не только захватите основную генерирующую функцию, но и случайность из-за размера выборки и того факта, что выборка не является идеальным представлением совокупности. Это переоснащение может быть до некоторой степени смягчено путем наказания определенных атрибутов (в общем случае) модели. Это можно сделать, остановив тренировку, когда производительность на образце поезда больше не будет значительно улучшаться, удалив некоторые нейроны из нейронной сети (так называемые отсева),https://ieeexplore.ieee.org/document/614177/ ) и т. д.). Однако эти стратегии регуляризации сами по себе параметризуются (когда вы останавливаетесь? Сколько нейронов удалить? И т. Д.). Кроме того, большинство моделей машинного обучения имеют ряд гиперпараметров, которые необходимо установить перед началом обучения. И эти гиперпараметры настраиваются на этапе настройки параметров.

Это подводит нас ко второму, более тонкому типу переоснащения: гиперпараметрическому переоснащению. Перекрестная проверка может быть использована для поиска «лучших» гиперпараметров, многократно тренируя вашу модель с нуля на k-1 сгибах образца и тестируя на последнем сгибе.

Так как именно это делается? В зависимости от стратегии поиска (заданной Tennshi), вы устанавливаете гиперпараметры модели и обучаете свою модель k раз, каждый раз используя разные тестовые сгибы. Вы «запоминаете» среднюю производительность модели по всем тестовым сгибам и повторяете всю процедуру для другого набора гиперпараметров. Затем вы выбираете набор гиперпараметров, который соответствует наилучшей производительности при перекрестной проверке. Как видите, стоимость вычислений для этой процедуры сильно зависит от количества наборов гиперпараметров, которые необходимо учитывать. Вот почему были разработаны некоторые стратегии для выбора этого набора (здесь я собираюсь обобщить то, что сказал Тенши):

  1. Поиск по сетке: для каждого гиперпараметра вы перечисляете конечное число возможных значений. Затем процедура полностью выполняется для всех комбинаций перечисленных гиперпараметров. Очевидно, что если у вас есть непрерывные гиперпараметры, вы не можете попробовать их все.
  2. Рандомизированный поиск по сетке: аналогичен обычному поиску по сетке, но на этот раз вы не пытаетесь исчерпывающе опробовать все комбинации, а вместо этого отбираете фиксированное число раз для всех возможных значений. Обратите внимание, что здесь можно не только перечислить возможные значения для гиперпараметра, но вы также можете предоставить распределение для выборки.
  3. BayesianSearch - комбинация значений гиперпараметров выбрана для максимального ожидаемого улучшения оценки. Для получения дополнительной информации: http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf . И библиотека, которая занимается только этим: https://github.com/hyperopt/hyperopt . Так как комбинировать со sklearn не так легко, как рекомендовано tenhi, используйте его, только если вы не работаете со sklearn.
  4. Другие способы управляемого поиска в гиперпараметрическом пространстве. По моему опыту, они редко используются, поэтому я не буду их здесь описывать.

Однако это еще не конец истории, поскольку гиперпараметры могут (и будут) превосходить данные. В большинстве случаев вы можете просто жить с этим, но если вы хотите максимизировать мощность обобщения вашей модели, вы можете также попытаться упорядочить гиперпараметры. Во-первых, вы можете немного лучше оценить производительность данных вне выборки с помощью поиска по вложенным сеткам (подробнее: http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html , обсуждение: перекрестная проверка вложенных данных). для выбора модели), или просто используйте набор проверки, который не используется для настройки гиперпараметров. Что касается регуляризации в пространстве гиперпараметров, то это более или менее открытый вопрос. Некоторые идеи включают выбор не лучшего набора значений гиперпараметров, но что-то ближе к середине; рассуждение выглядит следующим образом: лучшие значения гиперпараметров, скорее всего, превосходят данные только потому, что они работают лучше, чем другие данные поезда, плохие параметры просто плохие, но те, что в середине, могут достичь лучшего обобщения, чем лучшие , Эндрю Нг написал статью об этом. Другим вариантом является ограничение вашего пространства поиска (вы упорядочиваете, вводя здесь сильный уклон - значения вне пространства поиска никогда не будут выбраны явно).

Дополнительное замечание: использование точности в качестве метрики производительности в большинстве случаев является очень плохой идеей, посмотрите на оценки f1 и f_beta - эти метрики в большинстве случаев будут лучше отражать то, что вы на самом деле пытаетесь оптимизировать в задачах двоичной классификации.

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

Войтек
источник
2

Если вы из школы scikit-learn, этот ответ может быть полезен.

K-кратная перекрестная проверка используется для разделения данных на kразделы, затем оценщик обучается на k-1разделах и затем тестируется на kthразделах. Таким образом, выбор раздела, который должен быть kthразделом, предоставляет kвозможности. Поэтому вы получаете kрезультаты всех kвозможностей вашего оценщика.

это вычислительно дорогие методы, но если вы собираетесь попробовать разные оценщики, вы можете попробовать эти три для выполнения настройки гиперпараметра вместе с CV:

я. GridSearchCV - исчерпывающий список всех возможных P и C для гиперпараметров для всех оценок. В конце приводятся лучшие гиперпараметры с использованием среднего значения данного конкретного резюме.

II. RandomizedSearchCV - не выполняет все P и C гиперпараметров, но при рандомизированном подходе дает максимально точную оценку, экономя больше на вычислениях.

III. BayesSearchCV - Не входит, scikit-learnно выполняет байесовскую оптимизацию для рандомизированного поиска и подбора результатов.

tl: dr : CV используется только для того, чтобы избежать высокого смещения и высокой дисперсии для вашего оценщика из-за данных, которые вы передаете. Надеюсь, это было полезно.

Tenshi
источник