第四部では、分類の問題を学び、kNN法について解説しました
もう少し不完全な分類器を作成できる段階まで来ました。しかし、「彼はどれほどうまく機能しますか?、
それでは、現時点で私たちができる最大の答えは、例えば「うん…テストデータセットでモデルはp%の割合で正しく答えました」というようなものです。
一方で、古い諺によれば「500ルーブリは200ルーブリより良い」とあります。しかし、高いp%はモデルの品質を保証しますか?
これらの問題について解説し、MLにおける品質指標を確認し、それらがなぜ必要なのか、そして正しく解釈する方法を理解します.
Accuracy
導入部ではすでにこの指標について議論しました。これはモデルの正しい回答の割合を示します.
すぐに指摘しますが、Accuracyはしばしば「精度」と訳されますが、MLでは混乱を招く可能性があります。そのため、翻訳ではなく、 либо正解率、または単にAccuracyです
どのように便利ですか?Accuracyはモデルの品質を簡単で分かりやすく評価します:モデルが正しいクラスをどの割合で当てているかを示します。これは、タスク内のクラスが均等(たとえば、ほぼ同じ数の要素を持つ)であり、異なるタイプの誤りが同等に重要な場合に特に良い基本的な目安です。
しかし、この指標には重大な制限がある——具体的にモデルがどのような誤りを犯しているかについて何も言及しない——である。
スタートアップの奇妙なアイデアの状況を考えてみよう。その中で1000個中1つだけが成功する可能性がある。もしモデルが常に「何もならない」と答えるなら、その精度は99.9%になる。
形式上は優れた結果ですが、このモデルの実用的な利点は疑わしいです...
まさにこのようなタスクでは、精度は有用な指標ではなくなります—それは重要な誤りを隠し、特にクラスが不均衡であるか、誤りのコストが異なる場合に顕著です.
精度
精度(または陽性クラスの精度)は、モデルが正のクラスに分類した全てのオブジェクトの中で、実際に正のものがいくつかを示しています。
スタートアップの例に戻りますと、precisionは、モデルが成功として予測したスタートアップの中で、実際に成功しているものの割合を示します。
精度は、モデルがあまりに頻繁に「誤った警報を出す」ことを望まないタスクで重要です。例えば、銀行システムでは、モデルが2回に1回の取引を不正取引と判断してキャンセルするようなものは喜ばれることでしょうがありません。
小さな例を考えると、
100のスタートアップのアイデアがあり、実際に成功するのは5つだけだと仮定しましょう。
モデルは次のような結果を出力しました:
5つの成功したスタートアップの中で正しく3つを見つけ、残りの2つを失敗と判断しました;
95つの失敗したスタートアップの中でモデルは90つを正しく失敗とマークしましたが、残りの5つを誤って成功と判断しました。
では:
モデルは100回の試行で93回正しい答えを出し、つまり精度は93%です。
は8つのスタートアップを成功モデルと計算しましたが、実際に成功したのは3つでした。つまりprecisionは3/8(37.5%)です
高いaccuracyにもかかわらず、モデルのポジティブな予測を信頼することはまだ難しいです
Recall
Recall(または完全性)は、モデルが全ての実際にポジティブなオブジェクトの中でどれだけの割合を正しく見つけられたかを示します
私たちの例では、モデルが成功として識別できた成功したスタートアップの割合です(例では5つのうち3つがそのようなものでしたので、リコールは60%です)。
リコールは、特に重要なタスクにおいて重要です肯定的対象を逃さない例えば、病気の検索において低いリコール率は、モデルが実際に病気の人々を見逃していることを意味します。
Fスコア
私たちは一つの問題に直面しています: precisionとrecallがほとんど敵対しているようです.
例えば、モデルが「成功したスタートアップ」を非常に稀に予測する場合、そのprecisionは高いです——なぜならほとんど間違いをしないからです。しかし、recallは低くなります、なぜならモデルが多くの実際に成功したプロジェクトを見逃すからです.
逆に、もしモデルがほぼ全てを成功とマークするならば、recallは上がりますが、precisionは急激に下がります。
そのため、実際にはFスコアという指標がよく使われます。これは、同時にprecision(正解率)とrecall(再現率)を考慮しようとするものです。特に、F1スコアは調和平均(Precision())とRecall(
)の間のものです:
F1スコアが大きくなるのは、precisionとrecallが同時に十分に大きい場合だけです。
F1に加えて、その一般化されたバージョンであるFβ-scoreがあります。F1がprecisionとrecallに対して同じに敏感である場合(公式がPとRに対して対称である場合)、Fβはそれらのバランスを手動で調整することができます。計算方法は以下の通りです
、もしprecisionをより重視する場合はを使用し、recallをより重視する場合は
を使用します。
もし両方の指標が同等に重要ならば、を使用し、これは標準的なF1スコアに対応します。
したがって、Fβはprecisionとrecallのバランスを柔軟に制御することができます。
混同行列
その前に、『アポカリプスの四騎馬』という形で同じコンセプトについて少し話し合いましょう。率直に言って、この指標の解釈はあまり気に入らない——混乱しやすいものです。しかし、言われている通り、 Федяが必要だ、必要だ...
モデルをシステムとして想像してみてください。それは各オブジェクトに対して判断を下すものです:肯定的なのか、否定的なのか。
それぞれの判決には4つの結果のうちの1つがあります.
TP — True Positive (真陽性)
これは、モデルが「はい、これは陽性の対象である」と言い、正解だった場合のことを指します.
モデルはスタートアップが成功していると判断し、実際に成功しました.
FP — False Positive (偽陽性)
モデルは「これは陽性の対象である」と言いましたが、間違っていました:
モデルはスタートアップが成功していると判断したが、実際には失敗だった。
FN — False Negative(誤った否定)
モデルは「これは否定対象だ」と言ったが、間違っていた。
モデルはスタートアップが失敗していると判断したが、実際には成功していた。
TN — True Negative(正しい否定)
モデルは否定クラスを正しく特定した。
スタートアップは失敗作と認められ、本当に失敗作だった.
小さなガイド:どう記憶するか.
True (T) — モデルは正解だった.
False (F) — モデルは間違っていた.
Positive (P) — モデルはオブジェクトを肯定的なクラス(クラス1)に分類した.
Negative (N) — モデルはオブジェクトを否定的なクラス(クラス0)に分類した.
例えば:
TP: T - 機械学習モデルで正解、なぜなら P - オブジェクトを正例クラスに分類したから
FN: F - 機械学習モデルで誤答、なぜなら N - オブジェクトを負例クラスに分類したから
先ほど議論した全ての指標は、これらの四つの数値を見る異なる方法に過ぎないことがわかる
また、F1スコアの式を展開することができる
TNがF1スコアに含まれないのは興味深いので、この指標は正しく分類された負のオブジェクトの数に依存しない。
そのため、F1はクラスの不均衡があるタスクで特に有用で、正のクラスが稀に見られ、その特定の品質が最も重要な場合に特に重要になる。
そのようなタスクでは、モデルが「全部を当てる」ほどよく当てるかどうかではなく、稀だが重要なケースを見つける能力の良し悪しに注目します—例えば、病気や詐欺的取引です。
精度-再現率曲線 (Precision-Recall curve)
実践では、多くのモデルはクラスではなく、 正例クラスに属する確率 を出力します。
私たちは閾値(threshold)を選択します:例えば、確率が0.5を超える場合はオブジェクトを正とし、そうでない場合は負とします.
ここに重要なアイデアが生まれます:この閾値を変更すると、precisionとrecallも変わります.
閾値が高い場合、モデルはほとんど何も正とマークしません。そのため、precisionは大きくなり、recallは小さくなります。
しきいちを下げると、モデルはより多くのオブジェクトを正例としてマークするため、Recallは上昇し、Precisionは低下する
すべてのしきいちの値に対してPrecisionとRecallを計算し、それらを互いにプロットすると、Precision–Recall curve (PR-曲線) を得る

曲線が右上隅に近づくほど、モデルは良い(高いprecisionとrecall)。曲線の急な落ち込みは誤りのバランスが悪いことを示し、低い位置はモデルの分離能力が弱いことを示している。
ROC曲線
PR曲線は直感的であるにもかかわらず、評価のための理想的なツールではない。
彼女の主な欠点は、モデルが否定クラスをどの程度区別できるかについて何も言及していない点です。肯定的なクラスに焦点を当てることは、強いバランスの不均等なタスクにおいて特に有用ですが、時にはそれだけではモデルの挙動を完全に理解するには不十分です。
ROC(受试者工作特征)曲線は、一方でより「対称的」に課題を眺める——両方のクラスにおけるモデルの挙動を考慮する。それは、誤検知数が増加するにつれてモデルが正のオブジェクトを見つける能力がどのように変化するかを示す。
ROC曲線を理解するために、二つの量を導入する:TPRとFPR(真陽性率と偽陽性率):
TPRは、モデルが実際に正しい正例をどれだけ見つけられたかを示します.
実質的には、私たちが既に知っているrecallと同じです:
FPRは、モデルが誤って負例を正例として分類した負例の割合を示します:
PR曲線の場合と同様に、私たちは閾値(threshold)を変更し、それぞれの値に対してTPRとFPRを計算します。その後、X軸にFPR、Y軸にTPRをプロットするグラフを描画すると、ROC曲線が得られます。

