Шрифт:
Интервал:
Закладка:
Чрезмерно подогнанное к данным дерево классификации для данных о «Титанике». Как на рис. 6.3, процентная доля в конце каждой ветви – это доля выживших из тренировочного набора; каждый новый пассажир, по прогнозу, выживет, если эта доля больше 50 %. Довольно странный перечень вопросов подтверждает мысль, что дерево слишком приспособлено к конкретным случаям в тренировочном наборе
Такое явление называется переобучением, или переподгонкой[134], и считается одним из самых важных вопросов при конструировании алгоритмов. Слишком усложняя алгоритм, мы фактически начинаем подгонять его под шум, а не под сигнал. Рэндел Манро (карикатурист, автор веб-комикса xkcd) придумал прекрасную иллюстрацию к переобучению, предложив правдоподобные «правила», которых до определенного момента придерживались американские президенты, но в итоге каждое все равно нарушалось[135]. Например:
• Никто из республиканцев не становился президентом, не победив в Палате представителей или Сенате – до Эйзенхауэра в 1952 году.
• Католики не могут победить – до Кеннеди в 1960 году.
• Никто не становился президентом после развода – до Рейгана в 1980 году.
И так далее, включая некоторые совершенно вычурные правила, скажем, такое:
• Никто из действующих президентов-демократов без боевого опыта не выигрывал у человека, чье первое имя дает больше очков в «Скрэббл»[136] – до тех пор, пока Билл Клинтон не победил Боба Доула в 1996 году (имя Билл дает шесть очков в «Скрэббл», а имя Боб – семь).
Переобучение происходит, когда мы заходим слишком далеко в стремлении приспособиться к локальным обстоятельствам, в благородном, но ложном порыве устранить смещение и учесть всю имеющуюся информацию. В обычных условиях мы бы аплодировали такой цели, однако эта очистка означает, что у нас становится меньше данных для работы и поэтому падает надежность. Стало быть, переобучение приводит к уменьшению смещения, но за счет большей неопределенности или разброса в оценках, поэтому защиту от него иногда называют дилеммой смещения – дисперсии.
Мы можем проиллюстрировать эту тонкую идею на следующем примере. Представьте огромную базу данных о продолжительности человеческой жизни, которая используется для предсказания вашего будущего здоровья, – например, ваши шансы дожить до 80 лет. Мы могли бы взять ваших сверстников с таким же, как у вас, социально-экономическим положением и посмотреть, что с ними случилось. Например, если их 10 тысяч и из них 80-летнего возраста достигли 8 тысяч, то можно оценить, что шансы дожить до 80 лет у вас и подобных вам людей составляют 80 %, причем можно быть вполне уверенным в этом числе, ведь оно основано на очень большой выборке.
Но такая оценка использует всего пару признаков, по которым вы сопоставляетесь с другими случаями из базы данных, и игнорирует множество индивидуальных характеристик, способных повлиять на наш прогноз, например недостаток внимания к своему здоровью или вредные привычки. Поэтому можно применить другую стратегию – найти более похожих на вас людей, скажем с тем же весом, ростом, артериальным давлением, уровнем холестерина, сходной физической активностью, которые курят, пьют, едят столько же, как и вы, и так далее. Предположим, что сопоставляя все больше и больше личных характеристик, мы сузили поиск до двух человек в базе данных, которые почти идеально совпадают с вами. Допустим, один дожил до 80, а второй – нет. Значит ли это, что ваши шансы достичь этого возраста равны 50 %? Эта величина в каком-то смысле имеет меньшее смещение, поскольку выборка вам максимально соответствует, но поскольку в ней всего два человека, оценка менее надежна, то есть у нее больше дисперсия.
Интуитивно понятно, что где-то между этими двумя крайними случаями есть золотая середина, и найти этот баланс трудно, но важно. Методы для устранения переобучения включают регуляризацию, когда поощряются сложные модели, но при этом влияние переменных приближается к нулю. Но, пожалуй, чаще всего используется простая, но мощная идея перекрестной проверки при конструировании алгоритма.
Важно проверять любые прогнозы на независимом тестовом наборе, который не использовался при обучении алгоритма, но мы это можем сделать только после окончания процесса разработки. Это укажет нам на наличие переобучения, но не поможет строить алгоритм. Однако мы можем сымитировать этот независимый тестовый набор, выделив на него, скажем, 10 % из тренировочных данных. Тогда мы отработаем алгоритм на оставшихся 90 %, а протестируем на выделенных 10 %. При этом процедуру можно провести не один раз – в нашем случае десять, ведь мы можем каждый раз брать в качестве тестового набора разные 10 процентов данных, и тогда у нас будет десять повторов – иными словами, десятикратная перекрестная проверка[137].
Все алгоритмы, описанные в данной главе, имеют какие-то настраиваемые параметры, которые предназначены главным образом для контроля сложности итогового алгоритма. Например, стандартная процедура построения дерева классификации – сначала сконструировать очень сложное дерево со множеством ветвей, намеренно сделав его переобученным, а затем обрезать дерево до чего-то более простого и надежного. Такая обрезка контролируется параметром сложности, который можно выбирать с помощью процедуры перекрестной проверки. Для каждой из создающихся при этом десяти выборок строится дерево для каждого из ряда параметров сложности. Затем для каждого значения параметра вычисляется средняя предсказательная эффективность по всем десяти перекрестным проверкам. До определенного момента эта средняя эффективность улучшается, а потом падает – когда деревья становятся слишком сложными. Оптимальное значение для параметра сложности – то, которое дает оптимум при перекрестной проверке, и далее оно используется для построения дерева на всем тренировочном наборе, которое и будет итоговым вариантом.
Десятикратная перекрестная проверка применялась как для выбора параметра сложности для дерева на рис. 6.3, так и для выбора параметров настройки во всех моделях, которые мы рассмотрим далее.
Регрессионные модели
Из главы 5 мы узнали, что суть регрессионной модели – построить простую формулу для предсказания результата. Переменной отклика для ситуации с «Титаником» будет результат типа «да/нет», который указывает, выжил человек или нет, поэтому логистическая регрессия уместна (как и в случае с операциями на сердце у детей, см. рис. 5.2).