サーチ…


ROCとAUCの紹介

分類子の出力品質を評価するReceiver Operating Characteristic(ROC)メトリックの例

ROC曲線は、通常、Y軸上で真陽性率を、X軸上で偽陽性率を特徴とする。これは、プロットの左上隅が「理想的な」点であることを意味します。これは、偽陽性率0、真陽性率1です。これはあまり現実的ではありませんが、曲線下面積(AUC)が通常はより良いことを意味します。

真の陽性率を最大にし、偽陽性率を最小にすることが理想的であるため、ROC曲線の「急峻さ」も重要です。

簡単な例:

import numpy as np
from sklearn import metrics
import matplotlib.pyplot as plt

任意のy値 - 実際には、これは予測された目標値です( model.predict(x_test) ):

y = np.array([1,1,2,2,3,3,4,4,2,3])

スコアは、与えられたテストデータとラベルの平均精度です( model.score(X,Y) )。

scores = np.array([0.3, 0.4, 0.95,0.78,0.8,0.64,0.86,0.81,0.9, 0.8])

ROC曲線およびAUCを計算する:

fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
roc_auc = metrics.auc(fpr, tpr)

プロット:

plt.figure()
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()

出力:

ここに画像の説明を入力

注意:ソースは、これらから採取したリンク1リンク2

オーバーライドおよびクロス検証によるROC-AUCスコア

ROC-AUC(曲線下面積)スコアを計算するために予測される確率が必要である。 cross_val_predictは、分類子のpredictメソッドを使用します。 ROC-AUCスコアを取得することができるようにするために、一つは単純に上書きして、分類器をサブクラス化することができますpredict 、それは次のように作用するように、方法をpredict_proba

from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import cross_val_predict
from sklearn.metrics import roc_auc_score

class LogisticRegressionWrapper(LogisticRegression):
    def predict(self, X):
        return super(LogisticRegressionWrapper, self).predict_proba(X)

X, y = make_classification(n_samples = 1000, n_features=10, n_classes = 2, flip_y = 0.5)

log_reg_clf = LogisticRegressionWrapper(C=0.1, class_weight=None, dual=False,
             fit_intercept=True)

y_hat = cross_val_predict(log_reg_clf, X, y)[:,1]

print("ROC-AUC score: {}".format(roc_auc_score(y, y_hat)))

出力:

ROC-AUC score: 0.724972396025


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow