Разберись в Data Science — страница 13 из 19

Освойте модели классификации

Алгоритм машинного обучения заходит в бар.

Бармен спрашивает: «Что будете?»

Алгоритм отвечает: «А что заказали остальные?»

– Чет Хаасе (@chethaase)

В предыдущей главе мы говорили о контролируемом обучении с помощью моделей регрессии, которые позволяют предсказывать численные значения (вроде объема продаж) путем подгонки модели к набору признаков. Но что, если вам требуется предсказать конкретный результат? Например, захочет ли человек, обладающий определенным набором демографических характеристик, купить книгу о данных? Если вы когда-нибудь задавались вопросом о том, как компании оценивают вероятность того, что вы щелкнете по тому или иному рекламному объявлению, купите продукт (и какой именно), не сможете выплатить кредит, взятый на покупку автомобиля, пройдете собеседование или чем-нибудь заболеете, то эта глава для вас.

В таких задачах, где нужно предсказать категориальную переменную (то есть метку), необходимо использовать модели классификации.

Введение в классификацию

Модели, предсказывающие два варианта, называются моделями бинарной классификации. Модели, используемые для предсказания множества классов, называются моделями многоклассовой классификации[92]. Оценка вероятности того, что человек не сможет погасить автокредит, – пример задачи бинарной классификации (да/нет), а предсказание того, какую машину купит человек («Honda», «Toyota», «Ford» и так далее), – пример задачи многоклассовой классификации. Чтобы не усложнять, мы сосредоточимся на задачах бинарной классификации. Просто имейте в виду, что дополнительные классы логично продолжают те темы, которые мы обсудим в этой главе.

Результаты применения некоторых моделей классификации часто делятся на «положительные» или «отрицательные». Как вы помните, научная проверка осуществляется в форме утверждения, а значит, вы должны истолковывать положительное и отрицательное наблюдение как означающее «да» и «нет» соответственно. Это позволяет отделить наблюдения, демонстрирующие действие (щелчок по кнопке, покупка товара, дефолт по кредиту, наличие заболевания), от тех, которые этого не делают. В других случаях – например, при предсказании принадлежности избирателя к политической партии – вам следует четко определить, какой класс является «положительным», а какой «отрицательным», чтобы избежать путаницы. Например, то, что вы определяете принадлежность избирателя к демократам или республиканцам как положительную или отрицательную в своей модели, – не оценка этой принадлежности, а ее произвольное обозначение. Как главный по данным вы должны убедиться в том, что все члены команды одинаково понимают используемые в модели обозначения.

Чему вы научитесь

В этой главе мы будем использовать набор данных о человеческих ресурсах для описания следующих моделей классификации:

– логистическая регрессия;

– деревья решений;

– ансамблевые методы.


Логистическая регрессия[93] и деревья решений чаще всего изучаются в рамках курсов по науке о данных и широко используются в программном обеспечении. Простота применения и интерпретируемость делают их идеальным выбором для решения некоторых задач. Однако, как и все прочие алгоритмы, описанные в этой книге, они не лишены недостатков.

Мы также познакомим вас с ансамблевыми методами, которые постепенно становятся новым стандартом для специалистов по работе данных, особенно для участников соответствующих соревнований[94].

Во второй половине этой главы мы более подробно рассмотрим проблему утечки данных и переобучения. Обсуждению точности мы посвятим целый раздел в конце главы, поскольку понимание этого термина (в контексте данных) требует рассмотрения ряда нюансов. А мы хотим уберечь вас от самых распространенных ошибок.

Постановка задачи классификации

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

К счастью, у вашей компании есть набор исторических данных, которые можно использовать для обучения модели, – информация о каждом соискателе и метка «да/нет», говорящая о том, был ли он приглашен на собеседование. Используя исторические данные и такой инструмент, как логистическая регрессия, вы могли бы разработать прогностическую модель, которая использует содержащуюся в заявке информацию в качестве входных данных, например, средний балл, год обучения, специализация, количество внеклассных занятий, и сообщает о том, стоит ли предлагать соискателю пройти собеседование. Если она окажется эффективной, это избавит вас от необходимости просматривать резюме вручную.

