Простой вероятностный способ логистической регрессии….

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

В науке о данных мы часто сталкиваемся с задачами классификации. Для задач классификации простая модель - ЛОГИСТИЧЕСКАЯ РЕГРЕССИЯ. Все используют эту модель в тот или иной раз. Если мы используем python, библиотека sklearn предоставит реализацию этой модели, и для ее реализации потребуется от 3 до 4 строк кода. Переходя к теоретической части логистической регрессии, можно понять модель с помощью различных интерпретаций, таких как геометрическая интерпретация, вероятностная интерпретация и т. Д.
Если вы хотите понять логистическую регрессию с помощью вероятностного подхода ЭТО ТАКОЕ БЛОГ ДЛЯ ВАС.

Если у нас есть задача предсказать метку класса 1 или 0, тогда мы не можем использовать методы регрессии, поскольку выходными данными регрессии являются непрерывные действительные числа, а не дискретные выходные данные. Логистическая регрессия в основном используется для двоичной (ее можно расширить для мультиклассовой классификации, используя метод "один против остальных. Здесь мы сосредоточимся на двоичной классификации") классификации, например, для прогнозирования погодных условий в дождливый или ясный день. . Чаще нас интересует вероятностный результат, а не метки классов, например, сегодня вероятность дождя составляет 80%. Используя LR, мы можем получить вероятностный результат. Давайте посмотрим на это:

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

Интуитивно понятно, что наша целевая переменная следует распределению Бернулли.
Поскольку можно заметить, что когда y = 1, p (y) = p и когда y = 0, p (y) = 1- п. А в распределении Бернулли y может принимать только 0 или 1. (Это дискретное распределение). Таким образом, основное предположение логистической регрессии заключается в том, что ее целевая переменная следует распределению Бернулли. .

Мы слышали о GLM, обобщенная линейная модель имеет вид:

Здесь уравнение (ii) применимо для линейной регрессии, поскольку y - непрерывная случайная величина. Логистическая регрессия также является линейной моделью, но мы не можем рассматривать уравнение (ii), потому что целевая переменная в логистической регрессии является двоичной или дискретной. Поэтому нам нужно выбрать другую функцию вместо f (E (y)).

Функция логита является связующей функцией в этом виде обобщенных линейных моделей. Функция логита определяется как: журнал (шансы) то есть
* odds = (успех / неудача)

Для распределения Бернулли E (y) = p. Следовательно, уравнение (ii) превращается в
f (E (y)) = f (p)
Теперь из уравнения (ii) и (iii), мы можем решить для p,

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

#plot sigmoid function
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(z):
 “””This function will give the values of sigmoid function”””
 sig_z = 1/(1+np.exp(-z))
 
 return sig_z
z = np.arange(-10,10,0.5)
plt.plot(x,sigmoid(x))
plt.grid()
plt.title(“Sigmoid function”)
plt.xlabel(“z”)
plt.ylabel(“sigmoid(z)”)
plt.show()

  • Можно заметить, что сигмовидная функция находится в диапазоне от 0 до 1.
  • Для более высоких положительных значений он достигает 1, а для более высоких отрицательных значений - до 0.
  • сигмовидная (0) равна 0,5
  • Эта функция имеет вероятностную интерпретацию.
  • Эту функцию очень легко отличить.
  • Он сжимает значения, выходящие за пределы некоторого диапазона. (На приведенном выше графике мы видим, что при z ›5 сигмоид (z) будет равен 1 и не будет увеличиваться впоследствии. Аналогично для отрицательных значений z.)

Также мы можем получить сигмоид из экспоненциального семейства.
Распределение Бернулли является примером экспоненциального семейства.
Давайте взглянем на него.
Экспоненциальное семейство распределения обозначается:

Для распределения Бернулли мы можем написать,

Сравнивая уравнение Бернулли с общим экспоненциальным выражением,
мы можем записать ψ (p) = log (p / (1 – p)).

Кроме того, обратите внимание, что если y | x; w ~ Bernoulli (p),, то E [y | x; w] = p

Итак, это дает функцию гипотезы,

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

Итак, мы вывели сигмовидную функцию, которая дает P (yᵢ = 1 | x), и тем самым мы можем получить P ( yᵢ = 0 | x). Применяя простую пороговую функцию, мы можем интерпретировать вероятность как метки класса, например:

Поэтому нам нужно передать значения x через сигмоид, чтобы получить вероятность меток классов. Вот и все ?!!!!

Но мы не нашли значения для w, верно? wᵢ - неизвестные параметры. Поэтому нам нужно оценить этот параметр, чтобы использовать сигмовидную функцию для получения вероятностных значений меток классов.
Чтобы найти лучший w, мы должны правильно сформулировать задачу оптимизации!?!.
Вот он ,,,,

Мы можем получить функцию потерь, используя оценку максимального правдоподобия (MLE). Теперь рассмотрим целевые переменные y₁, y₂,…., Yₙ как независимо одинаково распределенные случайные величины, то есть iid случайные величины, принимающие значения 0,1. Тогда совместная PMF определяется как:

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

Обратите внимание, что в этой функции потерь есть два члена. Но при расчете будет присутствовать только один член, а другой пропадет. Если yᵢ = 1, второй член станет нулем. если yᵢ = 0, первое слагаемое обращается в нуль. Таким образом, мы можем записать эту функцию потерь как:

Построим эту функцию потерь и посмотрим на нее.

import numpy as np
import matplotlib.pyplot as plt
#used the values of sigmoid function that we got from above code
plt.plot(sigmoid(x),-np.log(sigmoid(x)),
                       linestyle=" — ",label = "-log( sigmoid(z) )")
plt.plot(sigmoid(x),-np.log(1-sigmoid(x)),
                            label = "-log( 1-sigmoid(z) )")
plt.grid()
plt.title(“Plot of loss function”)
plt.xlabel(“sigmoid(z)”)
plt.ylabel(“loss function”)
plt.legend()
plt.show()

Мы знаем, что log (x) - вогнутая функция. Итак, -log (x) станет выпуклой функцией. * (Если f (x) - вогнутая функция, то -f (x) - выпуклая функция)
Оба члена в функциях потерь являются выпуклая функция. Линейная комбинация выпуклых функций также является выпуклой функцией. Итак, функция потерь - это выпуклая функция. Следовательно, он имеет только один минимум (поскольку выпуклые функции имеют только один минимум). Следовательно, мы можем оптимизировать, используя наш стандартный метод SGD (поскольку он имеет только один минимум, SGD будет работать достаточно хорошо).

Вот как мы можем вывести логистическую регрессию из вероятностного подхода.

Ссылки:

  • Виджай К. Рохатги и А. К. Эхсанес Салех (2015) Введение в вероятность и статистику. John Wiley & Sons, Inc.
  • https://en.wikipedia.org/wiki/Logistic_regression
  • Себастьян Рашка и Вахид Мирджалили (2017) Python для машинного обучения

Всегда открыты для исправлений…

СПАСИБО ……

Контактная информация:
[email protected]
https://www.linkedin.com/in/praveen-hegde-5bb6121b7/