正解率99%なのに、一つも見つけない
ある自動車部品メーカーが、カメラで部品の傷を見つけるモデルを試しました。報告書には「正解率99%」とあります。
ただ、この工場の不良品は、100個に1個だけです。すべての部品を「良品」と答えるだけでも、99%になります。
そのモデルは、不良品を一つも見つけていません。このレッスンでは、この数字の読み方を学びます。
このレッスンのゴール
メモ
結果の表から、正解率を計算できる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| 結果の表 | 予測と本当の答えを並べた表です。 | |
| 正解率 | 予測が当たった割合です。 | 10個中8個で80% |
| 見逃し | 不良品を、良品と予測することです。 | |
| 誤検知 | 良品を、不良品と予測することです。 | |
| まれなクラス | めったに出てこない答えです。 | 不良品 |
学生が入力するセルは、このプレビューでは空白です。
正解率は、当たった数を全体で割る
テストデータの一件ごとに、予測と本当の答えを並べます。これが結果の表です。
次に、予測が当たった数を数えます。正解率は、当たった数を全体の数で割り、100をかけた値です。
たとえば、10個中8個が当たれば、8 ÷ 10 で 0.8 です。100をかけて、80%になります。
計算例: 部品10個の検査
| 部品 | 予測 | 本当の答え | 当たり? |
|---|---|---|---|
| 1 | 良品 | 良品 | 当たり |
| 2 | 不良品 | 不良品 | 当たり |
| 3 | 良品 | 良品 | 当たり |
| 4 | 良品 | 不良品 | 外れ(見逃し) |
| 5と6 | 良品 | 良品 | 当たり 2個 |
| 7 | 不良品 | 良品 | 外れ(誤検知) |
| 8から10 | 良品 | 良品 | 当たり 3個 |
| 合計 | 10個中8個、正解率80% |
学生が入力するセルは、このプレビューでは空白です。
やってみよう: 正解率を計算する
# 自動車部品の検査結果、10個分です。True は不良品という意味です。
predicted = [False, True, False, False, False, False, True, False, False, False]
actual = [False, True, False, True, False, False, False, False, False, False]
right = 0
for i in range(len(actual)):
if predicted[i] == actual[i]:
right = right + 1
print("当たった数:", right, "/", len(actual))
print("正解率:", right * 100 / len(actual), "%")
# predicted の4番目を True に変えて、もう一度実行しましょう。
二つの外れは、損の大きさがちがう
外れには、二つの種類があります。
誤検知は、良品を不良品と判定することです。部品を捨てたり、人が見直したりする手間が増えます。
見逃しは、不良品を良品と判定することです。不良品が客先の工場に届き、車のリコールにつながることもあります。
正解率は、二つの外れを同じ重さで数えます。だから、種類ごとの数も見ます。
四つの結果
| 予測 | 本当の答え | 呼び方 |
|---|---|---|
| 不良品 | 不良品 | 当たり(見つけた) |
| 良品 | 良品 | 当たり(問題なし) |
| 不良品 | 良品 | 誤検知 |
| 良品 | 不良品 | 見逃し |
学生が入力するセルは、このプレビューでは空白です。
よくある誤解
注意
正解率が高ければ、良いモデルだと思われがちです。探したいものがまれなときは、そうとは限りません。不良品が1%なら、全部を良品と答えても99%です。まれなものを探すときは、見逃しの数も必ず確かめましょう。
二つのモデル: 部品1000個、不良品10個
| モデル | 当たった数 | 正解率 | 見つけた不良品 |
|---|---|---|---|
| いつも「良品」と答える | 990個 | 99% | 10個中0個 |
| 学習したモデル | 970個 | 97% | 10個中8個 |
学生が入力するセルは、このプレビューでは空白です。