Совместное использование машинного обучения - вывод логистической регрессии и реализация numpy

машинное обучение

Основные понятия логистической регрессии

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

Хотя логистическая регрессия имеет в своем названии «регрессию», на самом деле это метод классификации, в основном используемый для задач с двумя классификациями (то есть есть только два выхода, представляющие две категории соответственно).

В регрессионной модели y является качественной переменной, такой как y = 0 или 1, а логистический метод в основном используется для изучения вероятности возникновения определенных событий.

Объяснение концепции

Logistic RegressionПроцесс получения

Его выражение:

f(x) = \frac{1}{1 + e^{-\theta}}
\theta = WX + B

можно найти послеsigmoidПосле преобразования функции выходное значение находится в[0, 1]Между ними вывод можно рассматривать как вероятность, и ниже приводится подробный вывод:

получить

为了计算方便, 我们只讨论二分类.

Во-первых, логистическая регрессия делает предположение,两个类别都服从均值不同,方差相同(方便推导)的高斯分布

p(y|x=0) = \mu(\mu_0, \sigma)
p(y|x=1) = \mu(\mu_1, \sigma)

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

风险

Risk(y=0|x) = \lambda_{00}P(y=0|x) + \lambda_{01}P(y = 1|x)
Risk(y=1|x) = \lambda_{10}P(y=0|x) + \lambda_{11}P(y = 1|x)

в,Risk(y=0|x)это риск, когда выборка прогнозируется равной 0,Risk(y=1|x)это риск, когда выборка прогнозируется равной 1,λ_{ij}является фактической меткой образца какj, но предсказал это какiсвязанный с этим риск.

Мы не верим, что прогноз верный и риска нет, поэтомуλ_{00}иλ_{11}оба равны 0, кроме того, мы считаем, что риск равен, когда метка равна 0, а прогноз равен 1, и когда метка равна 1, а прогноз равен 0, поэтомуλ_{10}иλ_{01}Равный, для удобства обозначим его как λ. Но в некоторых областях, таких как медицина, управление рисками и т. д., эти λ в большинстве случаев не равны, и иногда мы выбираем «лучше убить по ошибке тысячу, чем отпустить одного»;

Тогда наше упрощенное выражение:

Risk(y=0|x) = \lambda P(y = 1|x)
Risk(y=1|x) = \lambda P(y=0|x)

По принципу минимизации риска мы обычно выбираем менее рискованный.

Например:

Risk(y=0|x) < Risk(y=1|x)

Это означает, что прогноз0риск класса меньше, чем прогнозировалось для первого1класс рисков.

Вы можете получить:

\frac{Risk(y=0|x)}{Risk(y=1|x)} < 1
\frac{P(y = 1|x)}{P(y=0|x)} < 1

означает предсказание1Вероятность класса меньше, чем0классовая вероятность.

Логарифмируем обе части неравенства

log\frac{{P(y = 1|x)}}{{P(y=0|x)}} < 0

По формуле Байеса:

log\frac{P(x|y = 1)p(y=1)}{P(x|y=0)p(y=0)} < 0
log\frac{P(x|y = 1)}{P(x|y=0)} + log\frac{p(y=1)}{p(y=0)} < 0

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

高斯分布

g(x) = \frac{1}{2\pi\sigma}e^{-\frac{(x - \mu)^2}{2\sigma^2}}

Игнорировать постоянный член (дисперсии также равны)

log\frac{P(x|y = 1)}{P(x|y=0)} + loge^{(\frac{(x - \mu_0)^2}{2\sigma^2} - \frac{(x - \mu_1)^2}{2\sigma^2})}
log\frac{P(x|y = 1)}{P(x|y=0)} + (\frac{(x - \mu_0)^2}{2\sigma^2} - \frac{(x - \mu_1)^2}{2\sigma^2}) < 0
log\frac{P(x|y = 1)}{P(x|y=0)} < \frac{(x - \mu_1)^2}{2\sigma^2} - \frac{(x - \mu_0)^2}{2\sigma^2}
log\frac{P(x|y = 1)}{P(x|y=0)} < \frac{\mu_0}{\sigma^2}x - \frac{\mu_1}{\sigma^2}x + C

CЧаншу, вы можете использовать матричное представление.

log\frac{P(x|y = 1)}{P(x|y=0)} < \theta{X}

详细推导

Возведение значений в степень и расчет уравнений со знаком равенства.

\frac{P(y=1|x)}{P(y=0|x)} = e^{\theta x}
= \frac{P(y=1|x)}{1 - P(y=1|x)} = e^{\theta x}
= \frac{1 - P(y=1|x)}{P(y=1|x)} = e^{-\theta x}
= \frac{1}{P(y=1|x)} - 1 = e^{-\theta x}
= \frac{1}{P(y=1|x)} = e^{-\theta x} + 1
= P(y=1|x) = \frac{1}{e^{-\theta x} + 1}

Вот несколько скриншотов реализации

Для оптимизации используем алгоритм градиентного спуска.

Функция кросс-энтропийных потерь

окончательный эффект

Посмотреть полный код на компьютере

———————————— Mo (веб-сайт: momodel.cn) — это платформа моделирования искусственного интеллекта, поддерживающая Python, которая может помочь вам быстро разрабатывать, обучать и развертывать приложения ИИ. Мы надеемся, что вы можете присоединиться.