開始使用免費開始

Logistic regression 演算法

來深入了解內部運作,並實作一個 logistic regression 演算法。由於 statsmodelslogit() 函式相當複雜,你將先針對單一資料集實作簡單的 logistic regression。

我們不要用平方和作為衡量指標,而是使用概似度(likelihood)。不過,對數概似度(log-likelihood)在數值運算上更穩定,所以我們改用對數概似度。其實還有一個調整:我們想要最大化對數概似度,但 minimize() 預設是找最小值,因此改計算「負的」對數概似度會比較容易。

每筆觀測的對數概似度為: $$ log(y_{pred}) * y_{actual} + log(1 - y_{pred}) * (1 - y_{actual}) $$

要計算的指標是這些對數概似度貢獻的負和。

解釋變數(churntime_since_last_purchase 欄)已以 x_actual 提供。 應變數(churnhas_churned 欄)已以 y_actual 提供。 logistic 已從 scipy.stats 匯入,logit()minimize() 也已載入。

本練習屬於課程

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

檢視課程

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Complete the function
def calc_neg_log_likelihood(coeffs):
    # Unpack coeffs
    ____, ____ = ____
    # Calculate predicted y-values
    y_pred = ____
    # Calculate log-likelihood
    log_likelihood = ____
    # Calculate negative sum of log_likelihood
    neg_sum_ll = ____
    # Return negative sum of log_likelihood
    return ____

# Test the function with intercept 10 and slope 1
print(calc_neg_log_likelihood([10, 1]))
編輯並執行程式碼