羅吉斯回歸與 ROC 曲線

使用 scikit-learn 進行監督式學習

George Boorman

Core Curriculum Manager, DataCamp

二元分類的羅吉斯回歸

  • 羅吉斯回歸用於分類問題

  • 羅吉斯回歸輸出機率

  • 若機率 $ \ p>0.5$:

    • 標記為 1
  • 若機率 $ \ p<0.5$:

    • 標記為 0
使用 scikit-learn 進行監督式學習

線性決策邊界

feature1 對 feature2 的散佈圖,左到右的一條直線為流失預測的決策邊界

使用 scikit-learn 進行監督式學習

在 scikit-learn 中使用羅吉斯回歸

from sklearn.linear_model import LogisticRegression

logreg = LogisticRegression()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
logreg.fit(X_train, y_train)
y_pred = logreg.predict(X_test)
使用 scikit-learn 進行監督式學習

預測機率

y_pred_probs = logreg.predict_proba(X_test)[:, 1]

print(y_pred_probs[0])
[0.08961376]
使用 scikit-learn 進行監督式學習

機率門檻值

  • 預設門檻值為 0.5(羅吉斯回歸)

  • 並非羅吉斯回歸所獨有

    • KNN 分類器也有門檻值
  • 如果我們調整門檻值會如何?

使用 scikit-learn 進行監督式學習

ROC 曲線

真陽率對假陽率的圖,虛線由左下到右上

使用 scikit-learn 進行監督式學習

ROC 曲線

右上角標示門檻值為 0

使用 scikit-learn 進行監督式學習

ROC 曲線

左下角也標示門檻值為 1

使用 scikit-learn 進行監督式學習

ROC 曲線

兩個門檻值皆已標示

使用 scikit-learn 進行監督式學習

ROC 曲線

點沿虛線之上向右上彎曲,代表不同門檻值

使用 scikit-learn 進行監督式學習

ROC 曲線

曲線沿虛線之上向右上彎曲,代表不同門檻值

使用 scikit-learn 進行監督式學習

繪製 ROC 曲線

from sklearn.metrics import roc_curve

fpr, tpr, thresholds = roc_curve(y_test, y_pred_probs)
plt.plot([0, 1], [0, 1], 'k--') plt.plot(fpr, tpr) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Logistic Regression ROC Curve') plt.show()
使用 scikit-learn 進行監督式學習

繪製 ROC 曲線

流失資料集的 ROC 曲線圖,線從左下向右上移動

使用 scikit-learn 進行監督式學習

ROC AUC

流失資料集的 ROC 曲線圖,線從左下向右上移動,並標註 p=0.67

使用 scikit-learn 進行監督式學習

在 scikit-learn 中計算 ROC AUC

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_test, y_pred_probs))
0.6700964152663693
使用 scikit-learn 進行監督式學習

一起來練習吧!

使用 scikit-learn 進行監督式學習

Preparing Video For Download...