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
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]))