Как можно решить эту задачу? Для начала познакомимся с логистической регрессией.

Логистическая регрессия

Начнем с простого и рассмотрим данные из десяти прошлых заявок, используя в качестве входных параметров только средний балл. Поскольку компьютеры понимают лишь числа, вы можете преобразовать ответы «да» и «нет» в значения 1 и 0 соответственно, то есть 1 обозначает положительный класс. Данные представлены в табл. 10.1. Общая тенденция неудивительна: студенты с более высоким средним баллом имеют больше шансов получить приглашение на собеседование.


Табл. 10.1. Простой набор данных для логистической регрессии: использование среднего балла для прогнозирования вероятности приглашения на собеседование


Если бы вы попытались применить к этим данным метод линейной регрессии, описанный в предыдущей главе, вы получили бы весьма странные результаты. Например, если мы введем данные из табл. 10.1 в статистическую программу и сгенерируем регрессионную модель, то получим уравнение следующего вида:


Приглашение = (0,5) × Средний балл – 1,1


Однако давайте задумаемся об этой модели. Предположим, что средний балл нового соискателя составляет 2,0. В этом случае регрессионная модель выдала бы результат: Приглашение = (0,5) × (2,0) – 1,1 = –0,1. А если бы средний балл кандидата составлял 4,0, то результат был бы равен 0,9. Но что означают числа –0,1 и 0,9 в контексте предсказания того, получит ли кандидат приглашение на собеседование? (Мы тоже точно не знаем.)

Что могло бы оказаться полезным, так это прогноз вероятности получения такого приглашения на основе среднего балла соискателя. Например, вы знаете, что для соискателей со средним баллом 2,0 вероятность получения приглашения на собеседование составляет 4 %, а для соискателей со средним баллом 4,0 – 92 %. Эта информация имеет отношение к поставленной задаче, поскольку позволяет вам ввести правила классификации будущих кандидатов. Однако помните о том, что значения вероятности должны находиться в пределах от 0 до 1 включительно, а модели регрессии не работают в рамках этих ограничений и могут выдавать абсолютно любое значение. Поэтому линейная регрессия не является оптимальным методом для решения данной задачи.

Таким образом, вам нужно как-то ограничить результат решения уравнения вида y = mx + b, чтобы гарантировать его нахождение в подходящем диапазоне вероятностей. Именно это и делает логистическая регрессия: она «втискивает» выходные данные в диапазон от 0 до 1, предоставляя пользователю вероятность принадлежности результата к положительному классу (в данном случае: приглашение = «да»).

Рассмотрим уравнение логистической регрессии:


Вероятность принадлежности к положительному классу при условии



Вам наверняка уже знаком фрагмент mx+b, поскольку это формула линейной регрессии. Только теперь она является частью уравнения, называемого логистической функцией (отсюда и название логистической регрессии)[95], которая гарантирует то, что полученное число является значением вероятности.

Для большей ясности рассмотрим несколько графиков. На рис. 10.1 представлены три диаграммы рассеяния, построенные на основе данных из табл. 10.1. (В предыдущей главе при построении «линии наилучшего соответствия» мы получили похожий набор из трех графиков.) Каждый из этих графиков отражает разный набор входных значений для m и b в уравнении (1). Напомним, что в случае линейной регрессии значения m и b модулировали оптимальное положение линии, минимизирующее величину ошибки, выражаемую суммой квадратов. Но мы установили, что прямая линия линейной регрессии не может хорошо соответствовать этим данным, поскольку выходит за пределы 0 слева и за пределы 1 справа. Однако уравнение (1) вне зависимости от значений m и b всегда будет давать S-образную кривую, лежащую в диапазоне от 0 до 1.


Рис. 10.1. Подгонка различных моделей логистической регрессии к данным. Модель справа соответствует им лучше всего


