機械学習のベースライン評価:正解率80%でも見落とす文書分類の例

ベースラインは、複雑なモデルを比較するための単純な基準です。高度な手法を試す前に、「多数派を返すだけならどうなるか」「一定の確率を返すならどうなるか」を同じ評価データで確かめます。ここでは架空の文書を通常・要確認に分ける問題で、正解率だけでは見えない違いを確認します。

学習側と評価側のラベルを混ぜない

教材の学習用文書10件は、通常8件・要確認2件です。別に用意した評価用5件は、通常4件・要確認1件とします。これは手計算用の架空データです。実データの割合や性能を表す数字ではありません。

基準作り方この教材の出力
多数派のラベル学習側で多いクラスを毎回返す通常
学習側のクラス割合学習側の割合を確率として毎回返す通常0.8、要確認0.2

scikit-learnのDummyClassifierでは、most_frequentとpriorがこうした基準を扱います。予測ラベルが同じでも、返す確率の意味は異なります。[出典1] 評価側の割合を先に見て基準を作る方法とは区別してください。

多数派を返すだけで正解率は80%になる

全件を通常とすると、通常4件は正解、要確認1件は見落とします。正解率は4/5=0.8ですが、要確認に対する再現率は0/1=0です。「80%正解した」とだけ報告すると、要確認を1件も検出していない事実が隠れます。

評価の観点この教材の多数派基準
全体の正解率0.8
要確認を正しく拾えた件数0件
要確認を見落とした件数1件
要確認の再現率0

確率を比較するならlog lossも定義をそろえる

常に通常0.8・要確認0.2を返す基準では、この5件の平均log lossは −(4×ln(0.8)+ln(0.2))/5 ≈ 0.500402 です。自然対数を使っています。これは教材の計算値で、実モデルの測定結果ではありません。

通常に確率1を置く別の予測では、要確認の正解クラスに0を置きます。数学上はln(0)が有限値にならないため、損失が発散します。数値計算ライブラリは小さい値でクリップする場合があります。その設定を確認せず、手計算と実装の値が同じだと期待しないでください。

モデル比較表には基準を同じ行に置く

方法評価件数正解率要確認の見落とし確率評価
多数派・割合基準教材5件0.81件log loss約0.500402(割合の確率)
比較するモデル同じ5件実行後に記入実行後に記入同じ定義で計算

目的が要確認文書の拾い上げなら、見落としと、人が確認する件数の両方を見ます。分類する閾値を調整する場合は、調整用と最終評価用のデータを分けます。評価5件では一般化した結論は出せませんが、同じ条件で比較する手順は学べます。

基準を決めるチェックリスト

個別適用や説明の拡張時に確認する事項:複雑なモデルが必要かを判断するには、まず基準が何を達成しているかを説明できることが大切です。多数派の多さで得た正解率と、入力を使って区別できた成果を分けて記録してください。

出典

scikit-learn: DummyClassifier。