ロジスティック回帰とROC曲線

scikit-learn による教師あり学習

George Boorman

Core Curriculum Manager, DataCamp

二値分類のためのロジスティック回帰

  • ロジスティック回帰:分類問題に使用

  • ロジスティック回帰は確率を出力する

  • 確率が $ \ p>0.5$ の場合:

    • データは1とラベル付けされる
  • 確率が $ \ p<0.5$ の場合:

    • データは0とラベル付けされる
scikit-learn による教師あり学習

線形決定境界

特徴1と特徴2の散布図。解約予測のための直線の決定境界が左から右へ走っている

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...