Искусство статистики. Как находить ответы в данных — страница 22 из 56

[131]. Такая среднеквадратичная ошибка известна как показатель Бриера (названа в честь метеоролога Гленна Бриера, который описал этот метод в 1950 году).


Таблица 6.2

Вымышленные прогнозы «вероятности осадков»: будет дождь завтра в полдень в определенном месте или нет. Наблюдаемые результаты: 1 = был дождь, 0 = дождя не было. «Ошибка» – это разность между прогнозом и наблюдением, а показатель Бриера B – это среднеквадратичная ошибка. Показатель Бриера BC для климатических данных основан на использовании средних долговременных данных для дождя в это время года, и в нашем случае предполагается, что вероятность дождя составит 20 % для всех дней


К сожалению, сам по себе показатель Бриера не так легко истолковать, а потому трудно определить, насколько квалифицированно работает тот или иной синоптик. Лучше всего сравнивать его с контрольным показателем, основанным на исторических записях о климате. Такие климатические прогнозы не учитывают текущих условий и просто оценивают вероятность осадков как долю тех случаев, когда в этот день шел дождь. Подобный прогноз может делать кто угодно без каких-либо навыков – в табл. 6.2 мы условно считаем, что для каждого дня на этой неделе вероятность дождя составит 20 %. Это даст нам показатель Бриера, рассчитанный по климатическим историческим данным (мы назвали его BC), равный 0,28.

Любой приличный алгоритм прогнозирования должен работать лучше того, который основан только на исторических данных для этого дня, и наша система действительно улучшила показатель Бриера: BC – B = 0,28 – 0,11 = 0,17. Затем синоптик получает оценку мастерства, которая отражает пропорциональное уменьшение контрольного показателя – в нашем случае 0,61[132]. Иными словами, наш алгоритм на 61 % лучше, чем примитивный метод, использующий только исторические данные о климате.

Конечно, идеальная цель – оценка 100 %, однако такое возможно только в случае, когда показатель Бриера равен 0, то есть мы абсолютно точно предсказываем, будет дождь или нет. Это требует от синоптика особого мастерства, и реальные оценки качества работы при прогнозировании дождя сейчас составляют около 0,4 для прогнозов на следующий день и 0,2 для недельного прогноза[133]. Конечно, самый ленивый прогноз – это просто сказать: все, что происходит сегодня, будет происходить и завтра. Это обеспечивает идеальное соответствие с историческими данными (сегодняшним днем), но для предсказания будущего не слишком эффективно.

Если вернуться к примеру с «Титаником», то наивный алгоритм просто приписывает каждому пассажиру вероятность выживания 39 %, то есть долю выживших во всем тренировочном наборе. Такой алгоритм не использует никаких данных об отдельных людях и, по сути, эквивалентен прогнозированию погоды по историческим климатическим данным без учета текущих обстоятельств. Показатель Бриера для этого «не требующего умений» правила равен 0,232.

Напротив, показатель Бриера для простого дерева классификации составляет 0,139, то есть дает 40-процентное уменьшение по сравнению с наивным алгоритмом и поэтому демонстрирует значительные умения. Другой способ интерпретации числа 0,139: именно его вы бы получили, если бы приписали всем выжившим 63-процентные шансы на выживание, а всем погибшим – 63-процентные шансы на гибель. Посмотрим, можно ли улучшить показатель с помощью более сложных моделей, но сначала предупреждаю: они не должны быть слишком сложными.


Переобучение

Нам необязательно останавливаться на простом дереве классификации, показанном на рис. 6.3. Мы могли бы его усложнить, добавив больше ветвей, что позволило бы правильно классифицировать больше случаев из тренировочного набора, поскольку мы идентифицировали бы все больше и больше его особенностей.

На рис. 6.6 показано дерево, построенное с учетом многих уточняющих факторов. Его точность на тренировочном наборе составляет 83 %, то есть больше, чем у первоначального маленького дерева. Но при использовании алгоритма на тестовом наборе точность упадет до 81 %, то есть будет такой же, как и у маленького дерева, а показатель Бриера составит 0,150 – явно хуже, чем 0,139 для исходного дерева. Мы слишком хорошо подогнали наш алгоритм под тренировочный набор данных, и в результате его прогностическая способность начала снижаться.


