Začněte nyníZačněte zdarma

Algoritmus logistické regrese

Podívejme se pod pokličku a implementujeme vlastní algoritmus logistické regrese. Protože funkce logit() z knihovny statsmodels je velmi komplexní, zaměříme se na implementaci jednoduché logistické regrese pro konkrétní dataset.

Místo součtu čtverců použijeme jako metriku věrohodnost (likelihood). Logaritmická věrohodnost je ale numericky stabilnější, takže ji upřednostníme. A ještě jedna změna: protože chceme logaritmickou věrohodnost maximalizovat, ale funkce minimize() standardně hledá minimum, je praktičtější počítat zápornou logaritmickou věrohodnost.

Hodnota logaritmické věrohodnosti pro každé pozorování je $$ log(y_{pred}) * y_{actual} + log(1 - y_{pred}) * (1 - y_{actual}) $$

Výsledná metrika je záporný součet těchto příspěvků logaritmické věrohodnosti.

Vysvětlující hodnoty (sloupec time_since_last_purchase z datasetu churn) jsou dostupné jako x_actual. Cílové hodnoty (sloupec has_churned z datasetu churn) jsou dostupné jako y_actual. logistic je importováno z scipy.stats a funkce logit() a minimize() jsou také načteny.

Toto cvičení je součástí kurzu

Intermediate Regression with statsmodels in Python

Zobrazit kurz

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# Complete the function
def calc_neg_log_likelihood(coeffs):
    # Unpack coeffs
    ____, ____ = ____
    # Calculate predicted y-values
    y_pred = ____
    # Calculate log-likelihood
    log_likelihood = ____
    # Calculate negative sum of log_likelihood
    neg_sum_ll = ____
    # Return negative sum of log_likelihood
    return ____

# Test the function with intercept 10 and slope 1
print(calc_neg_log_likelihood([10, 1]))
Upravit a spustit kód