В этой статье я собираюсь реализовать алгоритм градиентного спуска для логистической регрессии с нуля на Python.

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

Очертания истории

1- Что такое логистическая регрессия?
2- Функция стоимости
3- Алгоритм градиентного спуска
4- Реализация кода Python для алгоритма градиентного спуска

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

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

Мы различаем два типа классификации;
1- бинарная классификация, у нас есть только два класса (спам/не спам, злокачественный/доброкачественный).
2- Мультиклассовая классификация, выходные данные содержат более двух классов (кошки, собаки и лошади).

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

Функция стоимости логистической регрессии:

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

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

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

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

Как видите, если y = 1 и h(x) = 1, стоимость = 0. Но если y = 1 и h(x) = 0, мы будет штрафовать алгоритм обучения очень большой стоимостью, cost = +inf.

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

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

Чтобы минимизировать нашу функцию стоимости J(θ), мы собираемся использовать алгоритм градиентного спуска.

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

Чтобы запустить алгоритм градиентного спуска, нам нужно будет вычислить частную производную нашей функции стоимости J(θ) по каждому параметру.

Код Python:

https://gist.github.com/jairiidriss/af5d5523614bc6c828a2bc434d8ebd61

Полный исходный код + набор данных: https://github.com/jairiidriss/Gradient-Descent-and-Logistic-Regression

На этом пока все, спасибо за прочтение статьи, пожалуйста, если у вас есть какие-либо вопросы или разъяснения, не стесняйтесь обращаться ко мне, спасибо!