1. Nauka
  2. /
  3. Kursy
  4. /
  5. Regresja średnio zaawansowana ze statsmodels w Pythonie

Connected

ćwiczenie

Algorytm regresji logistycznej

Zajrzyjmy pod maskę i zaimplementujmy algorytm regresji logistycznej. Ponieważ funkcja logit() z biblioteki statsmodels jest bardzo złożona, ograniczymy się do prostej regresji logistycznej dla jednego zbioru danych.

Zamiast sumy kwadratów jako miary jakości modelu, użyjemy wiarygodności. Jednak log-wiarygodność jest bardziej stabilna obliczeniowo, więc skorzystamy z niej. Jest jeszcze jedna zmiana: ponieważ chcemy maksymalizować log-wiarygodność, a minimize() domyślnie szuka minimum, łatwiej jest obliczać ujemną log-wiarygodność.

Wartość log-wiarygodności dla każdej obserwacji wynosi $$ log(y_{pred}) * y_{actual} + log(1 - y_{pred}) * (1 - y_{actual}) $$

Miarą do obliczenia jest ujemna suma tych składników log-wiarygodności.

Wartości zmiennej objaśniającej (kolumna time_since_last_purchase zbioru churn) są dostępne jako x_actual. Wartości zmiennej odpowiedzi (kolumna has_churned zbioru churn) są dostępne jako y_actual. logistic jest zaimportowane z scipy.stats, a logit() i minimize() są również wczytane.

Instrukcje 1/2

undefined XP
    1
    2

Uzupełnij ciało funkcji.

  • Rozpakuj coeffs na intercept i slope.
  • Oblicz przewidywane wartości y jako wyraz wolny plus nachylenie pomnożone przez rzeczywiste wartości x, przekształcone za pomocą logistycznej dystrybuanty (CDF).
  • Oblicz log-wiarygodność jako logarytm przewidywanych wartości y pomnożony przez rzeczywiste wartości y, plus logarytm z jedności minus przewidywane wartości y, pomnożony przez jedność minus rzeczywiste wartości y.
  • Oblicz ujemną sumę log-wiarygodności.
  • Zwróć ujemną sumę log-wiarygodności.