Проанализируйте левый и средний графики на рис. 10.1 и определите их слабые места. На левом графике пунктирной линией показана модель, которая слишком уверенно предсказывает то, что высокий средний балл приведет к приглашению на собеседование, упуская при этом кандидата со средним баллом 3,5, который это приглашение не получил. Модель, показанная на среднем графике, выдает неоправданно низкую вероятность для студентов с низким средним баллом. Согласно ей, студент со средним баллом в 2,8, которого пригласили на собеседование, имел на это почти нулевой шанс. Крайний правый график на рис. 10.1 может похвастаться оптимальным балансом. Этот результат применения алгоритма логистической регрессии наилучшим образом уравновешивает левую и среднюю диаграммы и с математической точки зрения является оптимизированным решением для имеющихся точек данных. Полученная в результате модель логистической регрессии имеет следующее уравнение:


Вероятность получения приглашения при данном среднем балле =



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

Логистическая регрессия: что дальше?

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

Применить ее можно следующим образом. На рис. 10.2 показана вероятность приглашения на собеседование для студента со средним баллом 2,0, согласно нашей модели логистической регрессии. Шанс получить такое приглашение для этого человека составляет около 4 %. Кандидат, повышающий свой средний балл с 2,0 до 3,0, повышает вероятность получения приглашения на собеседование с 4 до 41 %, то есть разница составляет 37 %. Однако увеличение среднего балла еще на одну единицу, с 3,0 до 4,0, повышает вероятность с 41 до 92 %; здесь разница составляет целых 51 %! Обратите внимание на то, что при использовании моделей логистической регрессии влияние дополнительного балла на вероятность приглашения не является постоянным. В этом заключается еще одно отличие логистической регрессии от линейной: в случае линейной регрессии увеличение входной переменной на одну единицу всегда одинаково влияет на результат, каким бы ни было начальное значение.


Рис. 10.2. Применение модели логистической регрессии для прогнозирования вероятности приглашения при среднем балле равном 2, 3 и 4


Сама по себе логистическая регрессия не скажет вам, следует ли пригласить на собеседование того или иного человека или нет. Скорее она сообщает вам вероятность такого приглашения. Если вы хотите автоматизировать процесс принятия решений с помощью логистической регрессии, вам необходимо задать точку отсечения (пороговое значение), также известное как решающее правило; оно определяет реализацию того, чему научилась ваша модель. Если вы зададите точку отсечения на отметке 90 %, то есть будете рассматривать только те заявки, средний балл в которых предполагает 90 %-ную вероятность приглашения на собеседование, то, скорее всего, сделаете меньше предложений. С другой стороны, если вы готовы рассматривать заявки соискателей, шанс на приглашение которых, исходя из прошлых данных, составляет 60 %, то увидите гораздо больше кандидатов. Задание точек отсечения требует участия экспертов в предметной области.


Как говорилось ранее, коэффициент любой регрессионной функции говорит о взаимосвязях между входными и выходными данными. С первого взгляда понятно, что значение коэффициента для среднего балла в уравнении (2) является положительным и составляет 2,9. Это говорит о том, что более высокий средний балл повышает шансы человека на получение приглашения. В данном случае это не столь уж сногсшибательная новость, однако для исследователей, предсказывающих вероятность развития рака на основе определенных биомаркеров, это может иметь большое значение[96].

На что следует обратить внимание при работе с логистической регрессией

Моделям логистической регрессии свойственны те же проблемы, что и моделям линейной регрессии, которые мы подробно рассмотрели в предыдущей главе, а именно:


• Пропущенные переменные. Алгоритм не может учиться на данных, которых нет.

• Мультиколлинеарность. Коррелированные входные признаки могут сильно исказить вашу интерпретацию коэффициентов модели, а иногда даже сделать положительный коэффициент отрицательным (или наоборот).

