0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ベースラインとF1スコアで理解する行動提案モデル評価

Posted at

ベースラインとF1スコアで理解する行動提案モデル評価

本記事は、行動提案モデル(多クラス分類)の実験を通して

  • なぜベースラインが必要なのか
  • mostfreq / random baseline は何を意味するのか
  • なぜ accuracy だけでは不十分で、F1 スコアを見る必要があるのか
  • Recall や混同行列をどう読めば、モデルの限界が分かるのか

を、実際の検証結果(batch3)に基づいて整理したものです。

前提として、筆者は動画から状態を抽出し、次に取る行動を予測するモデルを段階的に構築・評価しています。本記事ではモデル構築そのものではなく、評価と診断の考え方に焦点を当てます。

以下記事の補完です。
https://qiita.com/y4o4/items/a68163ca6c7f5cfe2596


なぜ「ベースライン」が必要なのか

モデルの評価でよく見る指標に accuracy(正解率)があります。

しかし、accuracy が 25% と言われても、それが

  • 良いのか
  • 悪いのか
  • 偶然でも出るのか

は分かりません。

そこで必要になるのが baseline(基準モデル) です。

ベースラインとは「何も学習しなくても出せる性能」を明示的に用意し、
モデルがそれを上回っているかを確認するための基準です。


random baseline とは

定義

全クラスからランダムに予測するモデルです。

クラス数が 8 の場合:

  • Top-1 accuracy の期待値は約 12.5%

役割

  • 完全な偶然の下限
  • 評価コードや分割方法が壊れていないかの確認

実験での例

random baseline
accuracy_top1 ≒ 0.10
accuracy_top3 ≒ 0.33

→ 理論値に近く、評価系が正常に動いていることが確認できました。


mostfreq baseline とは

定義

学習データで最も頻度の高いクラスを、常に予測するモデルです。

なぜ重要か

実データではクラス分布が偏っていることが多く、

何も考えなくても、それなりに当たる

という状況が起こります。

mostfreq baseline は、

  • 「分布に乗っているだけ」の性能
  • モデルが本当に状態を見て判断しているか

を見抜くための基準です。


技術的に baseline はどう算出しているか

ここで重要なのは、baseline 用にモデルを学習しているわけではないという点です。

baseline はすべて 評価時に直接計算 しています。

random baseline の実装イメージ

  • 入力特徴量:一切使わない
  • 学習:なし

評価時に次を繰り返すだけです。

pred = random.choice(class_ids)

Top-K の場合は、ランダムに K クラスを選びます。

preds = random.sample(class_ids, k=topk)

完全な偶然の下限 を保証します。


mostfreq baseline の実装イメージ

  1. 学習データのラベル分布を数える
from collections import Counter
mostfreq = Counter(train_labels).most_common(1)[0][0]
  1. 評価時は常に同じクラスを返す
y_pred = mostfreq

Top-K の場合は、mostfreq を含む固定集合を返します。

入力を一切見ないが、分布には忠実 な予測です。


学習モデルとの決定的な違い

  • baseline

    • model.forward() を呼ばない
    • 重み・勾配・最適化なし
  • 学習モデル

    • 入力 → NN → softmax → 予測

baseline は「考えていない」ことがコードレベルで保証されています。


accuracy だけでは足りない理由

accuracy は直感的で分かりやすい指標ですが、

  • クラス不均衡
  • 特定クラスへの偏り

に非常に弱いという欠点があります。


Precision / Recall の直感的理解

Precision(予測の質)

「それを出したとき、どれくらい正解だったか」

Recall(拾えた量)

「本来それを出すべき場面を、どれくらい拾えたか」


Recall の具体例(1文)

Recall とは、「本当はクラスAだった10件のうち、モデルがAだと正しく当てられた割合」である。


F1スコアとは

Precision と Recall のバランスを見る指標です。


macro F1 と weighted F1

  • macro F1:戦略の多様性を見る
  • weighted F1:実運用に近い評価

混同行列(Confusion Matrix)を直感で理解する

混同行列は、**モデルが「何を、何と間違えたか」**を一望する表です。

  • 行:正解クラス
  • 列:予測クラス

ChatGPT Image 2026年1月13日 12_07_44.png


batch3 の評価から何が分かったか

batch3 データで評価すると:

  • accuracy / F1 は baseline を上回る

  • しかし混同行列では

    • 特定クラスへの予測集中
    • 多くのクラスで Recall が低い

「モデルが単純に間違っている」可能性をどう排除したか

まず疑うべきは、

モデルが壊れている / 学習できていないだけではないか?

という可能性です。

しかし次の検証結果から、この仮説は段階的に排除できました。

1. ベースラインを明確に上回っている

  • random baseline を大きく上回る
  • mostfreq baseline も安定して超えている

偶然や分布追従では説明できない

2. 学習挙動が安定している

  • train / val ともに改善
  • best epoch が明確
  • class-weight 導入で F1 が改善

最適化は正常に進んでいる

3. 混同行列に「構造」がある

  • 誤分類がランダムに散らばらない
  • 多くのクラスが同じ予測クラスに吸い寄せられる

間違い方に一貫性がある

これは「モデルが適当に外している」場合には起きません。


結論:失敗ではなく「情報不足」

以上を踏まえると、最も自然な説明は次になります。

モデルは最善を尽くしているが、
正解行動を区別するための情報が入力に含まれていない

つまり、

  • モデル構造の限界ではない
  • 学習失敗でもない
  • 状態表現の情報量がボトルネック

という判断に至りました。


まとめ

  • ベースラインは評価の出発点
  • mostfreq を超えないモデルは危険
  • accuracy だけでは判断できない
  • F1 と混同行列は 改善点を教えてくれる

評価指標は単なる数字ではなく、
次に何を足すべきかを示す診断ツールです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?