Fonctionnement de la régression logistique

Régression intermédiaire avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

La somme des carrés ne convient pas

np.sum((y_pred - y_actual) ** 2)

y_actual vaut toujours 0 ou 1.

y_pred est entre 0 et 1.

Il existe une meilleure mesure que la somme des carrés.

Régression intermédiaire avec statsmodels en Python

Vraisemblance

       y_pred * y_actual
Régression intermédiaire avec statsmodels en Python

Vraisemblance

       y_pred * y_actual + (1 - y_pred) * (1 - y_actual)
Régression intermédiaire avec statsmodels en Python

Vraisemblance

np.sum(y_pred * y_actual + (1 - y_pred) * (1 - y_actual))

Quand y_actual = 1

y_pred * 1 + (1 - y_pred) * (1 - 1) = y_pred

Quand y_actual = 0

y_pred * 0 + (1 - y_pred) * (1 - 0) = 1 - y_pred
Régression intermédiaire avec statsmodels en Python

Log-vraisemblance

  • Calculer la vraisemblance additionne de très petits nombres, ce qui peut créer des erreurs numériques.
  • Le log-vraisemblance est plus simple à calculer.
log_likelihood = np.log(y_pred) * y_actual + np.log(1 - y_pred) * (1 - y_actual)

Les deux équations donnent le même résultat.

Régression intermédiaire avec statsmodels en Python

Log-vraisemblance négatif

Maximiser le log-vraisemblance revient à minimiser le log-vraisemblance négatif.

-np.sum(log_likelihoods)
Régression intermédiaire avec statsmodels en Python

Algorithme de régression logistique

def calc_neg_log_likelihood(coeffs)

intercept, slope = coeffs
# More calculation!
from scipy.optimize import minimize

minimize(
  fun=calc_neg_log_likelihood,
  x0=[0, 0]
)
Régression intermédiaire avec statsmodels en Python

Passons à la pratique !

Régression intermédiaire avec statsmodels en Python

Preparing Video For Download...