Рис. 6.6


Чрезмерно подогнанное к данным дерево классификации для данных о «Титанике». Как на рис. 6.3, процентная доля в конце каждой ветви – это доля выживших из тренировочного набора; каждый новый пассажир, по прогнозу, выживет, если эта доля больше 50 %. Довольно странный перечень вопросов подтверждает мысль, что дерево слишком приспособлено к конкретным случаям в тренировочном наборе

Такое явление называется переобучением, или переподгонкой[134], и считается одним из самых важных вопросов при конструировании алгоритмов. Слишком усложняя алгоритм, мы фактически начинаем подгонять его под шум, а не под сигнал. Рэндел Манро (карикатурист, автор веб-комикса xkcd) придумал прекрасную иллюстрацию к переобучению, предложив правдоподобные «правила», которых до определенного момента придерживались американские президенты, но в итоге каждое все равно нарушалось[135]. Например:


• Никто из республиканцев не становился президентом, не победив в Палате представителей или Сенате – до Эйзенхауэра в 1952 году.

• Католики не могут победить – до Кеннеди в 1960 году.

• Никто не становился президентом после развода – до Рейгана в 1980 году.


И так далее, включая некоторые совершенно вычурные правила, скажем, такое:

• Никто из действующих президентов-демократов без боевого опыта не выигрывал у человека, чье первое имя дает больше очков в «Скрэббл»[136] – до тех пор, пока Билл Клинтон не победил Боба Доула в 1996 году (имя Билл дает шесть очков в «Скрэббл», а имя Боб – семь).


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

Мы можем проиллюстрировать эту тонкую идею на следующем примере. Представьте огромную базу данных о продолжительности человеческой жизни, которая используется для предсказания вашего будущего здоровья, – например, ваши шансы дожить до 80 лет. Мы могли бы взять ваших сверстников с таким же, как у вас, социально-экономическим положением и посмотреть, что с ними случилось. Например, если их 10 тысяч и из них 80-летнего возраста достигли 8 тысяч, то можно оценить, что шансы дожить до 80 лет у вас и подобных вам людей составляют 80 %, причем можно быть вполне уверенным в этом числе, ведь оно основано на очень большой выборке.

Но такая оценка использует всего пару признаков, по которым вы сопоставляетесь с другими случаями из базы данных, и игнорирует множество индивидуальных характеристик, способных повлиять на наш прогноз, например недостаток внимания к своему здоровью или вредные привычки. Поэтому можно применить другую стратегию – найти более похожих на вас людей, скажем с тем же весом, ростом, артериальным давлением, уровнем холестерина, сходной физической активностью, которые курят, пьют, едят столько же, как и вы, и так далее. Предположим, что сопоставляя все больше и больше личных характеристик, мы сузили поиск до двух человек в базе данных, которые почти идеально совпадают с вами. Допустим, один дожил до 80, а второй – нет. Значит ли это, что ваши шансы достичь этого возраста равны 50 %? Эта величина в каком-то смысле имеет меньшее смещение, поскольку выборка вам максимально соответствует, но поскольку в ней всего два человека, оценка менее надежна, то есть у нее больше дисперсия.

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

Важно проверять любые прогнозы на независимом тестовом наборе, который не использовался при обучении алгоритма, но мы это можем сделать только после окончания процесса разработки. Это укажет нам на наличие переобучения, но не поможет строить алгоритм. Однако мы можем сымитировать этот независимый тестовый набор, выделив на него, скажем, 10 % из тренировочных данных. Тогда мы отработаем алгоритм на оставшихся 90 %, а протестируем на выделенных 10 %. При этом процедуру можно провести не один раз – в нашем случае десять, ведь мы можем каждый раз брать в качестве тестового набора разные 10 процентов данных, и тогда у нас будет десять повторов – иными словами, десятикратная перекрестная проверка[137].

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