• Экстраполяция. В случае с логистической регрессией проблема с экстраполяцией стоит не столь остро, как в случае с линейной, потому что ее выходные данные всегда находятся в пределах диапазона от 0 до 1. Однако расслабляться все-таки не следует. Предсказание значений за пределами диапазона обучающих данных может привести к чрезмерно уверенным оценкам вероятностей, поскольку эти прогнозные значения асимптотически приближаются к единице.


Разумеется, при использовании логистической регрессии следует избегать и других ошибок, которые мы обсудим в конце главы.

Деревья решений

Некоторых людей отталкивает (и, возможно, пугает) математика, связанная с использованием логистической регрессии. Кроме того, далеко не каждую взаимосвязь между входными и выходными данными можно описать с помощью линейной модели y = mx + b. Альтернативный, более понятный и простой для визуализации подход – дерево решений. Деревья решений разбивают набор данных на несколько частей, предоставляя список правил наподобие блок-схемы, которыми можно руководствоваться при прогнозировании.

Возьмем, к примеру, набор данных, приведенных в табл. 10.2. Здесь вы видите выборку данных о десяти студентах (из 300), которые подали заявку и были приглашены на собеседование в вашу компанию. Вместо того чтобы использовать средний балл в качестве единственного входного параметра для своей модели, вы решаете проанализировать все признаки, чтобы выяснить, как приглашения на интервью делались в прошлом. Обратите внимание на то, что в этом наборе данных на собеседование были приглашены 120 студентов (то есть 40 %).


Табл. 10.2. Фрагмент набора данных о стажерах. Специализации студентов таковы: Инф. = Информатика, Экон. = Экономика, Стат. = Статистика и Биз. = Бизнес.


Если вы хотите использовать эти признаки, чтобы понять, кто получил приглашение, а кто нет, вы можете самостоятельно вывести несколько правил. Например, студенты с высоким средним баллом, участвующие во внеклассных занятиях, вероятно, имеют больше шансов получить приглашение. Но какой средний балл вы использовали бы для «разделения» совокупности студентов? 3,0? 3,5? И с помощью какой информации вы бы обосновали свое решение? Как вы уже, вероятно, поняли, самостоятельное выведение правил – чрезвычайно сложная задача. К счастью, алгоритм для создания дерева решений может позаботиться об этом за вас. Он ищет входной признак и его значение, которое наилучшим образом отличает студентов, получивших приглашение на интервью, от тех, кто его не получил. Затем он находит следующий признак, позволяющий разделить уже эти две группы и так далее.

Мы прогнали наш набор данных через алгоритм под названием CART[97] и сгенерировали дерево решений, изображенное на рис. 10.3. Оно больше похоже на перевернутое дерево, состоящее из «узлов», «ветвей» и «листьев» решений, в котором окончательный прогноз определяется листом. Давайте обойдем это дерево, чтобы разобраться в том, как оно работает.


Рис. 10.3. Простой алгоритм дерева решений, примененный к набору данных о стажерах


Предположим, что соискатель по имени Эллен учится на втором курсе, имеет средний балл 3,6, специализируется на изучении информатики и занимается спортом. Эти данные можно закодировать следующим образом: {Ср_балл = 3,6, Курс = 2, Специальность = Инф., Число_ВЗ = 1}, где Число_ВЗ означает «число внеклассных занятий».

В самом верху рис. 10.3 находится корневой узел, указывающий на признак, позволяющий лучше всего разделить данные; здесь это средний балл. Средний балл Эллен составляет 3,6, поэтому она переходит в правую ветвь к следующему узлу принятия решений: Число_ВЗ. Ее Число_ВЗ равно 1, поэтому она переходит в левую ветвь к следующему узлу принятия решений: Специальность. Студенты, специализирующиеся на изучении информатики, переходят направо, и тут в дело снова вступает такой признак, как средний балл. Средний балл Эллен составляет не менее 3,5, поэтому вы можете предсказать «Да», она будет приглашена на собеседование.

Обратите внимание на то, как это дерево раскрывает взаимодействия входных признаков. В данном случае небольшое количество внеклассных занятий компенсируется наличием высокого среднего балла по информатике или статистике.

