5

不均衡なカテゴリを使用して、マルチクラス分類を行っています。

f1 は常に適合率と再現率の直接調和平均よりも小さく、場合によっては f1 が適合率と再現率の両方よりもさらに小さいことに気付きました。

metrics.precision_score(y,pred)参考までに、精度などを求めました。

私はミクロ平均とマクロ平均の違いを認識しており、 のカテゴリ結果を使用してミクロではないことをテストしましたprecision_recall_fscore_support()

これは、マクロ平均が使用されているためか、その他の理由によるものかわかりませんか?


以下のように詳細な結果を更新しました。

n_samples: 75、n_features: 250

MultinomialNB(alpha=0.01, fit_prior=True)

2 倍の CV:

1 回目の実行:

F1:        0.706029106029
Precision: 0.731531531532
Recall:    0.702702702703

         precision    recall  f1-score   support

      0       0.44      0.67      0.53         6
      1       0.80      0.50      0.62         8
      2       0.78      0.78      0.78        23

avg / total       0.73      0.70      0.71        37

2 回目の実行:

F1:        0.787944219523
Precision: 0.841165413534
Recall:    0.815789473684

         precision    recall  f1-score   support

      0       1.00      0.29      0.44         7
      1       0.75      0.86      0.80         7
      2       0.82      0.96      0.88        24

avg / total       0.84      0.82      0.79        38

全体:

Overall f1-score:   0.74699 (+/- 0.02)
Overall precision:  0.78635 (+/- 0.03)
Overall recall:     0.75925 (+/- 0.03)

Scholarpediaからのマイクロ/マクロ平均化に関する定義:

マルチラベル分類では、カテゴリ全体の集計スコアを計算する最も簡単な方法は、すべてのバイナリ タスクのスコアを平均することです。結果のスコアは、マクロ平均再現率、精度、F1 などと呼ばれます。平均化の別の方法は、最初にすべてのカテゴリの TP、FP、TN、FN、および N を合計してから、上記の各メトリックを計算することです。結果のスコアは、マイクロ平均と呼ばれます。マクロ平均は、各カテゴリに等しい重みを与え、多くの場合、べき乗のような分布でまれなカテゴリ (多数) でのシステムのパフォーマンスによって支配されます。マイクロ平均は、各ドキュメントに均等な重みを与え、多くの場合、最も一般的なカテゴリでのシステムのパフォーマンスによって支配されます。


これは、 Github で現在未解決の問題#83 です。


次の例は、マイクロ、マクロ、および加重 (Scikit-learn の現在の) 平均化がどのように異なるかを示しています。

y    = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2]
pred = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 2, 0, 1, 2, 2, 2, 2]

混同行列:

[[9 3 0]
 [3 5 1]
 [1 1 4]]

Wei Pre: 0.670655270655
Wei Rec: 0.666666666667
Wei F1 : 0.666801346801
Wei F5 : 0.668625356125

Mic Pre: 0.666666666667
Mic Rec: 0.666666666667
Mic F1 : 0.666666666667
Mic F5 : 0.666666666667

Mac Pre: 0.682621082621
Mac Rec: 0.657407407407
Mac F1 : 0.669777037588
Mac F5 : 0.677424801371

上記の F5 は F0.5 の省略形です...

4

1 に答える 1

2

次の出力で質問を更新してください。

>>> from sklearn.metrics import classification_report
>>> print classification_report(y_true, y_predicted)

これにより、サポートとともに個々のカテゴリの精度と再現率が表示されるため、平均化がどのように機能するかを理解し、これが適切な動作であるかどうかを判断するのに役立ちます。

于 2011-11-27T12:35:16.020 に答える