Як працює логістична регресія

Середній рівень регресії зі statsmodels у Python

Maarten Van den Broeck

Content Developer at DataCamp

Сума квадратів не підходить

np.sum((y_pred - y_actual) ** 2)

y_actual завжди 0 або 1.

y_pred між 0 та 1.

Є краща метрика, ніж сума квадратів.

Середній рівень регресії зі statsmodels у Python

Правдоподібність

       y_pred * y_actual
Середній рівень регресії зі statsmodels у Python

Правдоподібність

       y_pred * y_actual + (1 - y_pred) * (1 - y_actual)
Середній рівень регресії зі statsmodels у Python

Правдоподібність

np.sum(y_pred * y_actual + (1 - y_pred) * (1 - y_actual))

Коли y_actual = 1

y_pred * 1 + (1 - y_pred) * (1 - 1) = y_pred

Коли y_actual = 0

y_pred * 0 + (1 - y_pred) * (1 - 0) = 1 - y_pred
Середній рівень регресії зі statsmodels у Python

Лог-правдоподібність

  • Обчислення правдоподібності додає багато дуже малих чисел, що спричиняє числові похибки.
  • Лог-правдоподібність обчислювати легше.
log_likelihood = np.log(y_pred) * y_actual + np.log(1 - y_pred) * (1 - y_actual)

Обидва рівняння дають однаковий результат.

Середній рівень регресії зі statsmodels у Python

Від'ємна лог-правдоподібність

Максимізація лог-правдоподібності дорівнює мінімізації від'ємної лог-правдоподібності.

-np.sum(log_likelihoods)
Середній рівень регресії зі statsmodels у Python

Алгоритм логістичної регресії

def calc_neg_log_likelihood(coeffs)

intercept, slope = coeffs
# More calculation!
from scipy.optimize import minimize

minimize(
  fun=calc_neg_log_likelihood,
  x0=[0, 0]
)
Середній рівень регресії зі statsmodels у Python

Давайте потренуємось!

Середній рівень регресії зі statsmodels у Python

Preparing Video For Download...