Comece agoraComece grátis

Algoritmo de regressão logística

Vamos explorar os bastidores e implementar um algoritmo de regressão logística. Como a função logit() do statsmodels é bem complexa, você vai se limitar a implementar uma regressão logística simples para um único conjunto de dados.

Em vez de usar soma dos quadrados como métrica, vamos usar verossimilhança. No entanto, a log-verossimilhança é mais estável computacionalmente, então vamos usá-la. Na verdade, tem mais uma mudança: como queremos maximizar a log-verossimilhança, mas minimize() por padrão encontra valores mínimos, é mais fácil calcular a log-verossimilhança negativa.

O valor da log-verossimilhança para cada observação é $$ log(y_{pred}) * y_{actual} + log(1 - y_{pred}) * (1 - y_{actual}) $$

A métrica a calcular é a soma negativa dessas contribuições de log-verossimilhança.

Os valores explicativos (a coluna time_since_last_purchase de churn) estão disponíveis como x_actual. Os valores de resposta (a coluna has_churned de churn) estão disponíveis como y_actual. logistic foi importado de scipy.stats, e logit() e minimize() também estão carregadas.

Este exercicio faz parte do curso

Regressão Intermediária com statsmodels em Python

Ver curso

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

# 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]))
Editar e Executar Código