これを使う方法:
カーブが左上隅(点(0, 1))に近づくほど、モデルは良いです。これは、モデルが肯定的なオブジェクト(高いTPR)をうまく見つけ出すと同時に、ほとんど誤検知(低いFPR)をしないことを意味します。
もしカーブが急激に右に下がるなら、それはモデルが肯定的なオブジェクトをより多く見つけようとする試みで、否定的なオブジェクトに対して大きな誤りを犯し始めたことを示します。
対角線((0,0)から(1,1)の線)はランダムモデルに対応しており、このモデルはクラスを区別できず、実際には「当てずっぽく」答えるものです。
ROC-AUC
ROC曲線は、モデルが異なる閾値でTPRとFPRのバランスをとる様子を示しています。
しかし、このグラフ自体はモデルを比較するのに不便です——なぜならこれは一つの数値ではなく、全体の曲線だからです。
比較を簡単にするために、ROC-AUC(ROC曲線下の面積)— ROC曲線下の面積— を使用します。
得られた数値は、すべての可能な閾値において、モデルが肯定的なオブジェクトを否定的なオブジェクトからどの程度「平均的に」分離できるかを示します。
それを解釈する方法は次のようです:
AUC = 1 → 理想なモデル(クラスの完全な分離)
AUC = 0.5 → 無作為なモデル(コイン投げのように)
AUC< 0.5 → 無作為なモデルより悪いモデル(ライフハック:予測を反転させると通常のモデルが得られる)
結論
今度は「 あなたの分類器はどのくらいうまく機能していますか? — 私たちはもう精度のような一つの数値だけでは足りないと感じています.
モデルの品質は多面的なものであり、さまざまな角度から見ることができると理解しました.
混同行列や基本的な誤り(TP、FP、FN、TN)を通じて;
精度と再現性を通じて、異なるタイプの誤りを示します.
F-scoreを通じて、それらの間でバランスを取る;
PR曲線を通じて、precisionとrecallの間の妥協を示す;
ROC曲線を通じて、モデルが両クラスでどのように振る舞うかを考慮する;
また、ROC-AUCを通じて、これらを一つの数値にまとめる。
そして、覚えておくべき重要なことは:正確な品質指標は一つだけ存在しません。異なる種類のエラーを測定する異なる方法しかありません。そして、タスクに適したものを選ぶ必要があります。
メトリクスの評価について理解したので、次のセクションでは、ロジスティック回帰に進み、モデルが単に評価されるだけでなく、データで学習し始める様子を見てみましょう。











