Логистическая регрессия. Вероятностный взгляд на машинное обучение

Практический курс по ML: https://stepik.org/course/209247/

Смотреть материал на YouTube | RuTube

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

Доход

Наличие жилья

Наличие работы

Число детей

Возврат кредита

10 000

1

1

2

1

10 000

1

1

2

-1

10 000

1

1

2

-1

10 000

1

1

2

1

10 000

1

1

2

-1

10 000

1

1

2

1

15 000

1

0

3

-1

15 000

1

0

3

-1

15 000

1

0

3

-1

15 000

1

0

3

-1

15 000

1

0

3

-1

15 000

1

0

3

1

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

которая для одного и того же вектора  иногда возвращает 1, а иногда -1. Но детерминированная модель (без случайностей) не обладает таким свойством. Мы будет иметь либо все время 1, либо все время -1. Как быть в такой ситуации? Разрешить ее можно очень просто. Почему бы нам возвращать не номер класса 1 или -1, а вероятность появления прогнозируемого класса. И, так как мы здесь переходим к вероятностям, то давайте использовать вероятностный подход для описания данной задачи:

Данная условная вероятность показывает вероятность появления прогнозируемого класса моделью  при предъявлении конкретного объекта  и вектора весов . Например, согласно приведенной таблицы, для объекта:

вероятность:

А противоположную вероятность (для класса -1), можно вычислить как:

Фактически, наша модель должна выдавать вещественное число в диапазоне [0;1]:

и это, в некотором смысле, роднит ее с задачей регрессии.

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

То есть, мы выбираем такое , при котором вероятность достигает максимального значения.

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

https://www.youtube.com/watch?v=hO-pATDf75k

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

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

Такое упрощение многомерного распределения соответствует задаче, известной под названием наивный байесовский классификатор (Naive Bayes classifier).

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

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

Но искать максимум от произведения величин не очень удобно. Поэтому часто переходят к логарифму правдоподобия (log-likelihood, log-loss):

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

А теперь смотрите, ранее при решении задач классификации, мы с вами вводили функционал, аппроксимирующий эмпирический риск некоторой выбранной функцией потерь:

Видите сходство этих двух критериев качества? Только в одном случае мы максимизируем, а в другом – минимизируем. Но это легко свести к единой задаче минимизации и записать следующее равенство:

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

Если теперь в качестве функции потерь выбрать логарифмическую:

чтобы сходство обеих сумм было еще больше. Я напомню, что

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

В результате, мы имеем:

Откуда следует, что:

или в виде:

То есть, логарифмическая функция потерь приводит нас к достаточно простой формуле построения оценок вероятностей для прогнозируемого класса. Причем, функция:

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

График сигмоиды выглядит, следующим образом:

И из него хорошо видно, что чем дальше от разделяющей гиперплоскости находится правильно спрогнозированный класс (M > 0), тем выше значение вероятности (уверенности) классификатора, что прогноз верен. И, наоборот, если знак отступа отрицательный (M < 0), значит, произошла ошибка классификации и вероятность будет меньше 0,5. Если же образ оказался точно на разделяющей гиперплоскости, то на выходе увидим значение 0,5, то есть, классификатор не уверен, к какому классу отнести текущий вектор .

Многоклассовая логистическая регрессия

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

наибольшее. Затем, для вычисления вероятности правильного выбора, можно воспользоваться следующей формулой:

которая носит название функции softmax. Она довольно часто используется на практике, в частности в нейронных сетях, когда входной вектор нужно отнести к одному из M классов. Тогда на выходе сети прописывают функцию softmax и получают некий аналог вероятностей отнесения объекта к тому или иному классу.

Практический курс по ML: https://stepik.org/course/209247/

Видео по теме