機械学習:AUC計算sklearnの原理に基づいて、

AUC原理

A、AUC起源

AUCは、分類モデルの品質を測定するために使用される標準です。一般などの情報検索(IR)精密で使用し、芸術を思い出し、そして、分類精度:実際には、このような多くの規格、例えば:約10年の標準的な機械学習文学の世界を支配前。実際には、尺度は「良い」分類結果の人々の追求を反映し、同期間中に異なる対策が対策は意識を反映して、異なる時間に「良い」この最も根本的な問題の異なる理解、しばらく人気のある何人を反映しています物事変化の深さ。近年では、実用化への研究室から関連技術を機械学習と一緒に、メトリクスの実際的な問題のいくつかは、前方新たな需要を置きます。特に、異なるクラスのサンプルの不均一な分布(クラス分布の不均衡の問題)の現実。伝統的なメトリクス、このような精度は、適切な応答分類器の性能をすることはできません。

例:クラスAのサンプル90、サンプル10 Bクラスで試験試料。C1は、分類全ての試験サンプルは、クラスA、90 Aサンプル分類C2、70のサブクラス、5分間のタイプBの10個のサンプルに分けました。C1は、90%の分類精度、75%のC2の分類精度です。しかし、それはC2より有用ことは明らかです。

また、別の分類問題の数が犯した過ちのコストは(機密学習の費用)異なっています。このように、従来の分類閾値を練習するデフォルトの0.5にもしっくり来るようではありません。 

上記課題を解決するためには、医療分析フィールド--ROC分析から、新しい分類モデルの性能評価方法を紹介します。

ROC解析自体は非常に豊富なコンテンツ、Googleに関心のある読者です。

二、ROC曲線

 

ROC曲線:受信者動作特性(receiveroperating特性)は、曲線ROC上の各点は、同じ刺激信号の感度を反映しています。

横軸:負正クラスレート(偽ポジティブレートFPR)特異性、負分割例えば、全て陰性症例の割合の全ての実施形態;(1-特異性)

縦軸:実際の(真のポジティブ率のTPR)感度の種類、感度(n型カバレッジ)

2バイナリ分類のため、陽性(ポジティブ)、あるいはネガ型(負)へのクラスのインスタンス。しかし、実際の分類は、4例が発生します。

(1)クラスのインスタンスが正であると、実際のクラスであるポジ型であることが予測される場合(真のポジティブTP)

(2)クラスのインスタンスが正であるが、ネガ型が予測される場合、すなわち、偽陰性のクラス(偽陰性のFN)

(3)クラスのインスタンスは負であるが、n型になると予測される、すなわち偽陽性クラス(偽ポジティブFP)場合

(4)クラスのインスタンスは負であるが、ネガ型を予測するために、すなわち真陰性クラス(真陰性TN)場合

TP:肯定の正しい数

FN:漏れ、見つかったマッチのない正確な数はありません

FP:falseの場合、一致するものが間違っていません

拒否する権利の非マッチングの数:TN

分割表を次のように

 

 

テーブルの上に横、縦軸式を描くことができます。

(1)真のクラスレート(真のポジティブ率)TPR:TP /(TP + FN)、正のクラス分類の代表は、正の例は、すべての正のインスタンスの実際の比率を予測しました。感度

(2)n型陰性率(偽ポジティブ率)FPR:FP /(FP + TN)、nは分類器の予測クラスは、すべての負の負例インスタンスの実際の割合を表します。1-特異

(3)クラス真陰性率(真陰性率)TNR:TN /(FP + TN)、負クラスの実際の負の例は、予測された分類が全て負の場合、TNR = 1-FPRの割合で表します。特異

ロジスティック回帰分類器を仮定すると、クラスの各インスタンスに対して陽性確率を与える、次いで、0.6の閾値を設定することにより、より大きいかポジ型0.6の確率に等しく、より少ないネガ型0.6未満です。平面内の座標点対応を与えるために、(FPR、TPR)のセットに対応する計算することができます。より正の例はクラスに分割されて漸減閾値と、これらのクラスはまた、負の実際の例でn型ドープされ、即ち、同時にTPR及びFPRを増加させることができます。場合座標点(0,0)に対応する最大閾値、閾値の最小値、対応する座標点(1,1)。

