ロジスティック回帰の仕組み

statsmodels を使った中級 Regression

Maarten Van den Broeck

Content Developer at DataCamp

二乗和ではうまくいきません

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

y_actual は常に 0 または 1 です。

y_pred は 0 から 1 の間の値です。

二乗和より優れた指標があります。

statsmodels を使った中級 Regression

尤度

       y_pred * y_actual
statsmodels を使った中級 Regression

尤度

       y_pred * y_actual + (1 - y_pred) * (1 - y_actual)
statsmodels を使った中級 Regression

尤度

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

y_actual = 1 のとき

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

y_actual = 0 のとき

y_pred * 0 + (1 - y_pred) * (1 - 0) = 1 - y_pred
statsmodels を使った中級 Regression

対数尤度

  • 尤度の計算では非常に小さい数値を多数加算するため、数値誤差が生じます。
  • 対数尤度の方が計算が簡単です。
log_likelihood = np.log(y_pred) * y_actual + np.log(1 - y_pred) * (1 - y_actual)

どちらの式も同じ答えになります。

statsmodels を使った中級 Regression

負の対数尤度

対数尤度の最大化は、負の対数尤度の最小化と同じです。

-np.sum(log_likelihoods)
statsmodels を使った中級 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]
)
statsmodels を使った中級 Regression

練習しましょう!

statsmodels を使った中級 Regression

Preparing Video For Download...