Числа на листьях в нижней части рис. 10.3 подытоживают разделение обучающих данных, произведенное деревом решений. Крайний справа лист имеет три точки данных: {Да, 1,00 и 17 %}. Это говорит о том, что в прошлом 100 % соискателей со средним баллом ≥ 3,4 и как минимум тремя внеклассными занятиями были приглашены на собеседование вне зависимости от своей специализации. (Вы можете это увидеть, если проследите путь от этого листа до корневого узла.) Для любого нового кандидата, соответствующего этим критериям, прогнозным значением будет «Да», потому что в прошлом процент соискателей, попадающих в этот лист, превышал 50 %. В данном случае речь идет о 51 соискателе, на которых приходилось 17 % обучающих данных.

Крайний левый лист показывает, что 29 % бывших претендентов имели средний балл ниже 3,0 и менее 4 внеклассных занятий, и из них только 2 % были приглашены на собеседование. Поэтому данный узел содержит прогноз «Нет»[98].

Деревья решений отлично подходят для отображения разведочных данных и позволяют легко и быстро убедиться в том, что входные данные в вашем наборе связаны с выходными.

Однако одного дерева редко бывает достаточно для прогнозирования. Давайте посмотрим, как одно дерево решений (вроде изображенного на рис. 10.3) может ввести в заблуждение. С одной стороны, дерево может продолжать расти вглубь до тех пор, пока каждый кандидат не окажется в своем отдельном листе, что будет представлять идеальные правила принятия решений для всех 300 претендентов из набора обучающих данных. И если следующая группа стажеров будет иметь точно такие же характеристики, то ваше дерево будет идеальным. Однако, учитывая то, что в данных всегда присутствуют вариации, здравый смысл подсказывает нам, что это невозможно. Новые кандидаты будут отличаться от тех, на которых мы учились, а переобученное дерево будет очень уверенно предлагать вам потенциально неверные решения.

Действительно, одиночные деревья решений склонны к переобучению, при котором модель описывает набор обучающих данных гораздо лучше, чем ту реальность, для предсказания которой она была создана. Один из способов устранения этой проблемы – так называемая обрезка, однако одиночные деревья остаются весьма чувствительными к своим обучающим данным. Если бы вы отобрали 100 кандидатов из своего набора данных и построили новое дерево решений, то, вероятно, обнаружили бы другие узлы решений и разделительные значения внутри дерева. Например, для разделения корневого узла может использоваться значение среднего балла 3,2 вместо 3,0.

Для исправления проблем, свойственных деревьям решений, можно использовать ансамблевые методы.

Ансамблевые методы

Ансамблевые методы, предполагающие агрегирование результатов десятков, а то и тысяч запусков алгоритма, пользуются популярностью среди специалистов по работе с данными благодаря своей способности делать значимые прогнозы на детальном уровне.

Абсолютных фаворитов у дата-сайентистов два – случайные леса и деревья решений с градиентным усилением. Они часто используются командами, побеждающими в соревнованиях по науке о данных, проводимых на веб-сайте Kaggle.com; компании размещают наборы данных и вручают дата-сайентистам, создавшим на их основе максимально точные модели, солидные денежные призы. В этом разделе мы предоставим вам краткое интуитивно понятное объяснение этих методов.

Случайные леса

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

Случайный лес[99] – это эквивалент данной идеи в виде дерева решений. Этот алгоритм берет случайную выборку данных и строит дерево решений, а затем повторяет этот процесс еще несколько сотен раз[100]. В результате получается «лес», состоящий из деревьев, которые имитируют множество независимых оценщиков вашего набора данных, а окончательный прогноз – это консенсус, то есть решение, принятое большинством голосов. (Случайные леса также могут использоваться для расчета среднего значения предсказанных вероятностей при решении задач классификации или среднее значение непрерывных числовых данных при решении задач регрессии.)

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

Деревья решений с градиентным усилением

