что такое кросс валидация в машинном обучении
Перекрестная проверка в машинном обучении
Дата публикации Jun 5, 2017
Всегда есть необходимость проверить стабильность вашей модели машинного обучения. Я имею в виду, что вы просто не можете приспособить модель к своим данным обучения и надеетесь, что она будет точно работать для реальных данных, которые она никогда не видела раньше.Вам нужна какая-то уверенность в том, что ваша модель получила большинство шаблонов из правильных данных, и она не слишком сильно поглощает шум, или, другими словами, ее низкий уровень смещения и дисперсии.
Проверка
Этот процесс принятия решения о том, являются ли числовые результаты количественной оценки гипотетических отношений между переменными приемлемыми в качестве описания данных, известен какПроверка, Как правило, оценка ошибки для модели производится после обучения, более известная как оценка остатков. В этом процессе делается численная оценка разницы в предсказанных и исходных ответах, также называемая ошибкой обучения. Тем не мение,это только дает нам представление о том, насколько хорошо наша модель работает с данными, используемыми для ее обучения., Теперь возможно, что модель не соответствует или не соответствует данным. Так чтопроблема с этой техникой оценки состоит в том, что она не дает указание на то, насколько хорошо ученик будет обобщать независимый / невидимый набор данных,Получение этой идеи о нашей модели называется перекрестной проверкой.
Метод удержания
СейчасОсновное средство для этого заключается в удалении части обучающих данных и использовании их для получения прогнозов из модели, обученной для остальных данных.Затем оценка ошибки показывает, как наша модель работает с невидимыми данными или набором проверок.Это простой метод перекрестной проверки, также известный как метод удержания, Хотя этот метод не требует дополнительных затрат для вычисления и лучше, чем традиционная проверка,это все еще страдает от проблем высокой дисперсии,Это связано с тем, что неизвестно, какие точки данных окажутся в наборе проверки, и результат может быть совершенно разным для разных наборов.
K-Fold Cross Validation
Поскольку данных для обучения вашей модели никогда не бывает достаточно,удаление его части для проверки создает проблему недостаточного соответствия.Сокращая данные обучения,мы рискуем потерять важные паттерны / тренды в наборе данных, что, в свою очередь, увеличивает ошибку, вызванную смещением.Итак, нам нужен метод, который предоставляет достаточно данных для обучения модели, а также оставляет достаточно данных для проверки. K Fold Cross валидация делает именно это.
ВK Fold Cross валидацияданные делятся на k подмножеств. Теперь метод удержания повторяется k раз, так чтокаждый раз одно из k подмножеств используется в качестве тестового набора / набора проверки, а другие k-1 подмножества объединяются для формирования обучающего набора,Оценка ошибок усредняется по всем k испытаниям, чтобы получить общую эффективность нашей модели, Как можно видеть, каждая точка данных попадает в набор проверки ровно один раз и попадает в обучающий наборк-1раз.Это значительно уменьшает смещение, поскольку мы используем большую часть данных для подгонки, а также значительно уменьшает дисперсию, поскольку большая часть данных также используется в наборе проверки.Замена учебных и тестовых наборов также повышает эффективность этого метода.Как общее правило и эмпирические данные, K = 5 или 10, как правило, предпочтительнее, но ничего не исправлено, и оно может принимать любое значение.
Стратифицированная перекрестная проверка K-Fold
В некоторых случаях может быть большой дисбаланс в переменных ответа, Например, в наборе данных, касающихся цены домов, может быть большое количество домов с высокой ценой. Или в случае классификации может быть в несколько раз больше отрицательных образцов, чем положительных образцов. Для таких проблем,сделано небольшое изменение в методе перекрестной проверки K Fold, так что каждый сгиб содержит примерно такой же процент выборок каждого целевого класса, что и полный набор, или в случае проблем прогнозирования среднее значение ответа примерно равно во всех складки.Этот вариант также известен какСтратифицированный K сложить,
Выше объясненные методы проверки также упоминаются как неисчерпывающие методы перекрестной проверки.Они не рассчитывают все способы разделения исходного образца, т. Е. Вам просто нужно решить, сколько подмножеств необходимо сделать. Кроме того, это приближенияметод, описанный ниже, также называемый исчерпывающими методами, который вычисляет все возможные способы разделения данных на обучающие и тестовые наборы.
Перекрестная проверка Leave-P-Out
Этот подход оставляет p точек данных вне обучающих данных, т.е. если в исходной выборке имеется n точек данных, то n-p выборки используются для обучения модели, а p точек используются в качестве набора проверки. Это повторяется для всех комбинаций, в которых исходный образец может быть разделен таким образом, а затем ошибка усредняется для всех испытаний, чтобы дать общую эффективность
Этот метод является исчерпывающим в том смысле, что он должен обучать и проверять модель для всех возможных комбинаций, а для умеренно больших p он может стать невозможным в вычислительном отношении.
Частным случаем этого метода является случай, когда р = 1. Это известно как «Перекрестная валидация одного из них».Этот метод обычно предпочтительнее предыдущего, потому чтоон не страдает от интенсивных вычислений, так как количество возможных комбинаций равно количеству точек данных в исходной выборке или n.
Перекрестная проверкаочень полезный метод для оценки эффективности вашей модели, особенно в тех случаях, когда вам нужно уменьшить переоснащение.этотакже используется при определении гиперпараметров вашей моделив том смысле, какие параметры приведут к наименьшей ошибке теста. Это все, что вам нужно для начала перекрестной проверки. Вы можете начать работу со всеми видами методов проверки, используяScikit-Learn, это заставляет вас работать всего с несколькими строками кода в Python.
Если вам понравилась эта статья, обязательно нажмите ❤ ниже, чтобы порекомендовать ее, и если у вас есть какие-либо вопросы,Оставить комментарийи я сделаю все возможное, чтобы ответить.
Для того, чтобы быть более осведомленным о мире машинного обучения,Подписывайтесь на меня, Это лучший способ узнать, когда я пишу больше подобных статей.
Кросс-валидация
Кросс-валидация или скользящий контроль — процедура эмпирического оценивания обобщающей способности алгоритмов. С помощью кросс-валидации эмулируется наличие тестовой выборки, которая не участвует в обучении, но для которой известны правильные ответы.
Содержание
Определения и обозначения [ править ]
Пусть [math] X [/math] — множество признаков, описывающих объекты, а [math] Y [/math] — конечное множество меток.
[math]T^l = <(x_i, y_i)>_^
[math]Q[/math] — мера качества,
[math]\mu: (X \times Y)^l \to A, [/math] — алгоритм обучения.
Разновидности кросс-валидации [ править ]
Валидация на отложенных данных (Hold-Out Validation) [ править ]
Обучающая выборка один раз случайным образом разбивается на две части [math] T^l = T^t \cup T^
После чего решается задача оптимизации:
Метод Hold-out применяется в случаях больших датасетов, т.к. требует меньше вычислительных мощностей по сравнению с другими методами кросс-валидации. Недостатком метода является то, что оценка существенно зависит от разбиения, тогда как желательно, чтобы она характеризовала только алгоритм обучения.
Полная кросс-валидация (Complete cross-validation) [ править ]
Здесь число разбиений [math]C_l^
k-fold кросс-валидация [ править ]
Каждая из [math]k[/math] частей единожды используется для тестирования. Как правило, [math]k = 10[/math] (5 в случае малого размера выборки).
t×k-fold кросс-валидация [ править ]
Кросс-валидация по отдельным объектам (Leave-One-Out) [ править ]
Выборка разбивается на [math]l-1[/math] и 1 объект [math]l[/math] раз.
Преимущества LOO в том, что каждый объект ровно один раз участвует в контроле, а длина обучающих подвыборок лишь на единицу меньше длины полной выборки.
Недостатком LOO является большая ресурсоёмкость, так как обучаться приходится [math]L[/math] раз. Некоторые методы обучения позволяют достаточно быстро перенастраивать внутренние параметры алгоритма при замене одного обучающего объекта другим. В этих случаях вычисление LOO удаётся заметно ускорить.
Случайные разбиения (Random subsampling) [ править ]
Выборка разбивается в случайной пропорции. Процедура повторяется несколько раз.
Критерий целостности модели (Model consistency criterion) [ править ]
Не переобученый алгоритм должен показывать одинаковую эффективность на каждой части.
Нежное введение в перекрестную валидацию в k-кратном порядке
Дата публикации 2018-05-23
Он обычно используется в прикладном машинном обучении для сравнения и выбора модели для данной задачи прогнозного моделирования, потому что это легко понять, легко реализовать и приводит к оценкам навыков, которые, как правило, имеют меньшую систематическую ошибку, чем другие методы.
В этом уроке вы познакомитесь с кратким введением в процедуру перекрестной проверки в k-кратном порядке для оценки навыков моделей машинного обучения.
После завершения этого урока вы узнаете:
Обзор учебника
Этот урок состоит из 5 частей; они есть:
К-фолд перекрестная проверка
Процедура имеет единственный параметр, называемый k, который относится к числу групп, на которые следует разбить данную выборку данных. Таким образом, процедуру часто называют перекрестной проверкой в k-кратном порядке. Когда выбрано конкретное значение для k, оно может использоваться вместо k в ссылке на модель, например, k = 10 становится 10-кратной перекрестной проверкой.
Перекрестная проверка в основном используется в прикладном машинном обучении для оценки навыков модели машинного обучения на невидимых данных. То есть, использовать ограниченную выборку, чтобы оценить, как ожидается, что модель будет работать в целом, когда она используется для прогнозирования данных, которые не использовались во время обучения модели.
Это популярный метод, потому что его легко понять, и потому что он обычно дает менее предвзятую или менее оптимистичную оценку навыка модели, чем другие методы, такие как простое разделение поезда / теста.
Общая процедура выглядит следующим образом:
Важно отметить, что каждое наблюдение в выборке данных назначается отдельной группе и остается в этой группе в течение всей процедуры. Это означает, что каждому образцу дается возможность быть использованным в удерживающем наборе 1 раз и использоваться для обучения модели k-1 раз.
Также важно, чтобы любая подготовка данных до подгонки модели происходила из набора обучающих данных, назначенного CV, в цикле, а не в более широком наборе данных. Это также относится к любой настройке гиперпараметров. Невыполнение этих операций в цикле может привести кутечка данныхи оптимистическая оценка навыка модели.
Несмотря на все усилия статистических методологов, пользователи часто аннулируют свои результаты, непреднамеренно заглядывая в данные испытаний.
Результаты прогона перекрестной проверки в k-кратном порядке часто суммируются со средним значением баллов по модели. Хорошей практикой также является включение показателя дисперсии оценок навыков, таких как стандартное отклонение или стандартная ошибка.
Конфигурация к
Значение k должно быть тщательно выбрано для вашей выборки данных.
Неправильно выбранное значение для k может привести к неправильному представлению о навыке модели, например к оценке с высокой дисперсией (которая может сильно измениться в зависимости от данных, используемых для подгонки модели), или к большому смещению (например, переоценка мастерства модели).
Три общие тактики для выбора значения для k следующие:
Выбор k обычно составляет 5 или 10, но формального правила не существует. По мере увеличения k разница в размерах между обучающим набором и подмножествами повторной выборки уменьшается. Когда эта разница уменьшается, смещение техники становится меньше
Значение k = 10 очень распространено в области прикладного машинного обучения и рекомендуется, если вы пытаетесь выбрать значение для своего набора данных.
Подводя итог, можно найти компромисс между отклонением и смещением, связанный с выбором k при перекрестной проверке в k-кратном размере. Как правило, с учетом этих соображений каждый выполняет k-кратную перекрестную проверку с использованием k = 5 или k = 10, поскольку эти значения были показаны эмпирически для получения оценок частоты ошибок теста, которые не страдают ни от чрезмерно высокого смещения, ни от очень высокой дисперсии.
Если выбрано значение для k, которое неравномерно не разделяет выборку данных, то одна группа будет содержать оставшуюся часть примеров. Предпочтительно разбивать выборку данных на k групп с одинаковым количеством выборок, чтобы выборка всех баллов модели была эквивалентной.
Работал Пример
Чтобы конкретизировать процедуру перекрестной проверки, давайте рассмотрим работающий пример.
Представьте, что у нас есть образец данных с 6 наблюдениями:
Первым шагом является выбор значения для k, чтобы определить количество сгибов, используемых для разделения данных. Здесь мы будем использовать значение k = 3. Это означает, что мы будем перетасовывать данные, а затем разбивать данные на 3 группы. Поскольку у нас есть 6 наблюдений, каждая группа будет иметь равное количество 2 наблюдений.
Затем мы можем использовать образец, например, для оценки навыков алгоритма машинного обучения.
Три модели обучаются и оцениваются с каждым сгибом, дающим возможность быть продленным тестовым набором.
Затем модели отбрасываются после того, как они оценены, поскольку они выполнили свою задачу.
Оценки навыков собираются для каждой модели и суммируются для использования.
API перекрестной проверки
Нам не нужно реализовывать перекрестную проверку k-fold вручную. Библиотека scikit-learn предоставляет реализацию, которая разделит данный образец данных.
KFold ()класс scikit-learn можно использовать. Он принимает в качестве аргументов количество разбиений, независимо от того, нужно ли тасовать выборку, и начальное число для генератора псевдослучайных чисел, использовавшегося до перемешивания.
Например, мы можем создать экземпляр, который разбивает набор данных на 3 сгиба, перемешивает до разделения и использует значение 1 для генератора псевдослучайных чисел.
Трещина()Функция может быть вызвана в классе, где образец данных предоставляется в качестве аргумента. При повторном вызове split будет возвращать каждую группу наборов поездов и тестов. В частности, возвращаются массивы, содержащие индексы в исходной выборке данных наблюдений, которые будут использоваться для наборов поездов и тестов на каждой итерации.
Например, мы можем перечислить разбиения индексов для выборки данных, используя созданныеKFoldпример следующим образом:
Мы можем связать все это вместе с нашим небольшим набором данных, использованным в проработанном примере предыдущего раздела.
При выполнении примера выводятся конкретные наблюдения, выбранные для каждого поезда и тестового набора. Индексы используются непосредственно в исходном массиве данных для получения значений наблюдения.
Полезно, чтобы реализация k-кратной перекрестной проверки в scikit-learn предоставляется как операция компонента в более широких методах, таких как гиперпараметры модели поиска в сетке и оценка модели в наборе данных.
Тем не менее,KFoldЭтот класс можно использовать непосредственно для разделения набора данных перед моделированием, чтобы все модели использовали одинаковые разбиения данных. Это особенно полезно, если вы работаете с очень большими выборками данных. Использование одинаковых разбиений по алгоритмам может иметь преимущества для статистических тестов, которые вы, возможно, захотите выполнить с данными позже.
Варианты перекрестной проверки
Существует несколько вариантов процедуры перекрестной проверки по k-кратному критерию.
Вот три наиболее часто используемых варианта:
Библиотека scikit-learn предоставляет набор средств для перекрестной проверки. Вы можете увидеть полный список вAPI выбора модели,
расширения
В этом разделе перечислены некоторые идеи по расширению учебника, которые вы, возможно, захотите изучить.
Если вы исследуете какое-либо из этих расширений, я хотел бы знать.
Дальнейшее чтение
Этот раздел предоставляет больше ресурсов по теме, если вы хотите углубиться.
Сообщений
книги
статьи
Резюме
В этом учебном пособии вы обнаружили подробное введение в процедуру перекрестной проверки в k-кратном порядке для оценки навыков моделей машинного обучения.
В частности, вы узнали:
У вас есть вопросы?
Задайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.
Кросс-валидация (Cross-validation)
Кросс-валидация, которую иногда называют перекрестной проверкой, это техника валидации модели для проверки того, насколько успешно применяемый в модели статистический анализ способен работать на независимом наборе данных. Обычно кросс-валидация используется в ситуациях, где целью является предсказание, и хотелось бы оценить, насколько предсказывающая модель способна работать на практике. Один цикл кросс-валидации включает разбиение набора данных на части, затем построение модели на одной части (называемой тренировочным набором), и валидация модели на другой части (называемой тестовым набором). Чтобы уменьшить разброс результатов, разные циклы кросс-валидации проводятся на разных разбиениях, а результаты валидации усредняются по всем циклам.
Кросс-валидация важна для защиты от гипотез, навязанных данными («ошибки третьего рода»), особенно когда получение дополнительных данных затруднительно или невозможно.
Предположим, у нас есть модель с одним или несколькими неизвестными параметрами, и набор данных, на котором эта модель может быть оптимизирована (тренировочный набор). Процесс подгонки оптимизирует параметры модели и делает модель настолько подходящей под тренировочный набор, насколько это возможно. Если мы теперь возьмем независимый образец данных для валидации модели из того же источника, откуда мы взяли тренировочный набор данных, обычно обнаруживается, что модель описывает тестовые данные хуже, чем тренировочный набор. Это называется переподгонкой (overfitting), и особенно часто встречается в ситуациях, когда размер тренировочного набора невелик, или когда число параметров в модели велико. Кросс-валидация это способ оценить способность модели работать на гипотетическом тестовом наборе, когда такой набор в явном виде получить невозможно.
Распространенные типы кросс-валидации
Кросс-валидация по K блокам (K-fold cross-validation)
В этом случае исходый набор данных разбивается на K одинаковых по размеру блока. Из K блоков один оставляется для тестирования модели, а остающиеся K-1 блока используются как тренировочный набор. Процесс повторяется K раз, и каждый из блоков используется один раз как тестовый набор. Получаются K результатов, по одному на каждый блок, они усредняются или комбинируются каким-либо другим способом, и дают одну оценку. Преимущество такого способа перед случайным сэмплированием (random subsampling) в том, что все наблюдения используются и для тренировки, и для тестирования модели, и каждое наблюдение используется для тестирования в точности один раз. Часто используется кросс-валидация на 10 блоках, но каких-то определенных рекомендаций по выбору числа блоков нет.
В послойной кросс-валидации блоки выбираются таким образом, что среднее значение ответа модели примерно равно по всем блокам.
Валидация последовательным случайным сэмплированием (random subsampling)
Этот метод случайным образом разбивает набор данных на тренировочный и тестовый наборы. Для каждого такого разбиения, модель подгоняется под тренировочные данные, а точность предсказания оценивается на тестовом наборе. Результаты затем усредняются по всем разбиениям. Преимущество такого метода перед кросс-валидацией на K блоках в том, что пропорции тренировочного и тестового наборов не зависят от числа повторений (блоков). Недостаток метода в том, что некоторые наблюдения могут ни разу не попасть в тестовый набор, тогда как другие могут попасть в него более, чем один раз. Другими словами, тестовые наборы могут перекрываться. Кроме того, поскольку разбиения проводятся случайно, результаты будут отличаться в случае повторного анализа.
В послойном варианте этого метода, случайные выборки генерируются таким способом, при котором средний ответ модели равен по тренировочному и тестовому наборам. Это особенно полезно, когда ответ модели бинарен, с неравными пропорциями ответов по данным.
Поэлементная кросс-валидация (Leave-one-out, LOO)
Здесь отдельное наблюдение используется в качестве тестового набора данных, а остальные наблюдения из исходного набора – в качестве тренировочного. Цикл повторяется, пока каждое наблюдение не будет использовано один раз в качестве тестового. Это то же самое, что и K-блочная кросс-валидация, где K равно числу наблюдений в исходном наборе данных.
Оценка соответствия модели
Цель кросс-валидации в том, чтобы оценить ожидаемый уровень соответствия модели данным, независимым от тех данных, на которых модель тренировалась. Она может использоваться для оценки любой количественной меры соответствия, подходящей для данных и модели. Например, для задачи бинарной классификации, каждый случай в тестовом наборе будет предсказан правильно или неправильно. В этой ситуации коэффициент ошибки может быть использован в качестве оценки соответствия, хотя могут использоваться и другие оценки. Если предсказываемое значение распределено непрерывно, для оценки соответствия может использоваться среднеквадратичная ошибка, корень из среднеквадратичной ошибки или медианное абсолютное отклонение.
Применения
Кросс-валидация может использоваться для сравнения результатов различных процедур предсказывающего моделирования. Например, предположим, что мы интересуемся оптическим распознаванием символов, и рассматриваем варианты использования либо поддерживающих векторов (Support Vector Machines, SVM), либо k ближайших соседей (k nearest neighbors, KNN). С помощью кросс-валидации мы могли бы объективно сравнить эти два метода в терминах относительных коэффициентов их ошибок классификаций. Если мы будем просто сравнивать эти методы по их ошибкам на тренировочной выборке, KNN скорее всего покажет себя лучше, поскольку он более гибок и следовательно более склонен к переподгонке по сравнению с SVM.
Кросс-валидация также может использоваться для выбора параметров. Предположим, у нас есть 20 параметров, которые мы могли бы использовать в модели. Задача – выбрать параметры, использование которых даст модель с лучшими предсказывающими способностями. Если мы будем сравнивать подмножества параметров по их ошибкам на тестовом наборе, лучшие результаты получатся при использовании всех параметров. Однако с кросс-валидацией, модель с лучшей способностью к обобщению обычно включает только некоторое подмножество параметров, которые достаточно информативны.
Вопросы вычислительной производительности
Ограничения и неверное использование кросс-валидации
Кросс-валидация дает значимые результаты только когда тренировочный набор данных и тестовый набор данных берутся из одного источника, из одной популяции. В многих применениях предсказательных моделей структура изучаемой системы меняется со временем. Это может наводить систематические отклонения тренировочного и валидационного наборов данных. К примеру, если модель для предсказания цены акции тренируется на данных из определенного пятилетнего периода, нереалистично рассматривать последующий пятилетний период как выборку из той же самой популяции.
Если выполняется правильно, и наборы данных из одной популяции, кросс-валидация дает результат практически без смещений (bias). Однако, есть много способов использовать кросс-валидацию неправильно. В этом случае ошибка предсказания на реальном валидационном наборе данных скорее всего будет намного хуже, чем ожидается по результатам кросс-валидации.
Способы неверно использовать кросс-валидацию:
1. Использовать кросс-валидацию на нескольких моделях, и взять только результаты лучшей модели.
2. Проводить начальный анализ для определения наиболее информативного набора параметров, используя полный набор данных. Если отбор параметров требуется в модели предсказания, он должен проводиться последовательно на каждом тренировочном наборе данных. Если кросс-валидация используется для определения набора используемых моделью параметров, на каждом тренировочном наборе должна проводиться внутренняя кросс-валидация для определения набора параметров.
3. Позволять некоторым тренировочным данным попадать также и в тестовый набор – это может случиться из-за существования дублирующих наблюдений в исходном наборе.
Другие статьи по теме:
Yaroslav Efremov: Как-то не согласуются две фразы
1) Кросс-валидация может использоваться для сравнения результатов различных процедур предсказывающего моделирования.
2) Способы неверно использовать кросс-валидацию:
Использовать кросс-валидацию на нескольких моделях, и взять только результаты лучшей модели.
Почему нельзя за счет кросс-валидации выбрать модель? Пока вижу один минус, что если мы выбираем из тысячи похожих моделей, то скорее всего выберем ту, которая покажет лучшие результаты на кросс-валидации, а это будет ручная подгонка. Но если есть скажем 4 модели и их результаты отличаются в разы на валидационной выборки, то выбор оправдан…
mehanizator: во второй фразе говорится о результатах, а не о модели. для выбора модели использовать кросс-валидацию — это ок. ошибка когда каждый раз гоняются несколько моделей и берутся лучшие результаты.