分類モデルの評価-ROC曲線とAUC
ROC(Receiver Operating Characteristic)曲線とは
ROC曲線は、縦軸に真陽性率(tpr: true positive rate)、横軸に偽陽性率(fpr: false positive rate)の値をプロットした曲線です。
真陽性率は、実際の正例のうちどれだけ正例を予測できたかの割合です。(=再現率)
偽陽性率は、実際の負例のうち正例と予測されてしまった割合です。
予測確率を予測ラベルに変換する際の閾値を1.0と0.0の間で徐々に変化させ、真陽性率と偽陽性率の関係をプロットします。
閾値(Threshold)とは
ロジスティック回帰は予測確率を出力します。予測確率を予測ラベルに変換する際に使用する値が閾値です。
例えばスパムメールの分類で、閾値を0.5と設定した場合、
予測確率が0.5より大きい場合スパムであると判定します。
予測確率が0.5未満の場合本物メールであると判定します。
ロジスティック回帰
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.4, random_state=42)
logreg = LogisticRegression()
logreg.fit(X_train, y_train)
y_pred = logreg.predict(X_test)
print(y_pred)
出力:
[0 0 0 0 0 0 0 1 0 1]
ロジスティック回帰の閾値はデフォルト0.5です。
また、予測確率は以下のように計算できます。
y_pred_prob = logreg.predict_proba(X_test)[:,1]
print(y_pred_prob)
出力:
[0.39590165 0.23957606 0.20329823 0.22763991 0.42805118 0.48236847
0.06612875 0.64996227 0.49846704 0.63918863]
ROC曲線のプロット
from sklearn.metrics import roc_curve
# 予測確率の計算
y_pred_prob = logreg.predict_proba(X_test)[:,1]
print(y_pred_prob)
# ROC曲線の値の生成:fpr、tpr、閾値
fpr, tpr, thresholds = roc_curve(y_test, y_pred_prob)
# ROC曲線のプロット
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr, tpr, label='Logistic Regression')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.show()
AUC(Area Under the Curve)とは
AUCは、ROC曲線の下部分の面積です。
AUCの面積が大きいほど機械学習の性能が良いです。
AUCの計算
from sklearn.metrics import roc_auc_score
from sklearn.model_selection import cross_val_score
y_pred_prob = logreg.predict_proba(X_test)[:,1]
# AUCの計算
print("AUC: {}".format(roc_auc_score(y_test, y_pred_prob)))
# AUCの計算(交差検証)
cv_auc = cross_val_score(logreg, X, y, cv=5, scoring='roc_auc')
print("5回の交差検証で計算されたAUC: {}".format(cv_auc))
出力:
AUC: 0.8254806777079764
5回の交差検証で計算されたAUC: [0.80148148 0.8062963 0.81481481 0.86245283 0.8554717 ]
参考情報
Author And Source
この問題について(分類モデルの評価-ROC曲線とAUC), 我々は、より多くの情報をここで見つけました https://qiita.com/fastso/items/8069b09489cb37d2fea4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .