2

wekaの AUC/ROC 領域 ( http://weka.wikispaces.com/Area+under+the+curve ) は、e Mann Whitney 統計 ( http://en.wikipedia.org/wiki/Mann -Whitney_U )

しかし、アルゴリズム (つまり J48) をデータセットに適用することによって、10 個のラベル付きインスタンス (Y または N、バイナリ ターゲット属性) を取得した場合、これらの 10 個のインスタンスに 10 個の予測ラベルがあるとは思えません。では、AUC_Y、AUC_N、および AUC_Avg を計算するには、正確には何を使用すればよいでしょうか? 予測のランク付けされたラベル Y および N または実際のラベル (Y' および N') を使用しますか? または、TP レートと FP レートを計算する必要がありますか?

誰かが私に小さな例を与えて、マン・ホイットニー統計アプローチに基づいて AUC を計算するためにどのデータを使用する必要があるかを教えてもらえますか? ありがとうございます。

サンプルデータ:

inst#    actual predicted  error   PrY     PrN
1        1:y        1:y          *0.973   0.027
2        1:y        1:y          *0.999   0.001
3        2:n        1:y      +   *0.568   0.432
4        2:n        2:n           0.382  *0.618
5        1:y        2:n      +    0.421  *0.579
6        2:n        2:n           0.146  *0.854
7        1:y        1:y          *1       0    
8        1:y        1:y          *0.999   0.001
9        2:n        2:n           0.11   *0.89 
10       1:y        2:n      +    0.377  *0.623
4

2 に答える 2

4

AUCの計算は、結果のランク付けに基づいています。Mann-Whitney-U統計を読んだばかりですが、基本的には、コードで常にそれを行う方法だと思います。

まず、結果をランク付けするための何かが必要です。通常、これは分類器の決定値(SVMの超平面までの距離など)ですが、WEKAは主にクラス確率を使用します。あなたの例では、PrYとPrNの合計は1になります。これは適切なので、PrYのようにどちらかを選択できます。

次に、インスタンスをPrNでランク付けします。

inst#    actual predicted  error   PrY     PrN
7        1:y        1:y          *1       0    
8        1:y        1:y          *0.999   0.001
2        1:y        1:y          *0.999   0.001
1        1:y        1:y          *0.973   0.027
3        2:n        1:y      +   *0.568   0.432
5        1:y        2:n      +    0.421  *0.579
4        2:n        2:n           0.382  *0.618
10       1:y        2:n      +    0.377  *0.623
6        2:n        2:n           0.146  *0.854
9        2:n        2:n           0.11   *0.89 

ウィキペディアがMann-Whitney-U統計について述べていることから、実際のクラスごとに、他のクラスによって「殴打」される頻度を合計する必要があります。ポジティブインスタンス(y)の場合、これは次のようになります。

0, 0, 0, 0, 1, 2 => Sum: 3

ネガティブインスタンスの場合(n)

4, 5, 6, 6 => Sum: 21

したがって、U_y=3およびU_n=21であり、次のようにチェックします。

U_y + U_n = 24 = 6 * 4 = #y * #n

AUC_yは(ウィキペディアの後)になります

AUC_y = U_y / (#y * #n) = 3 / 24 = 0.125
AUC_n = U_n / (#y * #n) = 21 / 24 = 0.875

さて、この場合、私はAUC_nがあなたが望むAUCであると強く信じています。PrNを昇順で並べ替えたので、AUC_nが必要です。

私たちが今やったことのより直感的でグラフィカルな説明はこれです:

インスタンスを決定値/クラス確率で並べ替えます。PrNで昇順で並べ替えると、正の値が最初に表示されます。(PrYで昇順で並べ替える場合は、負の値が最初に来るはずです。)次に、座標(0,0)から始まるプロットを描画します。実際のポジティブインスタンスに遭遇するたびに、1つのユニットを作成します。ネガティブなインスタンスに遭遇するたびに、1つのユニットを正しく描画します。この行は、ASCIIアートでは次のように見える領域に分割されます(できるだけ早く適切な画像に置き換えます)。

|..##|
|.###|
|####|
|####|
|####|
|####|

分離線はROCとその下の領域(そのため名前)はAUCです。ここでのAUCは21ユニットであり、これを24の総面積で割って正規化する必要があり、21/24=0.875になります。

すでに正規化されている計算全体を実行することもできます。これは、FPR対TPRとしてプロットするのと同じです。

于 2013-03-09T20:06:23.783 に答える