Jak działa regresja logistyczna

Regresja średnio zaawansowana ze statsmodels w Pythonie

Maarten Van den Broeck

Content Developer at DataCamp

Suma kwadratów nie działa

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

y_actual zawsze wynosi 0 lub 1.

y_pred przyjmuje wartości między 0 a 1.

Istnieje lepsza miara niż suma kwadratów.

Regresja średnio zaawansowana ze statsmodels w Pythonie

Wiarygodność

       y_pred * y_actual
Regresja średnio zaawansowana ze statsmodels w Pythonie

Wiarygodność

       y_pred * y_actual + (1 - y_pred) * (1 - y_actual)
Regresja średnio zaawansowana ze statsmodels w Pythonie

Wiarygodność

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

Gdy y_actual = 1

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

Gdy y_actual = 0

y_pred * 0 + (1 - y_pred) * (1 - 0) = 1 - y_pred
Regresja średnio zaawansowana ze statsmodels w Pythonie

Log-wiarygodność

  • Obliczanie wiarygodności wymaga sumowania bardzo małych liczb, co prowadzi do błędów numerycznych.
  • Log-wiarygodność jest łatwiejsza do obliczenia.
log_likelihood = np.log(y_pred) * y_actual + np.log(1 - y_pred) * (1 - y_actual)

Oba równania dają ten sam wynik.

Regresja średnio zaawansowana ze statsmodels w Pythonie

Ujemna log-wiarygodność

Maksymalizacja log-wiarygodności jest równoważna minimalizacji ujemnej log-wiarygodności.

-np.sum(log_likelihoods)
Regresja średnio zaawansowana ze statsmodels w Pythonie

Algorytm regresji logistycznej

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]
)
Regresja średnio zaawansowana ze statsmodels w Pythonie

Czas na ćwiczenia!

Regresja średnio zaawansowana ze statsmodels w Pythonie

Preparing Video For Download...