- BrainTools - https://www.braintools.ru -
Итак мы обсудили задачу классификации и метрики качества классификационных моделей.
Имея такой набор знаний, мы наконец готовы перейти к моделям, которые, в отличие от kNN, действительно обучаются на данных, а не просто запоминают обучающую выборку.
И первый кандидат у нас:
Логистическая регрессия (logistic regression) — это один из самых базовых и важных алгоритмов классификации, который учится проводить границу между классами и оценивать вероятность того, к какому классу принадлежит объект.
Сразу избавимся от путаницы: да, несмотря на то, что логистическая регрессия решает задачу классификации, в её названии есть слово “регрессия”.
Так получилось потому, что модель не говорит: “этот объект принадлежит классу A и точка”. Вместо этого она выдаёт вероятность принадлежности объекта к классу A.
Грубо говоря, результат работы модели логистической регрессии можно интерпретировать так: “с вероятностью 0.74 объект принадлежит классу A. Дальше уже решайте сами, относить его к этому классу или нет”.
Теперь разберёмся, каким образом логистическая регрессия вообще получает эти вероятности, а уже потом поймём, что делать с этим самым “дальше решайте сами”.
Мы уже имеем опыт [1] работы с классом линейных функций. поэтому логично [2] не изобретать велосипед заново, а использовать то, что уже хорошо нам знакомо.
Но при таком подходе у нас возникнет одна проблема: полученный таким методом результат — это число из . Но нам нужно число на отрезке
, чтобы заявить, что оно является вероятностью. Причем, нужно чтобы большие значения соответствовали “почти 1”, а маленькие — “почти 0”.
То есть нам нужна функция, которая:
“сжимает” всю числовую прямую;
не теряет порядок значений.
и одной из таких функций является сигмоида:
Теперь, если мы пропустим результат линейной модели через сигмоиду:
то получим вероятность принадлежения объекта к классу 1. Обозначим её как
.
Теперь у нас есть модель, которая для каждого объекта выдаёт вероятность
Но пока непонятно, как эта модель должна “понимать”, что она ошибается.
Потому что на этапе обучения [3] нам нужно не просто оценивать качество модели, а измерять её ошибки [4] так, чтобы их можно было минимизировать.
Значит нам нужна функция, которая будет штрафовать модель в зависимости от того, насколько её предсказанная вероятность отличается от истинного ответа.
Причём важно, чтобы этот штраф вёл себя таким образом:
если объект относится к классу 1, и модель даёт вероятность 0.99 — штраф должен быть маленьким;
если объект относится к классу 1, а модель дала вероятность 0.1 — штраф должен быть большим;
аналогично для класса 0
И такая функция действительно существует — она называется log-loss (или cross-entropy).
Но до того, как перейти к ней, вернемся к математике [5].
Временно отложим всё, что говорили о машинном обучении и поймем что такое метод максимального правдоподобия (ММП, Maximum Likelihood Estimation или MLE).
Представим, что у нас есть неидеальная монета. Пусть при подбрасывании шанс выпадения орла равняется . Мы подбросили монету 100 раз и получили результат: 72 раза выпал орёл, 28 раз — решка.
Вероятность такого результата при фиксированном равна:
Итак, если упростить идею — метод максимального правдоподобия заключается в том, что мы доверяем наблюдаемым данным и говорим: “раз произошло вот так, то это наиболее правдоподобный вариант”, поэтому подбираем такое значение , при котором вероятность наблюдаемого результата максимальна:
Это задача максимизации функции правдоподобия.
В общем виде она выглядит так:
где
— функция правдоподобия (likelihood function);
— плотность (или вероятность) распределения с параметром
;
— выборка независимых наблюдений.
В математике при виде произведения часто берут логарифм. Максимизировать или минимизировать произведение неудобно, а после логарифмирования получается сумма, с которой обычно проще работать. Случай с максимизацией функции правдоподобия не является исключением. Обычно делается так:
В частности, для нашего примера с подбрасыванием монетки получим:
Откуда, приравняв производную к нулю, получим .
Теперь поймем зачем нам ММП.
Используя ММП, мы превращаем статистическую задачу в задачу максимизации. А любую задачу максимизации можно эквивалентно переписать как задачу минимизации: достаточно вместо “максимизировать ” рассматривать “минимизировать
“.
А что мы минимизируем в ML? Конечно же, функцию потерь.
Если взять отрицательный логарифм правдоподобия и просто переписать его в терминах машинного обучения, мы получим то, что называется log-loss. Разберем это пошагово.
Для начала обозначим как
, а выражение, которое мы минимизируем, как
(на самом деле это функция потерь).
Тогда функция потерь имеет вид:
Наша задача — найти набор весов который минимизирует эту функцию:
В задаче бинарной классификации выборка обозначается через пары , где
. Тогда модель задает вероятность
, которая в бинарном случае может быть переписана как
где .
подставив данное выражение в формулу выше получим:
Используя свойства логарифмов, упростив выражение, наконец, получим лог-лосс в чистом виде:
Кстати, если учесть факт, что — вероятность (т.е. число на отрезке
), а
, то можно заметить, что выражение под суммой меньше или равно нуля, значит, с учетом знака минус
. Значит, у нас не возникнет проблема “спасите, лосс отрицательный”.
Остаётся одно — подставить в формулу сигмоиду, как мы уже обсуждали ранее.
Таким образом мы получаем финальный вид функции потерь для логистической регрессии:
Заметим одну важную деталь: получилось так, что мы не изменили наше пространство функций Мы по-прежнему остаёмся в классе линейных функций, просто оборачиваем их в сигмоиду.
При этом меняется другое — функция потерь, то есть критерий, по которому мы выбираем оптимальный элемент из этого пространства.
Таким образом, изменение функции потерь влияет не на сам класс моделей, а на то, какая именно модель из этого класса будет выбрана.
Теперь, имея loss, т.е. постановку задачи, попробуем найти его решение.
Попробуем пройтись аналитическим методом. Подставим сигмоиду в формулу лосс функции и упростим. У нас получится:
где .
Если мы попробуем использовать условие стационарной точки , получим Уравнение:
где у нас полный комплект неприятностей. И нелинейность и экспонента и внутри нелинейной функции. Одним словом — мрак.
Не вдаваясь в подробности, такая система в общем случае не имеет аналитического решения в замкнутом виде. Поэтому приходится отказываться от попыток получить явную формулу для .
Поскольку прямое решение нам ничего не дало, вернёмся к градиентному спуску.
Идея градиентного спуска остается прежней: мы начинаем с некоторого начального значения и постепенно двигаемся в сторону уменьшения функции потерь.
Параметры будут обновляться таким образом: .
Мы уже вычислили градиент. Подставим его в формулу обновления весов. И получим окончательный вид:
То есть, обновление весов происходит за счёт корректировки, пропорциональной ошибке предсказания вероятности относительно истинного класса, умноженной на входные признаки.
Это означает:
если модель переоценила вероятность — веса уменьшаются;
если недооценила — увеличиваются.
Таким образом модель последовательно уменьшает ошибку на обучающей выборке.
Остаются два вопроса: на что влияет выбор начальной точки и сойдётся ли градиентный спуск при данном функционале?
Для ответа на оба вопроса можно опираться на ключевое свойство — Функция является выпуклой по
.
Напомню, что это означает: при выполнении условий гладкости функции и корректного выбора шага обучения , градиентный спуск сходится к глобальному минимуму функции независимо от начальной точки. Начальная точка влияет только на скорость сходимости.
Мы увидели, что сигмоида работает.
Но вспомним, что она у нас возникла, когда мы задались поиском функции, которая:
сжимает всю числовую прямую;
не теряет порядок значений.
Таких функций в мире много. Поэтому давайте избавимся от “магического” появления сигмоиды и дадим ей более разумное объяснение.
Начнем с того, что вместо рассмотрении вероятности p мы рассмотрим так называемые odds(шансы):
, а точнее их логарифм (log-odds):
. Это мера того, насколько модель
“склоняется” к классу 1.
Мы предполагаем, что не сама вероятность зависит линейно от признаков, а её лог-оддсы:
Есть, по крайней мере, три причины:
— это самый простой способ описать зависимость от признаков.
Если бы мы писали: , то могли бы выйти за пределы
, тем самим нарушив смысл вероятности
Функция:
переводит в всю
Решаем относительно :
и упрощая, получаем:
Вот откуда на самом деле возникает сигмоида. Это следствие линейной модели для log-odds.
Выше у меня была фраза
И такая функция действительно существует — она называется log-loss (или cross-entropy).
Теперь ответим на вопрос: что такое cross-entropy и почему это то же самое, что и log-loss?
Начнем с понятия энтропии.
В теории информации энтропия распределения определяется как
Она измеряет степень неопределенности распределения. Чем более “размазаны” вероятности, тем больше энтропия.
Опять вернемся к подбрасыванию монетки. Если у нас классическая моентка и вероятности равны по 0.5, то энтропия у нас равна
Далее, нам дали другую монетку, на которой орел выпадает с вероятность 0.9.
В таком случае энтропия будет равна — (примерно 0.47).
Как видим, энтропия в первом случае высокая (максимальное возможное значение). И, действительно, ситуация вообще не предсказуемая, а во втором случае энотропия уже 0.47 и мы более-менее уверенно можем предположить исход броска.
Теперь предположим, что существует некоторое истинное распределение , а модель предсказывает распределение
. Введем величину:
которая как раз называется cross-entropy.
В формуле энтропии вероятности и внутри логарифма, и снаружи берутся из одного распределения, а в cross-entropy: снаружи стоит истинное распределение , а внутри логарифма — распределение модели
.
В задаче бинарной классификации истинные метки задаются как, а модель предсказывает
Подставляя это в формулу cross-entropy, получаем:
Что в точности и есть log-loss.
Таким образом, log-loss можно интерпретировать сразу с двух сторон: и как отрицательное лог-правдоподобие и как cross-entropy между истинным распределением и распределением модели.
Главные плюсы логистической регрессии — интерпретируемость и устойчивость. Модель хорошо работает в задачах, где классы можно достаточно неплохо разделить линейной границей, а также в ситуациях, когда важно понимать влияние признаков на результат.
Кроме того, благодаря выпуклости log-loss, обучение логистической регрессии является относительно стабильной задачей.
Однако у данной модели есть и ограничения. Логистическая регрессия, всё же, является линейной моделью, а значит плохо справляется со сложными нелинейными зависимостями без дополнительной обработки признаков. На практике это часто приводит к тому, что для более сложных задач приходится переходить к другим подходам.
В следующей части мы рассмотрим SVM — модель, которая подходит к задаче классификации с другой стороны и вместо вероятностной интерпретации делает акцент на геометрии разделяющей границы и максимизации отступа между классами.
Автор: ysrgsyn
Источник [6]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/30899
URLs in this post:
[1] опыт: http://www.braintools.ru/article/6952
[2] логично: http://www.braintools.ru/article/7640
[3] обучения: http://www.braintools.ru/article/5125
[4] ошибки: http://www.braintools.ru/article/4192
[5] математике: http://www.braintools.ru/article/7620
[6] Источник: https://habr.com/ru/articles/1040682/?utm_campaign=1040682&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.