So funktioniert logistische Regression

Fortgeschrittene Regression mit statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Quadratsumme funktioniert nicht

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

y_actual ist immer 0 oder 1.

y_pred liegt zwischen 0 und 1.

Es gibt eine bessere Metrik als die Quadratsumme.

Fortgeschrittene Regression mit statsmodels in Python

Likelihood

       y_pred * y_actual
Fortgeschrittene Regression mit statsmodels in Python

Likelihood

       y_pred * y_actual + (1 - y_pred) * (1 - y_actual)
Fortgeschrittene Regression mit statsmodels in Python

Likelihood

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

Wenn y_actual = 1

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

Wenn y_actual = 0

y_pred * 0 + (1 - y_pred) * (1 - 0) = 1 - y_pred
Fortgeschrittene Regression mit statsmodels in Python

Log-Likelihood

  • Likelihood zu berechnen summiert viele sehr kleine Zahlen und führt zu numerischen Fehlern.
  • Log-Likelihood ist leichter zu berechnen.
log_likelihood = np.log(y_pred) * y_actual + np.log(1 - y_pred) * (1 - y_actual)

Beide Gleichungen liefern dasselbe Ergebnis.

Fortgeschrittene Regression mit statsmodels in Python

Negative Log-Likelihood

Maximierung der Log-Likelihood entspricht der Minimierung der negativen Log-Likelihood.

-np.sum(log_likelihoods)
Fortgeschrittene Regression mit statsmodels in Python

Algorithmus der logistischen Regression

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]
)
Fortgeschrittene Regression mit statsmodels in Python

Lass uns üben!

Fortgeschrittene Regression mit statsmodels in Python

Preparing Video For Download...