Hur logistisk regression fungerar

Intermediär regression med statsmodels i Python

Maarten Van den Broeck

Content Developer at DataCamp

Kvadratsumma fungerar inte

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

y_actual är alltid 0 eller 1.

y_pred är mellan 0 och 1.

Det finns ett bättre mått än minstakvadratsum.

Intermediär regression med statsmodels i Python

Sannolikhet

       y_pred * y_actual
Intermediär regression med statsmodels i Python

Sannolikhet

       y_pred * y_actual + (1 - y_pred) * (1 - y_actual)
Intermediär regression med statsmodels i Python

Sannolikhet

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

När y_actual = 1

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

När y_actual = 0

y_pred * 0 + (1 - y_pred) * (1 - 0) = 1 - y_pred
Intermediär regression med statsmodels i Python

Log-sannolikhet

  • Beräkning av sannolikhet innebär addition av många mycket små tal, vilket leder till numeriska fel.
  • Log-sannolikhet är enklare att beräkna.
log_likelihood = np.log(y_pred) * y_actual + np.log(1 - y_pred) * (1 - y_actual)

Båda formlerna ger samma svar.

Intermediär regression med statsmodels i Python

Negativ log-sannolikhet

Att maximera log-sannolikheten är detsamma som att minimera negativ log-sannolikhet.

-np.sum(log_likelihoods)
Intermediär regression med statsmodels i Python

Algoritm för logistisk 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]
)
Intermediär regression med statsmodels i Python

Nu kör vi en övning!

Intermediär regression med statsmodels i Python

Preparing Video For Download...