各ポイント、ラインのROC曲線に対応する閾値以下実線。

 

 

 

 

横軸FPR:1-TNR、1-特異度、FPR大きいほど、正クラス予測負の実クラス。

縦TPR:感度(ポジティブクラスカバレッジ)、大規模TPR、より積極クラス予測実際に正のクラス。

ターゲット上:TPR = 1、FPR = 0、すなわち、図(0,1)点、そう近いROC曲線(0,1)の点は、より良好な対角45度、感度、特異大きな効果を相殺します良いです。

第三に、ROC曲線ドロー

一連のサンプルをとるようになってきた正の確率そのクラスに分割され、その後、サイズに応じて、以下のPを示した(図合計20個の試験サンプル、「クラス」列には、各ラベルの真の試験サンプルを示し、一例でソート陽性サンプル、nは負のサンプルを表す)、「スコア」とは、各試験サンプルが陽性サンプルの確率を属していることを示しています。

 

次に、我々は、高、低に、閾値、閾値、試験サンプルの確率は正のサンプルを属している場合、またはこのしきい値に等しいより大きいとして「スコア」の値を入れ、我々はそれが陽性試料(予測ラベル)、そうでなければ負のサンプル(あると考えてい予想タブ)。

、例えば図彼らの「スコア」値以上であるので、「スコア」が0.6である試料4は、その後、サンプルは、陽性、4つのサンプル(予測タグ)と考えられています0.6、他のサンプルは陰性試料(予測タブ)とみなされています。異なるしきい値を選択するたびに、我々はFPRとTPR、ROC曲線上の点、すなわちのセットを取得することができます。このように、我々は、TPR及びFPR値の20基の合計を取得し、それらは以下に示すように描画されたROC曲線の結果です。

 

 

 

0.1と1の間の曲線下のROC面積:AUC(曲線下面積)。AUC値は、視覚的に、より良い値を分類器の品質を評価することができたよう。

最初のAUC値を使用すると、正と負のサンプルのランダムなサンプルを選ぶ際に、現在の分類、確率値であるアルゴリズムの計算値に基づいては、負のAUC値は、この正のサンプルは確率サンプルの前に来た電流を、より大きなAUC値をスコア分類アルゴリズムは、先にサンプルの負の陽性サンプルである可能性が高い、分類することが可能です。

次に、我々は列子の具体的な実現に来ます:

sklearnは、計算されたROCの例を示します:

y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)

通过计算,得到的结果(TPRFPR截断点)为

fpr = array([ 0. ,  0.5,  0.5,  1. ])
tpr = array([ 0.5,  0.5,  1. ,  1. ])
thresholds = array([ 0.8 ,  0.4 ,  0.35,  0.1 ])    #截断点

详细计算过程:

y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])

 (1). 分析数据

y是一个一维数组(样本的真实分类)。数组值表示类别(一共有两类,1和2)。我们假设y中的1表示反例,2表示正例。即将y重写为:

y_true = [0, 0, 1, 1]

score即各个样本属于正例的概率。

(2). 针对score,将数据排序

样本 预测属于P的概率(score) 真实类别
y[0] 0.1 N
y[2] 0.35 P
y[1] 0.4 N
y[3] 0.8 P

(3). 将截断点依次取值为score值

将截断点依次取值为0.1, 0.35, 0.4, 0.8时,计算TPR和FPR的结果。

 3.1. 截断点为.01

说明只要score>=0.1,它的预测类别就是正例。 
此时,因为4个样本的score都大于等于0.1,所以,所有样本的预测类别都为P。

scores = [0.1, 0.4, 0.35, 0.8]
y_true = [0, 0, 1, 1] 
y_pred = [1, 1, 1, 1]

 

TPR = TP/(TP+FN) = 1 

FPR = FP/(TN+FP) = 1

3.2. 截断点为0.35

说明只要score>=0.35,它的预测类别就是P。 
此时,因为4个样本的score有3个大于等于0.35。所以,所有样本的预测类有3个为P(2个预测正确,1一个预测错误);1个样本被预测为N(预测正确)。