Деревья решений с градиентным усилением[101] используют другой подход. В то время как случайный лес создает сотни отдельных деревьев и в конце усредняет их результаты, деревья с градиентным усилением строятся последовательно.

В ситуации приема на работу это означает, что несколько интервьюеров выстраиваются в очередь за дверью, чтобы последовательно побеседовать с кандидатом. Каждый интервьюер входит в комнату, задает кандидату один-два вопроса, выходит и говорит следующему интервьюеру что-то вроде: «На данный момент я склоняюсь к приему этого человека на работу, но нам нужно задать больше наводящих вопросов, касающихся таких-то областей», и так далее. Результат – единая рекомендация, основанная на совокупности рекомендаций всей группы, а не множество отдельных рекомендаций, объединенных в одну.


Рис. 10.4. Случайный лес – это «лес», состоящий из нескольких деревьев решений (как правило, сотен), в котором каждое дерево построено на основе случайного подмножества данных. Итоговый прогноз представляет собой консенсус всех составляющих лес деревьев


Как правило, деревья решений с градиентным усилением начинаются с построения так называемого неглубокого дерева с несколькими ветвями и узлами. Эта первая итерация по своей сути весьма наивна и не позволяет правильно разделить набор данных. На следующем этапе с учетом ошибок, допущенных первым деревом, строится новое дерево с усиленными наблюдениями, для которых были характерны особенно большие ошибки (в этом проявляется действие градиента). Для создания усиленной модели этот процесс выполняется тысячи раз с использованием больших наборов данных.

Как правило, эти ансамблевые методы не предназначены для анализа «небольших данных», поэтому специалистам следует применять их при работе с сотнями, а не десятками наблюдений.

Интерпретируемость ансамблевых моделей

Только представьте, как сложно было бы разобраться в тысячах листьев и узлов деревьев, правила которых чувствительны к мельчайшим изменениям в данных. Эти модели часто называют «черными ящиками», поскольку их внутреннее устройство очень трудно понять. При использовании случайных лесов и деревьев решений с градиентным усилением вместо логистической регрессии, выигрывая в точности, вы теряете в интерпретируемости. Это компромисс[102].

Другие модели типа «черный ящик» мы обсудим в главе 12.

Остерегайтесь ловушек

Какой бы мощью ни обладали модели классификации, при их неправильном применении можно угодить в несколько ловушек. Не заблуждайтесь: модели, которые имеют недостатки, описанные в следующих разделах, не могут быть «достаточно хорошими». Как главный по данным, вы должны хорошо понимать следующие потенциальные ловушки:

– неправильное определение типа задачи;

– утечка данных;

– отсутствие разделения данных;

– выбор неправильного порогового значения для принятия решения;

– неправильное понимание точности.


Последнее мы обсудим в следующем разделе.

Неправильное определение типа задачи

Совершенно очевидно, что если вы хотите предсказать категориальную переменную, вам не следует использовать линейную регрессию. Например, вспомните, что в табл. 10.1 мы заменили «да» и «нет» значениями 1 и 0 при постановке задачи, решаемой с помощью логистической регрессии.

Ваша статистическая программа не поправит вас, если вы неправильно примените линейную регрессию к этим данным. Она не знает, что ваши 1 и 0 означают «Да» и «Нет». Мы видели, как подобное происходит множество раз. Главным по данным следует иметь это в виду и незамедлительно исправлять ошибку.

Утечка данных

Что, если для построения классификационной модели вы собрали все возможные исторические данные о заявках соискателей на прохождение стажировки, в том числе о том, были ли они в конечном итоге наняты на работу или нет (0 означает «Нет», а 1 – «Да»). А затем вы применили логистическую регрессию, чтобы предсказать, получит ли предложение тот или иной кандидат.

Как вы думаете, что не так с использованием атрибута «нанят»?

Слово «нанят» означает, что соискатель согласился устроиться на постоянную работу после стажировки (вот и утечка). Только соискатели, получившие предложение пройти стажировку (что вы и пытаетесь предсказать), будут иметь входной параметр «Нанят?» = 1. Если значение атрибута «Нанят?» = 1, то значение целевого параметра «Пригласить?» также всегда должно быть равно 1. Данная модель абсолютно бесполезна, потому что обучена на данных, которые не могут быть доступны во время прогнозирования.

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

Отсутствие разделения данных

Если вы не разделите свои данные на набор для обучения и набор для тестирования, вы рискуете переобучить свою модель и получить ужасную производительность при анализе новых данных. Как правило, рекомендуется использовать 80 % наблюдений в наборе данных для обучения модели, а остальные 20 % – для тестирования ее производительности.

Янн ЛеКун, главный научный сотрудник Meta[103] по вопросам искусственного интеллекта, сформулировал это так: «Тестирование модели на обучающем наборе предается анафеме в мире машинного обучения, поскольку это величайший грех, который только можно совершить»[104]. Поэтому убедитесь в том, что вы тестируете свои модели на данных, с которыми они раньше не сталкивались. Если ваш алгоритм машинного обучения демонстрирует практически идеальные прогнозы, что возможно в случае деревьев решений с градиентным усилением – значит, ваша модель, скорее всего, переобучена.

Выбор неправильного порогового значения для принятия решения

Большинство моделей классификации выдают не метку, а вероятность принадлежности к положительному классу. Как вы помните, для студента со средним баллом 2,0 шанс получить приглашение на стажировку составлял 4 %, а для студента со средним баллом 3,0 – 41 %. Однако на основе этой информации нельзя ничего сделать до тех пор, пока не будет сформулировано решающее правило.

Именно здесь в игру вступаете вы. Выбор порогового значения вероятности для выполнения окончательной классификации – это решение, которое должен принять человек, а не машина. Многие программные пакеты в качестве такого значения по умолчанию выбирают 0,5 или 50 %. Однако это значение не обязательно соответствует особенностям стоящей перед вами проблемы.

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

Теперь давайте поговорим о точности в контексте классификации и о том, что мы вообще подразумеваем под этим словом.

Неправильное понимание точности

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

Ваша первая задача – сделать паузу и провести инвентаризацию исторических данных. Когда вы приступите к развертыванию своей модели, вам понадобится задать критерий для ее оценки, то есть создать «средство контроля». И это необходимо сделать для любой модели классификации, которую создаете вы или ваши специалисты по работе с данными. В случае бинарной классификации для этого достаточно определить долю класса большинства в наборе данных. В наборе данных о стажерах этим классом был «Нет», так как 60 % кандидатов не получили предложения пройти стажировку (а 40 % получили).

Теперь предположим, что кто-то из вашей команды применяет XGBoost (алгоритм градиентного усиления деревьев решений) к 80 % данных (обучающий набор), и модель классификации предсказывает верные результаты в 60 % случаев на оставшихся 20 % данных (тестовый набор). Поскольку это больше, чем 50/50, такой результат может показаться вам вполне хорошим, так как в долгосрочной перспективе эта модель обещает работать лучше, чем подбрасывание монеты.

Однако на самом деле это указывает на то, что признаки в вашем наборе данных никак не связаны с выходными параметрами. Как в этом можно убедиться? Ну, если бы вы обратились к своему исходному набору данных, полностью проигнорировали входные параметры и попытались просто угадать класс большинства для каждого прогноза («Нет»), то вы оказались бы правы в 60 % случаев! Так что алгоритм XGBoost ничем вам не помог. Метрика точности 60 % в каком-то неточна, поскольку не превышает контрольный показатель.

Подумайте о событиях, которые случаются нечасто. Например, рекламное объявление в Интернете может быть показано тысячам пользователей, но лишь несколько человек кликнут по нему. Мы бы назвали эти данные несбалансированными, поскольку слишком большую долю обучающего набора составляют объекты одного класса (большинство пользователей «не щелкнули» по объявлению). Если, например, 99,5 % людей не щелкают по объявлению, то прогноз по умолчанию, говорящий о том, что никто никогда по нему не щелкнет, окажется верным в 99,5 % случаев.

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

