F1スコア
F1 Score
F1スコアは、機械学習における重要な評価指標であり、適合率と再現率の調和平均です。不均衡なデータセットで分類モデルを評価する際に特に有効です。
F1スコアとは?
F1スコアは、機械学習における分類モデルの性能を評価するための指標であり、適合率と再現率の調和平均で表されます。 単純な正解率(全体的に何%予測が正しかったか)だけでは見えない、偽陽性と偽陰性のバランスを理解できます。例えば、詐欺検出で「99%の正解率」と聞こえても、実は詐欺ケースを全く捉えていない可能性があります。F1スコアはそのような落とし穴を防ぎ、実務で本当に役立つモデルかどうかを判定する際に不可欠です。
ひとことで言うと: 「正確さ」と「網羅性」を両立させているかを見る成績表です。片方だけ優れていても、点数は上がりません。
ポイントまとめ:
- 何をするものか: 分類モデルが、偽陽性と偽陰性のバランスを取れているか数値化する
- なぜ必要か: 不均衡なデータセット(例:詐欺は全体の1%)では、正解率が信頼できないため
- 誰が使うか: データサイエンティスト、機械学習エンジニア、ビジネスアナリスト
なぜ重要か
医療診断システムが「患者1,000人のうち990人を正常と判定」した場合、正解率は99%に見えます。しかし、実は本当の患者50人のうち45人を見逃してしまっているかもしれません。このジレンマを解決するのがF1スコアです。
また、異なるドメインで比較する際にも価値があります。適合率を重視すべき場面(スパムフィルタで正当なメールをブロックするコストが高い場合)と、再現率を重視すべき場面(医療で病気を見逃すコストが高い場合)では、戦略が変わります。F1スコアはその両方のバランスを考慮し、一つの指標で「このモデルは本当に使えるか」という本質的な問いに答えてくれます。
仕組みをわかりやすく解説
混同行列と基本概念
F1スコアを理解するには、まず4つの分類結果パターンを知る必要があります。モデルが「陽性(問題あり)」と「陰性(問題なし)」を予測したとき、実際の正答と比較して4つのケースが生じます。
真陽性(TP)は「陽性を正しく陽性と判定」、偽陽性(FP)は「陰性を誤って陽性と判定」、偽陰性(FN)は「陽性を誤って陰性と判定」、真陰性(TN)は「陰性を正しく陰性と判定」です。
適合率と再現率
適合率は「モデルが陽性と言ったもののうち、実際に陽性だった割合」です。計算式は「真陽性 ÷(真陽性 + 偽陽性)」です。例えば、迷惑メール検出で適合率が高いと、フィルタが「迷惑メール」と判定したものの大多数が本当に迷惑メールです。
再現率は「実際に陽性なもののうち、モデルが陽性と判定できた割合」です。計算式は「真陽性 ÷(真陽性 + 偽陰性)」です。医療診断で再現率が高いと、本当に病気を持つ患者を逃さずに検出できます。
F1スコアはこの2つを調和平均で統合し、どちらか一方が極端に低い場合、全体のスコアも低くなります。これにより、片方を犠牲にしたモデルを自動的にペナルティするのです。
計算方法
公式
F1スコア = 2 × (適合率 × 再現率) / (適合率 + 再現率)
この式により、適合率と再現率の両方が高い場合のみ、F1も高くなります。例えば、適合率0.8、再現率0.6であれば、F1 = 2 × (0.8 × 0.6) / (0.8 + 0.6) = 0.686となります。
別の表現として、混同行列の値から直接計算することもできます:F1 = 2TP / (2TP + FP + FN)
Pythonでの実装例
scikit-learnライブラリを使用すると簡単に計算できます。基本的な使用例では、実際の値と予測値を渡すだけでF1スコアが得られます。複数クラスの場合、平均化方式を選択できます。マクロ平均はすべてのクラスを等しく扱い、マイクロ平均はクラスの出現頻度で重み付けします。
F-betaスコア
F1スコアを一般化した「F-betaスコア」では、適合率と再現率の重みを調整できます。F2スコアは再現率を2倍重視(医療診断向け)、F0.5スコアは適合率を2倍重視(スパムフィルタ向け)など、ドメインに応じた評価が可能です。
目安・ベンチマーク
スコア解釈ガイド
F1スコアの範囲は0から1で、1が完璧を意味します。実務では0.7以上を「良好」と判定することが多いです。0.5~0.7は「改善余地あり」、0.5未満は「要再検討」とされます。
ただし、分野により期待値は異なります。医療診断では0.85以上を目指すことが多いのに対し、新興分野での初期モデルなら0.6でも実用的と評価される場合もあります。
業界別ベンチマーク
詐欺検出システムは通常0.7~0.8のF1を目指します。不均衡なデータセット(詐欺事例が全体の1%未満)が多いため、完璧なスコアを期待するのは非現実的です。
医療診断やがん検出では0.8~0.9が標準的です。見落としのコストが高いため、再現率を優先しながらF1全体も高く保つ必要があります。
テキスト分類やセンチメント分析では0.8前後が一般的です。自然言語処理タスクは固有の複雑性があり、完璧を求めるより実用的なバランスを取ることが重要です。
実際の活用シーン
詐欺検出システムの評価 金融機関が新しい詐欺検出モデルを導入する際、F1スコアは適合率(誤報を減らす)と再現率(実際の詐欺を見落とさない)のバランスを示します。スコアが0.75なら、運用チームは「この水準で運用可能か」を判断できます。
医療診断AIの検証 放射線科医向けのがん検出AIは再現率を重視しますが、過剰診断を避ける必要もあります。F1スコアが0.82なら、医学的にも統計的にも信頼できるモデルとして臨床導入を検討できます。
テキスト分類の品質保証 ニュース記事を自動分類するシステムで、F1スコアが0.78なら、読者に対する記事推薦の信頼性が示されます。スコアが低い場合、訓練データの増強やモデルの再調整が必要です。
メリットと注意点
メリット F1スコアは単一の指標で複雑なトレードオフを表現できます。適合率と再現率をそれぞれ報告するより、一つの数字で「総合的な性能」を比較できるため、意思決定が迅速になります。また、不均衡なデータセットでも正解率より信頼できる評価が可能です。
注意点 F1スコアは両指標の調和平均のため、適合率と再現率の個別の特性を隠す可能性があります。同じF1スコア0.75でも、適合率0.9・再現率0.6の場合と、適合率0.6・再現率0.9の場合では意味が全く異なります。常にF1スコアと共に、構成要素である適合率と再現率を確認することが重要です。
関連用語
- 適合率 — F1スコアを構成する要素の一つ。偽陽性をいかに抑えたかを示します。
- 再現率 — F1スコアを構成する要素の一つ。真陽性をいかに捉えたかを示します。
- 混同行列 — F1スコアの計算基盤となる4つの分類結果パターンをまとめた表です。
- 機械学習 — F1スコアが評価対象とする分野。分類タスクの性能判定に用いられます。
- AUC・ROC曲線 — F1スコアの代替指標として、閾値全体でのモデル性能を評価します。
よくある質問
Q: F1スコアが0.5を超えていれば本当に使えるモデルか? A: 分野によります。初期段階のモデルなら0.5でも価値があります。ただし医療や金融など人生に影響する決定では0.8以上が標準です。まず用途に応じた目標値を決めてください。
Q: 適合率と再現率を個別に報告する方がよくないか? A: 詳細な分析には個別報告が有効です。しかし複数モデルを比較する際は、F1スコアのような統一指標があると迅速に判断できます。併用するのが最良です。
Q: 完全に不均衡なデータセット(陽性0.1%)ではF1は使えるか? A: 極端に不均衡な場合、F1スコアだけでは不十分です。適合率-再現率曲線やビジネスコスト行列を併用し、実務的なコンテキストを加味してください。