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

Теория контролируемого обучения:

Классификация — это попытка найти правило, которое предсказывает метки на основе входных данных:

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

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

Ошибка может быть обобщена на все виды критерия или функции потерь:

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

Доказательство оптимальности:

По определению :

Следует, что :

Таким образом :

В случае потери 0–1, которая измеряет вероятность неправильной классификации, классификатор Байеса можно записать как:

Что, если внимательно изучить, оказывается довольно интуитивным результатом. Мы минимизируем вероятность ошибочной классификации, выбирая наиболее вероятную метку на входных данных.

К сожалению, классификатор Байеса неразрешим, если у нас нет прямого доступа к основному распределению вероятностей.

Логистическая регрессия для бинарной классификации:

Без ограничения общности, с этого момента мы будем работать в условиях бинарной классификации, где мощность набора меток равна 2. Для удобства мы предположим, что метки равны 0 и 1.

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

Предыдущее предположение эквивалентно утверждению:

Все точки данных в верхней гиперплоскости границы линейного решения будут классифицированы как 1, а другие точки — как 0, поскольку:

Шляпа над классификатором символизирует, что это результат нашего алгоритма.

Сигмовидная функция — очень удобный способ ввести линейную границу решения, поскольку моделирование указанной выше условной вероятности непосредственно с помощью линейной функции может привести к противоречиям, поскольку она может принимать значения за пределами диапазона [0, 1].

Но как нам выбрать эту линейную границу?

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

Класс гипотез — это класс классификаторов, которым мы ограничиваем наш поиск, в нашем случае:

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

Максимальная вероятность:

Вероятность набора наблюдений (в данном случае обучающего набора) в параметрической модели, подобной приведенной выше, — это вероятность наблюдения такого набора с учетом базового параметра. Используя iid-природу обучающего набора, мы находим:

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

Противоположность последнего выражения также хорошо известна как потеря перекрестной энтропии.

Практический пример Python:

Градиентный спуск:

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

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

Мы ищем :

Градиент этой целевой функции равен:

Теперь давайте закодируем это!

Мы можем сгенерировать фиктивный набор данных для проверки нашей простой реализации:

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

Надеюсь, эта статья была познавательной и полезной. Это моя первая попытка вести блог. Я буду рад любым отзывам, замечаниям, вопросам любого рода и предложениям по темам для написания.