機械学習(ML)とは、機械に学習させることですが、その学習効率をどうやって知るのでしょうか?その答えは、混同行列とROC空間です。
ウェブサイトで書籍を購入した顧客に関する既存データ(年齢、購入金額、好みの著者など)があるとします。これらのデータ列は、機械学習用語では「予測子」と呼ばれます。一部の顧客については性別も分かっていますが、他の顧客については分かりません。ここではすべての顧客について性別を知りたいと考えています。(機械学習用語では、予測しようとしているデータは「応答」です。)
まず、性別がわかっている顧客から始め、予測データとレスポンスデータの両方を機械学習アルゴリズムに入力し、予測データからのレスポンスを(うまくいけば)予測できるモデルを構築します。このモデルが完成したら、性別がわからない顧客の予測データを入力すると、モデルが性別を予測します。
もちろん、新しいモデルを実際に使う前に、その精度を検証する必要があります。そのためには、少し工夫が必要です。例えば、1,000人の顧客の性別データがあるとします。そのうち700人を使って性別予測モデルを構築します。モデルが完成したら、残りの300人の顧客の予測データをモデルに入力してテストします。もちろん、この300人の性別は分かっていますが、そのデータはモデルに入力しません。代わりに、モデルに性別を予測させ、その予測値を実際の性別と比較することで、モデルの精度を検証します。
モデルは、次の 2 つの方法で任意の個人について正しい可能性があります。
- 女性を正確に予測できる - これを真陽性と呼ぶ
- 男性を正確に予測できる - 真陰性
また、次の 2 つの点でも間違っている可能性があります。
- 女性を予測して間違える – 偽陽性
- 男性を予測して間違い – 偽陰性
- 3番目の項目
どちらの性別をポジティブ、どちらをネガティブと呼ぶかは重要ではないことに注意してください。
このモデルの性能は、紛らわしいことに混同行列と呼ばれる表でまとめることができます。例えば、300人の顧客を対象にテストを実施し、そのうち180人が女性だったとします。
予測 - 女性 | 予測 - 男性 | |
---|---|---|
実際の女性180 | 真陽性 175 | 偽陰性 5 |
実際の男性120 | 偽陽性 10 | 真陰性 110 |
少し誤解を招くでしょうか?はい、その通りです
例えば、「正確性」という指標を計算することで、データをさらに詳しく要約することができます。これは、2つの「真の」予測値の合計(175+110 = 285)を合計値(285/300 = 0.95)で割ったものです。これにより、性別が正しく予測された顧客の割合がわかり、直感的に非常に理にかなっているように思えます。
しかし、「精度」はやや不正確な指標となる可能性があります。例えば、顧客のほぼ全員が女性だとします。モデルを、例えば女性698人と男性2人でトレーニングします。実際にこれを繰り返すと、すべての顧客を女性として分類するモデルができあがってしまう可能性があります。そして、例えば女性299人と男性1人でテストすると、モデルはすべての顧客を女性として分類します。精度指標は(299/300 = 0.997)という値を返しますが、これは全くひどい仕事をしているモデルとしてはほぼ完璧なスコアです。
つまり、別の指標が必要になります。でも、選択肢はたくさんあり、そのうちの2つはスモークサーモンとシャンパンのように相性が良いので、問題ありません。
TPR - 年金規制当局だけではない
1 つ目は真陽性率 (TPR) で、これは実際に陽性と判定された人 (実際の女性) の割合 (175/180 = 0.972) です。
2つ目は偽陽性率(FPR)で、これは実際に陰性(男性)と誤認された割合(10/120 = 0.083)です。前者は理にかなっているように聞こえますが(女性のうち何パーセントを正しく分類しているのか?)、後者は間違っているように聞こえます(男性のうち何パーセントを誤って分類しているのか?)。しかし、ROC空間と呼ばれる空間で両者をプロットすると、非常に理にかなっていることがわかります。
ROC 空間は、X 軸に FPR、Y 軸に TPR をプロットするだけです。以下に 3 つのポイントをプロットしました。値をパーセンテージに変換したことに注意してください。
クリックして拡大
これら3つの点のうち、どれが良くてどれが悪いのでしょうか? 左上には青いひし形があります。これはTPR値が100で、FPR値が0です。モデルがここに点を生成した場合、それはすべてのメスを完璧に検出し、オスの検出ではエラーがゼロだったことを意味します。つまり、完璧な仕事をしたということです。つまり、左上こそが重要なのです。
では右上(角丸の赤い三角形)を見てください。もし私たちのアルゴリズムがここにあれば、メスはすべて完璧に識別しましたが、オスは完全に間違っていて、すべてメスだと識別してしまいました。右上は、あなたが望む場所ではありません。右下(オレンジ色の四角)はどうでしょうか?メスは全く正しく認識せず、オスはすべて間違っています。つまり、明らかにナンセンスですよね?さて、これを即座に非難する前に、少し考えてみてください。
このアルゴリズムが「女性」と答えると、それは100%間違っています。そして「男性」と答えると、それは100%間違っています。これは驚くほど、一貫して間違っています。まさに壮大な間違いです。でも、ちょっと待ってください。もし「女性」と答えた時に「男性」と聞き取ったとしたらどうでしょう。そして「男性」と答えた時に「女性」と聞き取ったとしたらどうでしょう。そうしたら、それは100%正しいはずです。そして、ポイントは左上へと反転するでしょう。
ROC空間の美しさは、左上半分にいるのが理想の場所であり、もし右下半分に落ちてしまったとしても、予測を逆にすることで右下半分に移動できるという点にあります。そして、下図の線上にあるのが、避けるべき場所です。
クリックして拡大
このラインに載っていない理由は、アルゴリズムが男性と女性の両方について単純にランダムに予測を行う以上の成果を上げていないからです。
しかし、朗報です。アルゴリズムの性能を測る優れた方法が手に入ったのです。直線から離れ、左上に近いほど、性能が良いことを示しています。さあ、これからは多くのモデルを生成し、ROC空間にプロットして、その効率性を確認してみましょう。
ついに。機械が学習したことをただ信じるのではなく、機械が何を知っているかを知る方法が生まれました。®