ÎncepețiÎncepe gratuit

Algoritmul de regresie logistică

Hai să explorăm mecanismul intern și să implementăm un algoritm de regresie logistică. Deoarece funcția logit() din statsmodels este foarte complexă, te vei limita la implementarea regresiei logistice simple pentru un singur set de date.

În loc să folosim suma pătratelor ca metrică, vrem să folosim verosimilitatea. Totuși, log-verosimilitatea este mai stabilă din punct de vedere computațional, așa că o vom folosi pe aceasta. Mai este și o altă ajustare: deoarece vrem să maximizăm log-verosimilitatea, iar minimize() caută implicit valori minime, este mai simplu să calculăm log-verosimilitatea negativă.

Valoarea log-verosimilității pentru fiecare observație este $$ log(y_{pred}) * y_{actual} + log(1 - y_{pred}) * (1 - y_{actual}) $$

Metrica de calculat este suma negativă a acestor contribuții la log-verosimilitate.

Valorile explicative (coloana time_since_last_purchase din churn) sunt disponibile ca x_actual. Valorile răspuns (coloana has_churned din churn) sunt disponibile ca y_actual. logistic este importat din scipy.stats, iar logit() și minimize() sunt de asemenea încărcate.

Acest exercițiu face parte din cursul

Regresie intermediară cu statsmodels în Python

Vezi cursul

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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]))
Editează și rulează codul