Практический курс по ML: https://stepik.org/course/209247/
На предыдущем
занятии мы с вами увидели, как увеличение сложности модели приводит к ухудшению
ее обобщающих способностей, то есть, к переобучению:
А, значит, нам
нужно уметь оценивать качество найденных моделей .
Очевидно, что они, во-первых, должны показывать хорошие результаты на обучающей
выборке и, во-вторых, обобщаться на другие наблюдения ,
отсутствующие при обучении. То есть, модель не должна быть переобученной. И
здесь возникает закономерный вопрос, как определять качество найденных моделей?
Первый
показатель (средние потери на обучающей выборке) мы уже умеем определять – это
величина эмпирического риска:
А вот второй –
степень переобученности, несколько сложнее. Здесь есть ряд общепринятых
подходов. Рассмотрим их по порядку.
Оценка обобщающей способности по отложенной выборке (hold-out)
Первый вариант
достаточно простой и вполне очевидный. Нужно всю исходную размеченную выборку
разделить на две части: собственно, обучающую и отложенную (тестовую, hold-out). Обычно, такое
деление делается случайным образом (векторы данных отбираются случайно, без
повторений), например, в отношении 70% на 30%, то есть, 70% оставляют для
обучения, а 30% - для тестирования полученной модели. Затем, после процесса
обучения для найденной модели вычисляются
эмпирические риски для обучающей и тестовой выборок:
Если показатели
оказываются близкими, то делается вывод о приемлемости модели. Иначе, она
считается переобученной и ее следует скорректировать.
Недостатком
такого подхода является зависимость полученной оценки качества от способа
разбиения выборки на обучающую и отложенную. Может случайно получиться так, что
на обеих модель покажет хорошие результаты, а на практике, в процессе ее
применения качество будет заметно ниже. Это значит, мы неверно определили ее
обобщающие способности и такую модель нужно исправлять.
Скользящий контроль (leave-one-out)
Наверное, самый
объективный подход к оценке переобученности модели на основе разбиения
обучающей выборки – это, так называемый, скользящий контроль (leave-one-out). Идея очень
проста. Давайте из всей выборки убирать поочередно по одному вектору наблюдений
и обучаться каждый раз на оставшейся выборке. В итоге, у нас получится
множество разных моделей:
Затем, на их
основе сформируем общую модель:
которая бы
обладала лучшими обобщающими способностями. Как это можно сделать, я скажу чуть
позже. А здесь отмечу, что такой подход хоть и лишен недостатка предыдущего
(нам здесь уже не нужно решать какие наблюдения оставить в обучающей выборке, а
какие переместить в отложенную), но он, во-первых, вычислительно сложен, т.к.
процесс обучения повторяется большое число раз, а, во-вторых, нам нужно решить,
как на основе полученных моделей сформировать одну единую, чтобы она хорошо
решала поставленную задачу. Поэтому такой подход на практике для оценки
переобученности, обычно, не используют, а пользуются другим, несколько более
грубым методом, но более простым с точки зрения вычислений.
Кросс-валидация (cross-validation)
Этот метод
называют кросс-валидацией (по-английски cross-validation или k-fold). Здесь вся
выборка разбивается на отдельные группы наблюдений и на каждой итерации, одна
группа используется как проверочная, а другие составляют обучающее множество.
Для каждого обучающего набора формируется своя модель. В итоге, у нас получится
несколько разных моделей (по числу групп):
Затем, на их
основе формируется общая модель:
То есть,
кросс-валидация работает по тому же принципу, что и скользящий контроль, только
здесь мы оперируем не отдельными векторами, а группами векторов. Это
значительно сокращает объем вычислений и уже может быть использовано в практических
задачах на этапе построения модели.
Способы обобщения моделей
Итак, после
кросс-валидации, у нас получается несколько разных моделей. Как с их помощью
формировать единый ответ? Вообще, это отдельная большая тема, в которую я
сейчас не хочу глубоко погружаться, отмечу только два вполне очевидных и часто
применяемых подхода. В первом, самом простом случае, мы можем выбрать одну
модель, которая обладает лучшими измеренными показателями качества – это
точность на обучающей и отложенной выборках (или же только на отложенной).
Однако, вычисленные показатели качества и выбранная по ним модель, не
гарантируют, что она окажется лучшей (среди всех остальных) в реальных
условиях. Возможно, просто так «удачно» была разбита выборка, что именно для
этой модели показатели качества оказались лучше остальных, но ее обобщающие
способности оставляют желать лучшего. То есть, мы не можем полностью полагаться
на вычисленные характеристики – это, скорее, некоторые индикаторы, на которые
можно ориентироваться.
Поэтому существует
другой подход, в котором мы оставляем все модели и на этапе эксплуатации
пропускаем через них вектор входных признаков. Затем, путем голосования
выбираем значение, которое встретилось чаще. Это признак того, что оно наиболее
достоверное. Такой подход дает более устойчивые результаты, но требует
дополнительных вычислений, т.к. мы теперь каждый раз применяем не одну модель,
а сразу несколько.
К сожалению,
какого-то одного подхода, пригодного на все случаи жизни, здесь не существует.
И, решая каждый раз ту или иную задачу, инженер сам принимает решение, как
комбинировать полученные алгоритмы (модели) для выработки единого решения.
В дальнейшем, мы
в основном, будем использовать подход с одной отложенной выборкой и
формированием одной модели, поэтому данную тему отложим для самостоятельного
изучения. Пока на повестке у нас стоят гораздо более важные вопросы. В
частности, линейные модели классификации, которым будет посвящено следующее
занятие.
Практический курс по ML: https://stepik.org/course/209247/