- Русские Блоги
- перекрестная проверка: сравнение нескольких методов перекрестной проверки
- train_test_split
- Standard Cross Validation
- Преимущества перекрестной проверки:
- Недостатки:
- Stratified k-fold cross validation
- Перекрестная валидация с одним пропуском
- Shuffle-split cross-validation
- Кросс-валидация (Cross Validation)
- Проверка
- Метод удержания (Holdout Method)
- Кросс-валидация по K блокам
- Стратифицированная кросс-валидация по K блокам
- Перекрестная проверка без исключения
- Кросс-валидация и Scikit-learn
- Распространенные типы кросс-валидации
- Кросс-валидация по K блокам (K-fold cross-validation)
- Валидация последовательным случайным сэмплированием (random subsampling)
- Поэлементная кросс-валидация (Leave-one-out, LOO)
- Оценка соответствия модели
- Применения кросс-валидации
- Вопросы вычислительной производительности
- Ограничения и неверное использование кросс-валидации
Русские Блоги
перекрестная проверка: сравнение нескольких методов перекрестной проверки
Цель оценки модели: благодаря оценке модели мы знаем, является ли текущая модель обучения хорошей или плохой, какова способность к обобщению? Чтобы узнать, можно ли его использовать для решения проблемы, если нет, то где проблема?
train_test_split
В задаче классификации мы обычно тренируем тренировочный набор train_test_split и делим его на две части: тренировка и тестирование, где тренировка используется для обучения модели, тестирование используется для оценки модели, а модель извлекается из набора данных поезда с помощью метода подбора, а затем вызывается метод оценки. Тестовый набор оценивается и оценивается, из оценки мы можем узнать текущий уровень подготовки модели.
Выход:
output: Test set score:0.96
Тем не менее, этот способ сохранения: выполняется только одно деление, и результаты данных случайны. Если в определенном делении обучающий набор легко изучить, то все тестовые наборы Сложные данные приведут к неудовлетворительным конечным результатам, и наоборот.
Standard Cross Validation
С учетом недостатков метода оценки модели, разделенного на train_test_split выше, предлагается перекрестная проверка перекрестной проверки.
Перекрестная проверка: Короче говоря, это означает несколько разделов train_test_split: каждое разделение, обучение, тестирование и оценка выполняются на разных наборах данных для получения результата оценки; 5-кратная перекрестная проверка, что означает, что исходный набор данных делится на 5 раз, каждый раз, когда проводится обучение и оценка, и, наконец, результаты оценки после 5 разделений. Как правило, результаты оценки этих оценок усредняются для получения окончательного оценка. К-кратная перекрестная проверка, где k обычно составляет 5 или 10.
Преимущества перекрестной проверки:
- Первоначально принятый метод train_test_split, разделение данных является случайным, перекрестная проверка через несколько разделений значительно уменьшает вероятность, вызванную этим случайным разделением. В то же время, благодаря нескольким разделениям и множественному обучению, модель может также сталкиваться с различными Данные, чтобы улучшить его способность к обобщению;
По сравнению с оригинальным train_test_split использование данных более эффективно. train_test_split, обучающий набор по умолчанию и соотношение наборов тестов составляет 3: 1, а для перекрестной проверки, если это 5-кратная перекрестная проверка, набор тестов для коэффициента обучающих наборов равен 4: 1; 1. Чем больше объем данных, тем выше точность модели!
Недостатки:
Этот метод перекрестной проверки с коротким ответом можно увидеть на приведенном выше рисунке. Каждый раз данные делятся поровну. Представьте себе, будет ли ситуация: набор данных имеет 5 категорий, а извлеченные данные точно Пять категорий разделены на категории, то есть первая кратность равна 0, вторая кратность равна 1 и т. Д., Такие результаты приведут к обучению модели, характеристики данных в наборе тестов не будут изучены, поэтому Оценка модели очень низкая, даже 0,! Чтобы избежать этой ситуации, появились другие различные методы перекрестной проверки.
Stratified k-fold cross validation
Стратифицированная перекрестная проверка по k-кратному критерию: Прежде всего, она относится к типу перекрестной проверки. Иерархическая означает, что в каждом сгибе поддерживается пропорциональное отношение каждой категории в исходных данных, например: исходные данные имеют 3 Соотношение составляет 1: 2: 1, и применяется трехкратная иерархическая перекрестная проверка. Затем в разделенном 3-кратном случае категория данных в каждом цикле поддерживает соотношение 1: 2: 1, такие результаты проверки более достоверны.
В обычных условиях вы можете установить параметр cv для управления несколькими сгибами, но мы хотим контролировать его деление и т. д., поэтому KFold, KFold управляют сгибами деления, вы можете контролировать количество сгибов деления, Нарушать ли порядок и т. Д., Можно назначить cv для управления делением.
Перекрестная валидация с одним пропуском
Перекрестная проверка по принципу «оставить один раз»: это специальный метод перекрестной проверки. Как следует из названия, если размер выборки равен n, тогда k = n, выполните n-кратную перекрестную проверку, оставляя по одной выборке за раз для проверки. В основном для небольших выборочных данных.
Shuffle-split cross-validation
Более гибкое управление: вы можете контролировать количество итераций деления, соотношение набора тестов и обучающего набора каждый раз (то есть могут быть ситуации, когда ни обучающий набор, ни тестовый набор недоступны);
demo:
Источник
Кросс-валидация (Cross Validation)
Кросс-валидация (перекрестная проверка) – это метод оценки Моделей (Model) Машинного обучения (ML) путем обучения нескольких из них на подмножествах доступных входных данных и их оценки на другом дополнительном подмножестве. Такая проверка используется для обнаружения Переобучения (Overfitting), т.е. неспособности распознать паттерн.
Всегда необходимо проверять стабильность предсказывающего Алгоритма (Algorithm): нам нужна уверенность в том, что модель имеет представление о большинстве шаблонов в данных, что ее эффективность не падает от шумных данных, или, другими словами, у нее низкий уровень Смещения (Bias) и Дисперсии (Variance).
Проверка
Валидация – это процесс принятия решения о том, приемлемы ли числовые результаты, определяющие предполагаемые взаимосвязи между переменными в качестве характеристики данных. Как правило, оценка Ошибки (Error) для модели выполняется после обучения, более известного как оценка Остатков (Residuals). Мы выполняем численную оценка ошибкой обучения – разницы в предсказанных и истинных ответах. Однако это только дает нам представление о том, насколько хорошо модель работает с Тренировочными данными (Train Data). Однако вероятно, что модель склонна к переобучению или Недообучению (Underfitting). Проблема этого метода оценки заключается в том, что он не гарантирует приемлемый уровень обобщения новых неизвестных данных.
Метод удержания (Holdout Method)
Простое решение вышеописанной проблемы заключается в удержании части обучающих данных и использовании ее для оценки предсказательной способности. Ошибка сообщает затем, как наша модель работает с новыми данными или валидационным набором. Хотя этот метод не требует дополнительных вычислительных затрат и лучше, чем традиционная проверка, он все же подвержен высокой дисперсии. Неизвестно, какие точки данных попадут в набор для проверки, и результат может быть совершенно разным для каждой случайной Выборки (Sample).
Кросс-валидация по K блокам
Поскольку все возможные варианты загрузить в модель непросто, удержание части Датасета (Dataset) для проверки создает проблему недообучения. Уменьшая объем обучающих данных, мы рискуем потерять важные закономерности и тенденции в наборе, что, в свою очередь, увеличивает ошибку, вызванную смещением. Итак, нам нужен метод, который предоставляет достаточно данных для обучения модели, а также оставляет достаточно данных для проверки. Кросс-валидация по K блокам (K-Fold Cross Vaidation) делает именно это.
При K-Fold проверке данные делятся на k подмножеств. Теперь удержание повторяется k раз, так что каждый из k подмножеств используется в качестве проверочного набора, а другие подмножества k-1 объединяются, чтобы сформировать обучающий набор. Ошибка усредняется по всем k испытаниям, чтобы получить обощенную эффективность нашей модели. Каждая точка данных попадает в набор для проверки ровно один раз и попадает в обучающий набор k-1 раз. Это значительно снижает смещение, поскольку мы используем большую часть данных для подгонки, а также значительно сокращаем дисперсию, поскольку большая часть данных также используется в наборе для проверки. Перестановка тренировочного и тестового наборов также повышает эффективность этого метода. По умолчанию K равен 5 или 10, но может принимать и любое другое значение.
Стратифицированная кросс-валидация по K блокам
В некоторых случаях может быть большой естественный дисбаланс. Например, в датасете о ценах на недвижимость может быть большое количество домов с высокой ценой. Или в случае Классификации (Classification), представителей одного класса может быть в несколько раз больше, чем другого. Для таких ситуаций и делается небольшое изменение в методике перекрестной проверки, так что каждый блок содержит примерно такую же пропорцию классов. Этот вариант проверки также известен как стратифицированная кросс-валидация по K блокам.
Вышеупомянутые методы называют неисчерпывающими методами перекрестной проверки. Они не вычисляют все способы разделения исходной выборки, т.е. вам просто нужно решить, сколько подмножеств необходимо сделать. Кроме того, это приближения метода, описанного ниже, также называемого исчерпывающим методом, который вычисляет все возможные способы разделения данных на обучающие и тестовые наборы.
Перекрестная проверка без исключения
Leave-P-Out Cross Validation (LPO) оставляет P точек данных за пределами обучающего набора, т.е. если в исходной выборке имеется N точек данных, тогда N-P выборок используются для обучения модели, а P точек используются в качестве набора для проверки. Это повторяется для всех комбинаций, в которых исходный образец может быть отделен таким образом, а затем ошибка усредняется для всех испытаний, чтобы оценить общую эффективность.
Этот метод является исчерпывающим в том смысле, что он должен обучать и проверять модель для всех возможных комбинаций, а для умеренно больших P он может стать вычислительно невыполнимым.
Частным случаем этого метода является P = 1. Он известен как Поэлементная кросс-валидация (LOO). Этот метод предпочтительнее предыдущего, потому что не страдает от массивных вычислений, и количество возможных комбинаций равно количеству точек данных в исходной выборке (N).
Перекрестная проверка – очень полезный метод оценки эффективности вашей модели, особенно в тех случаях, когда вам нужно уменьшить переобучение. Это также полезно при определении Гиперпараметров (Hyperparameter) при поиске наименьшей ошибки.
Кросс-валидация и Scikit-learn
Давайте посмотрим, как кросс-валидация реализована в SkLearn. Для начала импортируем необходимые библиотеки:
Используем датасет о пациентах, у которых диагностируют диабет. Отделим Предикторы (Predictor Variable) от Целевой переменной (Target Variable), создав объекты X и y соответственно. Для совершенствования модели используем так называемую Регуляризацию Лассо (L1 Regularization):
Создадим объект cv_results , в который загрузим результаты перекрестной проверки. Помимо переданных аргументов – типа регуляризации lasso , предикторов и целевой переменной, мы также определяем, насколько частей разделять датасет ( cv = 3 ):
Отсортированный от большего к меньшему список точностей выглядит весьма плачевно: линейная модель справилась лишь с 33% наблюдений:
Перезапустим перекрестную проверку с другими настройками. Теперь мы используем стратегию оценки производительности r2 , и отрицательное значение Среднеквадратической ошибки (MSE – Mean Squared Error):
Ну что ж, модель учебная, так что низкая предсказательная способность здесь не главное, хоть результат и улучшился до 39%. Процесс совершенствования модели здесь только начинается, и MSE каждой итерации – прекрасный способ сравнивать между собой качество последующих апгрейдов:
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.
Автор оригинальной статьи: @prashantgupta17
Источник
Перекрёстная проверка (кросс-валидация, Cross-validation) — метод оценки аналитической модели и её поведения на независимых данных. При оценке модели имеющиеся в наличии данные разбиваются на k частей. Затем на k−1 частях данных производится обучение модели, а оставшаяся часть данных используется для тестирования. Процедура повторяется k раз; в итоге каждая из k частей данных используется для тестирования. В результате получается оценка эффективности выбранной модели с наиболее равномерным использованием имеющихся данных.
Обычно кросс-валидация используется в ситуациях, где целью является предсказание, и хотелось бы оценить, насколько предсказывающая модель способна работать на практике. Один цикл кросс-валидации включает разбиение набора данных на части, затем построение модели на одной части (называемой тренировочным набором), и валидация модели на другой части (называемой тестовым набором). Чтобы уменьшить разброс результатов, разные циклы кросс-валидации проводятся на разных разбиениях, а результаты валидации усредняются по всем циклам.
Кросс-валидация важна для защиты от гипотез, навязанных данными («ошибки третьего рода»), особенно когда получение дополнительных данных затруднительно или невозможно.
Предположим, у нас есть модель с одним или несколькими неизвестными параметрами, и набор данных, на котором эта модель может быть оптимизирована (тренировочный набор). Процесс подгонки оптимизирует параметры модели и делает модель настолько подходящей под тренировочный набор, насколько это возможно. Если мы теперь возьмем независимый образец данных для валидации модели из того же источника, откуда мы взяли тренировочный набор данных, обычно обнаруживается, что модель описывает тестовые данные хуже, чем тренировочный набор. Это называется переподгонкой (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 параметров, которые мы могли бы использовать в модели. Задача – выбрать параметры, использование которых даст модель с лучшими предсказывающими способностями. Если мы будем сравнивать подмножества параметров по их ошибкам на тестовом наборе, лучшие результаты получатся при использовании всех параметров. Однако с кросс-валидацией, модель с лучшей способностью к обобщению обычно включает только некоторое подмножество параметров, которые достаточно информативны.
Вопросы вычислительной производительности
Большинство форм кросс-валидации достаточно просты для реализации, если имеется готовая реализация метода предсказания. В частности, метод предсказания нужен только в виде «черного ящика», нет нужды лезть в детали его реализации. Если метод предсказания достаточно ресурсоемок в тренировке, кросс-валидация может быть медленной, поскольку тренировка выполняется последовательно много раз. В некоторых случаях, таких как метод наименьших квадратов или ядерная регрессия, кросс-валидация может быть существенно ускорена предварительным вычислением некоторых значений, которые используются повторно на тренировке, или используя «правила обновления», такие как формулу Sherman-Morrison. Однако нужно быть осторожным, чтобы обеспечить полное отделение валидационного набора данных от тренировочного, иначе может случиться смещение (bias). Крайний пример ускорения кросс-валидации случается в случае линейной регрессии, где результаты кросс-валидациии имеют явную аналитическую форму, известную как PRESS (prediction residual error sum of squares).
Ограничения и неверное использование кросс-валидации
Кросс-валидация дает значимые результаты только когда тренировочный набор данных и тестовый набор данных берутся из одного источника, из одной популяции. В многих применениях предсказательных моделей структура изучаемой системы меняется со временем. Это может наводить систематические отклонения тренировочного и валидационного наборов данных. К примеру, если модель для предсказания цены акции тренируется на данных из определенного пятилетнего периода, нереалистично рассматривать последующий пятилетний период как выборку из той же самой популяции.
Если выполняется правильно, и наборы данных из одной популяции, кросс-валидация дает результат практически без смещений (bias). Однако, есть много способов использовать кросс-валидацию неправильно. В этом случае ошибка предсказания на реальном валидационном наборе данных скорее всего будет намного хуже, чем ожидается по результатам кросс-валидации.
Способы неверно использовать кросс-валидацию:
1. Использовать кросс-валидацию на нескольких моделях, и взять только результаты лучшей модели.
2. Проводить начальный анализ для определения наиболее информативного набора параметров, используя полный набор данных. Если отбор параметров требуется в модели предсказания, он должен проводиться последовательно на каждом тренировочном наборе данных. Если кросс-валидация используется для определения набора используемых моделью параметров, на каждом тренировочном наборе должна проводиться внутренняя кросс-валидация для определения набора параметров.
3. Позволять некоторым тренировочным данным попадать также и в тестовый набор – это может случиться из-за существования дублирующих наблюдений в исходном наборе.
Источник