仕事ではじめる機械学習 #3
3章:学習結果を評価しよう
ここでは機械学習の精度を確かめるフェーズを行います。
3.1 分類の評価
大きく以下の4つに分けることができる
- 評価
- 正解率
- 適合率
- 再現率
- F値
- 重要な概念
- 混同行列
- マイクロ平均
- マクロ平均
これら4つの分類はビジネスによって何を基準に評価するかが異なる
以降、2つの例を元に確認していく
予測結果1:コロナ感染者
前提:日本の人口に対するコロナ陽性者の割合は0.3%(1000人に3人)(参考)
実際:コロナ陽性:3人 コロナ陰性:997人
予測:全員陰性である
予測結果2:スパム判定
前提:100件のメールを判定する
実際:スパムと予測した51件のうち34件がスパム
予測:スパム:48件 非スパム:52件
またTPやFNという用語で説明するが、それは混同行列のことを指している
3.1.1 正解率
公式
正解率 = (TP + TN) / (TP + FP + TN + FN)
予測結果1)正解率 = 99.7%(0 + 997 / 1000)
予測結果2)正解率 = 80.0%((34 + 46) / 100)
こんなあり得ない予測でも正解率がほぼ100%という数値になってしまう。これはポジティブとナガティブが不均衡なデータに対して評価する際に顕著に現れる。そのため、不均衡なデータに対して正解率で評価することはあまり意味をなさない。
となると不均衡なデータに対して評価を行う場合は何に注目すればいいのか?
3.1.2 データの偏りを考慮する適合率と再現率
適合率
陽性と予測したもののうち、実際に陽性であるものの割合
以下の公式から分かるようにFPを小さくすることを重視する指標のため、誤って陽性と予測するのを避けるような場合に有効です。
スパム予測のように、スパムがメールボックスに入るよりも、誤って必要なメールがスパムと判定されることを避けたい場合は適合率を見るのが良いと思う。(スパムと予測したものがスパムでないメールであると予測することを避けたい場合)
公式
適合率 = TP / (TP + FP)
予測結果1)適合率 = 0%(0 / (0 + 3))
予測結果2)適合率 = 66.66%(34 / (34 + 17))
再現率
実際に陽性であるもののうち、正しく陽性と予測できたものの割合
以下の公式から分かるようにFNを小さくすることを重視する指標のため、誤って陰性と判定するのを避けるような場合に有効です。
コロナ陽性者のように陽性なのに陰性と予測されることを防ぎたい場合は再現率をみるのがいいと思う。(コロナ陰性と予測して、陽性であることを避けたい場合)
公式
再現率 = TP / (TP + FN)
予測結果1)再現率 = 0%(0 / (0 + 3))
予測結果2)再現率 = 91.89%(34 / (34 + 3))
適合率と再現率のまとめ
見逃しが多くてもより正確な予測をしたい → 適合性を重視
多少誤りが多くても抜け漏れをなくしたい → 再現性を重視
F値
F値は対照的な特徴を持つ適合率と再現率の調和平均です。簡単に言えば、対照的な両者の特徴をバランスよく含んでいる指標です。
バランスの良い予測をしたい場合はこちらを使うといいのかなと思ってます。
公式
F値 = 2 / ((1 / 適合率) + (1 / 再現率))
予測結果1)F値 = 0%
予測結果2)F値 = 77.26%(2 / (1 / 66.66) + (1 / 91.89))
3.1.5 多クラス分類の平均の取り方:マイクロ平均、マクロ平均
これまでのように陽性 or 陰性のような2値分類のデータと評価方法が少し異なる
ジャンケンの予測AIなどが多値分類になる
この記事が理解しやすかった(多クラス問題の精度検証!マイクロ平均とマクロ平均の違い! – 2年でデータサイエンティストになった人が教える!初心者のためのイメージで分かるAI・データ分析)
3.2.1 回帰の評価 - 平均二乗誤差
株価や電力消費量などの連続する数値を予測する問題(回帰)の評価は主に平均二乗誤差という評価方法を用います。小さいほど予測値が正しい。
これを計算すると42.7686562のような数値になる
3.2.3 決定係数
上記の数値を0から1の値にするには決定係数を用いる
参考
https://about.yahoo.co.jp/pr/release/2021/02/24a/
https://tkrtkhsh.hatenablog.com/entry/2017/12/05/002220