scores = [0.1, 0.4, 0.35, 0.8]
y_true = [0, 0, 1, 1] 
y_pred = [0, 1, 1, 1]

TPR = TP/(TP+FN) = 1 
FPR = FP/(TN+FP) = 0.5

3.3. 截断点为0.4

说明只要score>=0.4,它的预测类别就是P。 
此时,因为4个样本的score有2个大于等于0.4。所以,所有样本的预测类有2个为P(1个预测正确,1一个预测错误);2个样本被预测为N(1个预测正确,1一个预测错误)。

scores = [0.1, 0.4, 0.35, 0.8]
y_true = [0, 0, 1, 1] 
y_pred = [0, 1, 0, 1]

 TPR = TP/(TP+FN) = 0.5 

FPR = FP/(TN+FP) = 0.5

 3.4. 截断点为0.8

说明只要score>=0.8,它的预测类别就是P。所以,所有样本的预测类有1个为P(1个预测正确);3个样本被预测为N(2个预测正确,1一个预测错误)。

scores = [0.1, 0.4, 0.35, 0.8]
y_true = [0, 0, 1, 1] 
y_pred = [0, 0, 0, 1]

TPR = TP/(TP+FN) = 0.5 
FPR = FP/(TN+FP) = 0

计算完毕!

四、AUC的计算

   1.  最直观的,根据AUC这个名称,我们知道,计算出ROC曲线下面的面积,就是AUC的值。事实上,这也是在早期 Machine Learning文献中常见的AUC计算方法。由于我们的测试样本是有限的。我们得到的AUC曲线必然是一个阶梯状的。因此,计算的AUC也就是这些阶梯 下面的面积之和。这样,我们先把score排序(假设score越大,此样本属于正类的概率越大),然后一边扫描就可以得到我们想要的AUC。但是,这么做有个缺点,就是当多个测试样本的score相等的时候,我们调整一下阈值,得到的不是曲线一个阶梯往上或者往右的延展,而是斜着向上形成一个梯形。此时,我们就需要计算这个梯形的面积。由此,我们可以看到,用这种方法计算AUC实际上是比较麻烦的。 

   2. 一个关于AUC的很有趣的性质是,它和Wilcoxon-Mann-Witney Test是等价的。而Wilcoxon-Mann-Witney Test就是测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score(在实际预测过程中,分类器总是分别给正负样本一个概率(score)值,并根据设定的阈值,将样本预测为正或负样本标签)。有了这个定义,我们就得到了另外一中计算AUC的办法:得到这个概率。我们知道,在有限样本中我们常用的得到概率的办法就是通过频率来估计之。这种估计随着样本规模的扩大而逐渐逼近真实值。这和上面的方法中,样本数越多,计算的AUC越准确类似,也和计算积分的时候,小区间划分的越细,计算的越准确是同样的道理。具体来说就是统计一下所有的 M×N(M为正类样本的数目,N为负类样本的数目)个正负样本对中,有多少个组中的正样本的score大于负样本的score。当二元组中正负样本的 score相等的时候,按照0.5计算。然后除以MN。实现这个方法的复杂度为O(n^2)。n为样本数(即n=M+N) 
   3.  第三种方法实际上和上述第二种方法是一样的,但是复杂度减小了。它也是首先对score(预测为正标签的概率值或得分)从大到小排序,然后令最大score对应的sample的rank为n=M+N,第二大score对应sample的rank为n-1,以此类推。然后把所有的正类样本的rank相加,再减去M-1种两个正样本组合的情况。得到的就是所有的样本中有多少对正类样本的score大于负类样本的score。然后再除以M×N。即 

特别需要注意的是,再存在score相等的情况时,对相等score的样本,需要 赋予相同的rank(无论这个相等的score是出现在同类样本还是不同类的样本之间,都需要这样处理)。具体操作就是再把所有这些score相等的样本 的rank取平均。然后再使用上述公式。 

 

 

 

参考:

https://www.cnblogs.com/keye/p/9367347.html

http://www.360doc.com/content/19/0420/21/34772704_830203547.shtml

https://blog.csdn.net/pzy20062141/article/details/48711355

 

おすすめ

転載: www.cnblogs.com/xiaofeiIDO/p/11997696.html