邏輯斯迴歸的運作方式

使用 Python 的 statsmodels 進行迴歸分析:中級

Maarten Van den Broeck

Content Developer at DataCamp

平方和行不通

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

y_actual 永遠是 01

y_pred 介於 01 之間。

比平方和更好的衡量指標。

使用 Python 的 statsmodels 進行迴歸分析:中級

概似度(Likelihood)

       y_pred * y_actual
使用 Python 的 statsmodels 進行迴歸分析:中級

概似度(Likelihood)

       y_pred * y_actual + (1 - y_pred) * (1 - y_actual)
使用 Python 的 statsmodels 進行迴歸分析:中級

概似度(Likelihood)

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
使用 Python 的 statsmodels 進行迴歸分析:中級

對數概似度(Log-likelihood)

  • 計算概似度要加總許多極小的數,容易造成數值誤差。
  • 對數概似度較好算。
log_likelihood = np.log(y_pred) * y_actual + np.log(1 - y_pred) * (1 - y_actual)

兩種式子會得到相同結果。

使用 Python 的 statsmodels 進行迴歸分析:中級

負對數概似度

最大化對數概似度等同於最小化負對數概似度。

-np.sum(log_likelihoods)
使用 Python 的 statsmodels 進行迴歸分析:中級

邏輯斯迴歸演算法

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]
)
使用 Python 的 statsmodels 進行迴歸分析:中級

一起來練習吧!

使用 Python 的 statsmodels 進行迴歸分析:中級

Preparing Video For Download...