4

分類問題で Vowpal Wabbit で作成されたモデルから、どのようにして精度、再現率、および f 測定値を取得しますか?

vw の出力でこれに一般的に使用される利用可能なスクリプトまたはプログラムはありますか?

playtennis.txt の次のデータを使用して最小限の例を作成するには:

2 | sunny 85 85 false
2 | sunny 80 90 true
1 | overcast 83 78 false
1 | rain 70 96 false
1 | rain 68 80 false
2 | rain 65 70 true
1 | overcast 64 65 true
2 | sunny 72 95 false
1 | sunny 69 70 false
1 | rain 75 80 false
1 | sunny 75 70 true
1 | overcast 72 90 true
1 | overcast 81 75 false
2 | rain 71 80 true

以下を使用してモデルを作成します。

vw playtennis.txt --oaa 2 -f playtennis.model --loss_function logistic

次に、トレーニング データ自体でトレーニング済みモデルの予測と生の予測を取得します。

vw -t -i playtennis.model playtennis.txt -p playtennis.predict -r playtennis.rawp

ここから先は、トレーニング データplaytennis.txtと のトレーニング データに対する予測が与えられた場合に、精度、再現率、F 値を取得するために通常どのスクリプトまたはプログラムを使用しplaytennis.predictますか?

また、これがマルチラベル分類の問題 (各インスタンスが複数のターゲット ラベルを持つことができ、vw も処理できる) である場合、提案されたスクリプトまたはプログラムはこれらを処理できますか?

4

2 に答える 2

4

各例の「予測値と実際の値」のペアがある場合、Rich Caruana の KDDperfユーティリティを使用して、これらの (および他の多くの) メトリックを計算できます。

マルチクラスの場合、正確に分類されたすべてのケースを成功と見なし、すべてのクラス不一致を正しく予測できないと単純に見なす必要があります。

バイナリの場合のより詳細なレシピは次のとおりです。

# get the labels into *.actual (correct) file
$ cut -d' ' -f1 playtennis.txt > playtennis.actual

# paste the actual vs predicted side-by-side (+ cleanup trailing zeros)
$ paste playtennis.actual playtennis.predict | sed 's/\.0*$//' > playtennis.ap

# convert original (1,2) classes to binary (0,1):
$ perl -pe 's/1/0/g; s/2/1/g;' playtennis.ap > playtennis.ap01

# run perf to determine precision, recall and F-measure:
$ perf -PRE -REC -PRF -file playtennis.ap01
PRE    1.00000   pred_thresh  0.500000
REC    0.80000   pred_thresh  0.500000
PRF    0.88889   pred_thresh  0.500000

マーティンが述べたように、vwバイナリ分類には {-1, +1} 規則をperf使用しますが、{0, 1} 規則を使用するため、2 つを切り替えるときに前後に変換する必要がある場合があります。

于 2015-05-30T01:22:14.910 に答える