Матрицы ошибок

Матрица ошибок – это способ визуализации результатов модели классификации и определенного порога принятия решений. Представьте, что модель, построенная на основе алгоритма случайного леса, была обучена на 80 % данных о стажерах (240 кандидатов) и протестирована на оставшихся 20 % данных (60 кандидатов) с целью имитации процесса ее использования в реальном мире. Матрица ошибок, приведенная в табл. 10.3, демонстрирует результаты, полученные при использовании порога отсечения по умолчанию, равного 0,5. Обратите внимание на то, что сумма всех значений составляет 60, что соответствует количеству наблюдений в тестовом наборе. В этой выборке 23 кандидата получили приглашение на стажировку, а 37 – нет. Насколько хорошо алгоритм справился с классификацией этих данных?

Матрица ошибок предоставляет несколько критериев для оценки производительности модели. Обычная точность – это всего лишь один из них.


Точность = Процент верных прогнозов = (36 + 19)/60 = 91,6%


Однако точность – это не то, на чем вам стоит сосредоточивать внимание, особенно учитывая ее уязвимость к проблеме несбалансированных данных. В большинстве случаев вас, скорее всего, будет волновать то, насколько хорошо ваш алгоритм предсказывает истинно положительные и истинно отрицательные значения. Другими словами, находит ли классификатор те случаи, которые должен находить (истинные положительные), и игнорирует ли те наблюдения, которые должен игнорировать (истинно отрицательные)?


Табл. 10.3. Матрица ошибок для прогнозов модели классификации с порогом отсечения 0,5

Доля истинно положительных результатов (она же «Чувствительность» или «Отзывчивость») = Количество соискателей, приглашенных на стажировку, деленное на количество соискателей, которые должны были получить такое приглашение = 19/(19 + 4) = 83 %. Вам нужно, чтобы это значение было максимально близко к 100 %.

Доля истинно отрицательных результатов («Специфичность») = Количество соискателей, которым было отказано в приглашении на собеседование, деленное на количество соискателей, которым должно было быть в нем отказано = 36/(36 + 1) = 97 %. Это значение также должно быть максимально близко к 100 %.

Напомним, что для создания матрицы ошибок по умолчанию, как правило, используется порог отсечения 0,5. Если бы мы увеличили это значение до 0,75, то для получения приглашения соискатель должен был бы соответствовать более строгим критериям. Новая матрица показана в табл. 10.4.

Обратите внимание, как изменились показатели.

Доля истинно положительных результатов = Количество соискателей, приглашенных на стажировку, деленное на количество соискателей, которые должны были получить такое приглашение = 12/(12 + 11) = 52 %.

Доля истинно отрицательных результатов = Количество соискателей, которым было отказано в приглашении на собеседование, деленное на количество соискателей, которым должно было быть в нем отказано = 37/37 = 100 %.

Увеличение порогового значения привело к уменьшению доли истинно положительных результатов, что, в свою очередь, увеличило долю истинно отрицательных результатов. Более высокий порог позволяет отсеять неподходящих кандидатов, но за это приходится заплатить отсевом нескольких подходящих кандидатов.

Мы хотели продемонстрировать компромисс, на который приходится идти при определении порога отсечения. В конечном счете выбор подходящего порогового значения требует экспертных знаний в предметной области. Как главный по данным вы должны потратить время на обдумывание порога отсечения, лучше всего подходящего для решения стоящей перед вами задачи.


Табл. 10.4. Матрица ошибок для прогнозов модели классификации с порогом отсечения 0,75

Путаница в терминах, связанных с матрицей ошибок

Доля истинно положительных и истинно отрицательных результатов – это далеко не все показатели, которые можно получить на основе матрицы ошибок.

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

Подведение итогов

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


– неправильное определение типа задачи;

– утечка данных;

– отсутствие разделения данных;

– выбор неправильного порогового значения для принятия решения;

– неправильное понимание точности.


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

Глава 11