正解率:機械学習モデルの精度を測る
AIを知りたい
先生、「正解率」ってよく聞くんですけど、どんなものですか?
AIエンジニア
そうだね。「正解率」は簡単に言うと、どれくらい予測が当たっているかを表す数値だよ。例えば、10個の問題があって、そのうち8個正解したら正解率は80%になる。
AIを知りたい
じゃあ、100個の問題で90個正解なら90%ですね!簡単ですね!
AIエンジニア
その通り!正解率が高いほど、予測の精度は高いと言えるんだ。ただ、場合によっては正解率だけでは判断できないこともあるから、他の指標も合わせて見るのが大切だよ。
Accuracyとは。
人工知能でよく使われる「正解率」という言葉について説明します。正解率は、物事を二つの種類に分ける時や、もっと多くの種類に分ける時に、どれくらい正しく分けられたかを判断する目安です。機械学習のモデルがどれくらい正しく予測できたかを測るもので、簡単に言うと、正解した数を全体のデータ数で割ったものです。
正解率とは
正解率とは、機械学習の出来栄えを測る物差しのひとつで、モデルがどれほど正確に予測できているかを示す数値です。分かりやすく言うと、たくさんのデータの中で、正しく見分けられたデータの割合のことです。たとえば、全部で100個のデータがあったとして、そのうち80個を正しく分類できたなら、正解率は80%になります。
この正解率という尺度は、見た目にも分かりやすく、理解しやすいという長所があります。そのため、機械学習モデルの良し悪しを判断する際の基本的な指標として、広く使われています。まるでテストの点数のように、ぱっと見てどれくらい正解しているかが分かるので、多くの人が利用しています。
しかし、データの偏り、つまり特定の種類のデータばかりが多いといった状況では、正解率だけで判断するのは危険です。たとえば、ある病気の検査で、99%の人が健康で1%の人だけが病気だとします。この場合、常に「健康」と答えるだけの単純なモデルでも、正解率は99%になってしまいます。しかし、このモデルは病気の人を一人も見つけることができないため、役に立たないモデルと言えます。このように、データのバランスが悪い場合は、正解率が高くても、実際には良いモデルとは言えないことがあります。
そのため、正解率だけでなく、他の指標も組み合わせてモデルを評価することが大切です。正解率は、モデルの性能を大まかに把握するには便利ですが、それだけで全てを判断せず、様々な角度から見て、総合的に判断する必要があるのです。
項目 | 説明 |
---|---|
定義 | 機械学習モデルがどれほど正確に予測できているかを示す数値。正しく見分けられたデータの割合。 |
例 | 100個のデータ中80個を正しく分類→正解率80% |
長所 | 分かりやすく、理解しやすい。モデルの良し悪しを判断する際の基本的な指標。 |
短所/注意点 | データの偏りがある場合、高正解率でも実際には良いモデルとは言えない場合がある。他の指標と組み合わせて評価する必要がある。 |
計算方法
計算方法は至って単純で、正解したデータの個数をデータ全体の個数で割るだけです。例を挙げながら、もう少し詳しく説明します。
たとえば、猫と犬の絵を区別する道具があるとしましょう。全部で100枚の絵があり、その中に猫の絵が50枚、犬の絵が50枚含まれているとします。この道具を使って、猫の絵を40枚、犬の絵を30枚正しく見分けられたとします。この時、正解数は猫と犬を合わせた40枚と30枚で、合計70枚です。そしてデータ全体の個数は100枚なので、正解率は70を100で割って、0.7、つまり70%となります。
別の例として、100枚の絵の中に、猫の絵が70枚、犬の絵が30枚ある場合を考えてみましょう。この時、猫の絵を60枚、犬の絵を20枚正しく見分けられたとすると、正解数は合わせて80枚です。全体の個数は変わらず100枚なので、正解率は80割る100で、0.8、つまり80%です。
このように、正解率は式で表すと「正解数 ÷ 全体のデータ数」と非常に簡単な計算で求めることができます。しかし、この数字だけで道具の良し悪しを判断するのは危険です。なぜなら、全体のデータの中に猫の絵と犬の絵の数が大きく偏っている場合、少ない種類の絵を全て間違えても、高い正解率が出てしまう可能性があるからです。つまり、正解率は一つの目安にはなりますが、道具の性能を正しく評価するためには、他の要素も合わせて考える必要があると言えるでしょう。
例 | 猫の絵 | 犬の絵 | 正解(猫) | 正解(犬) | 正解数 | 全体数 | 正解率 |
---|---|---|---|---|---|---|---|
例1 | 50 | 50 | 40 | 30 | 70 | 100 | 70% |
例2 | 70 | 30 | 60 | 20 | 80 | 100 | 80% |
注意点と限界
機械学習モデルの良し悪しを測る物差しとして、正解率は分かりやすいものの、落とし穴もあります。データの偏りによって、正解率が高くても実際には役に立たないモデルができてしまうことがあるのです。
例えば、ある珍しい病気の診断を考えてみましょう。この病気にかかる人は100人に1人ほどだとします。もし、常に「病気ではない」と答える機械学習モデルを作ったとしたら、100人中99人は正しく診断できることになり、正解率は99%と非常に高くなります。しかし、このモデルは病気の人を見つけることが全くできません。病気の早期発見、早期治療という本来の目的には全く役立たないのです。
このように、母集団における病気の発生率が低い場合、常に多数派を予測するモデルは高い正解率を達成できてしまうのです。しかし、このようなモデルは実際には役に立ちません。真に重要なのは、病気の人を正しく病気と診断できるかどうかです。
正解率だけに頼るのではなく、他の指標も合わせて考える必要があります。例えば、実際に病気の人の中で、どれだけの割合を正しく病気と診断できたかを示す指標や、病気と診断された人の中で、どれだけの割合が実際に病気だったのかを示す指標などがあります。これらの指標は、病気の診断のように、見逃しや誤診が大きな影響を持つ状況では特に重要になります。
つまり、機械学習モデルの評価は、データの特性や目的を踏まえて、複数の指標を組み合わせて行う必要があるのです。一つの指標だけで判断すると、見かけ上は優秀でも実際には使えないモデルを作ってしまう危険性があります。色々な角度からモデルの性能を検証することで、より信頼性の高い、実用的なモデルを作ることができるのです。
問題点 | 例 | 対策 |
---|---|---|
正解率のみに頼ると、データの偏りによって実際には役に立たないモデルができてしまう。 | 珍しい病気(発生率1%)の診断で、常に「病気ではない」と答えるモデルは正解率99%だが、病気の人を全く見つけることができない。 | 正解率以外の指標も合わせて考える。複数の指標を組み合わせてモデルを評価する。 |
実際に病気の人の中で正しく診断できた割合や、病気と診断された人の中で実際に病気だった割合などを考慮する。 |
活用事例
機械学習の出来栄えをはかる物差しとして、正解率は色々なところで使われています。この正解率は、まるで学校の試験の点数のように、どのくらい正しく答えられたかを示す数値です。画像を認識する、音声を聞き取る、文章の意味を理解するといった、機械学習が活躍する様々な場面で、この正解率がモデルの良し悪しを判断する重要な役割を担っています。
例えば、写真に写っているものが何なのかを機械に判断させる画像認識の分野では、機械が正しく認識できた物の数を、全体の物の数で割ることで正解率を計算します。例えば、10枚の動物の写真があり、そのうち8枚の動物の種類を機械が正しく認識できた場合、正解率は80%となります。
また、人の声を文字に変換する音声認識の分野でも、正解率は重要な指標です。話された言葉をどれだけ正確に文字に起こせたかを評価します。例えば、100語話された中で、90語を正しく文字に変換できた場合、正解率は90%となります。音声認識は、音声入力システムや自動翻訳など、様々な技術の基盤となっているため、高い正解率が求められます。
さらに、文章の意味を理解し、感情を読み解いたり、質問に答えたりする自然言語処理の分野でも、正解率は使われています。例えば、ある文章がポジティブな感情を表しているのか、ネガティブな感情を表しているのかを機械に判断させる場合、正しく判断できた文章の数を全体の文章の数で割ることで正解率を求めます。10個の文章のうち、8個の文章の感情を正しく判断できた場合、正解率は80%です。このように、正解率は機械学習モデルの性能を評価する上で、なくてはならない指標となっています。
分野 | タスク例 | 正解率の計算方法 | 例 |
---|---|---|---|
画像認識 | 写真に写っている物の認識 | 正しく認識できた物の数 / 全体の物の数 | 10枚中8枚正解で正解率80% |
音声認識 | 音声の文字変換 | 正しく文字変換できた語数 / 話された語数 | 100語中90語正解で正解率90% |
自然言語処理 | 文章の感情分析 | 正しく判断できた文章の数 / 全体の文章の数 | 10個中8個正解で正解率80% |
他の指標との関係
機械学習モデルの良し悪しを判断する指標の中で、正解率はよく使われますが、それだけで判断するのは不十分な場合があります。正解率は、全体の予測の中でどれだけが当たっていたかを示す割合ですが、データの偏りがあると、その実態を正しく反映しないことがあります。例えば、病気の有無を予測するモデルで、病気の人が全体の1%しかいない場合、常に「病気ではない」と予測するだけでも99%の正解率が得られます。しかし、これは病気の人を見つけるという本来の目的には全く役に立ちません。
そこで、正解率に加えて、他の指標も組み合わせて見ていく必要があります。適合率は、モデルが「病気である」と予測した人の中で、実際に病気だった人の割合です。この値が高いほど、モデルの予測の確実性が高いと言えます。一方、再現率は、実際に病気である人の中で、モデルが「病気である」と正しく予測できた人の割合です。この値が高いほど、病気の人を見逃す可能性が低いと言えます。適合率と再現率はトレードオフの関係にあることが多く、どちらか一方だけを高くすることは難しいです。例えば、適合率を高くしようとすると、より確実な場合にのみ「病気である」と予測するため、病気の人を見逃す可能性が高くなり、再現率が下がります。逆に、再現率を高くしようとすると、少しでも病気の可能性があれば「病気である」と予測するため、健康な人を誤って病気と判断する可能性が高くなり、適合率が下がります。
適合率と再現率のバランスを考えた指標として、F値があります。これは、適合率と再現率の調和平均で、両方の値を考慮した指標です。また、ROC曲線とAUCもよく用いられる指標です。ROC曲線は、様々な閾値における真陽性率と偽陽性率をプロットした曲線で、AUCはこの曲線の下部の面積です。AUCは、モデルがランダムに選んだ陽性サンプルを陰性サンプルよりも高くランク付けする確率を示し、値が1に近いほどモデルの性能が良いと言えます。これらの指標を組み合わせて用いることで、モデルの性能をより多角的に評価し、目的に合ったモデルを選択することができます。
指標 | 説明 | 長所 | 短所 |
---|---|---|---|
正解率 | 全体の予測の中でどれだけが当たっていたかの割合 | 理解しやすい | データの偏りに影響されやすい |
適合率 (Precision) | モデルが「陽性」と予測した人の中で、実際に陽性だった人の割合 | 予測の確実性を示す | 陽性を見逃す可能性がある |
再現率 (Recall) | 実際に陽性である人の中で、モデルが「陽性」と正しく予測できた人の割合 | 陽性を見逃す可能性が低い | 偽陽性が増える可能性がある |
F値 | 適合率と再現率の調和平均 | 適合率と再現率のバランスを考慮 | 単独ではどちらを重視しているかわかりにくい |
ROC曲線とAUC | ROC曲線は様々な閾値における真陽性率と偽陽性率をプロットした曲線。AUCはこの曲線の下部の面積 | モデルの性能を総合的に評価 | 理解しづらい |
まとめ
機械学習の出来栄えを測る指標の中で、正解率は基本となる大切なものです。これは、どれだけの割合で予測が当たっているかを示す分かりやすい数値です。しかし、データに偏りがある場合、正解率だけで判断するのは危険です。例えば、ある病気を診断するモデルで、その病気にかかっている人が全体の1%しかいないとします。この場合、常に「病気ではない」と予測するモデルでも、正解率は99%となります。しかし、このモデルは病気の人を全く見つけることができません。つまり、高い正解率が必ずしも優れたモデルを示すとは限らないのです。
正解率だけに頼らず、他の指標も合わせて使うことが大切です。病気の診断で言えば、実際に病気の人を正しく「病気」と診断できた割合(真陽性率、感度)や、健康な人を正しく「健康」と診断できた割合(真陰性率、特異度)なども重要な指標です。これらの指標を組み合わせることで、モデルの得意な点、不得意な点を多角的に把握できます。
どの指標を使うかは、解決したい問題によって変わります。例えば、病気の診断では、見逃しを減らすことが重要なので、真陽性率を重視するでしょう。一方、迷惑メールの判定では、重要なメールを誤って迷惑メールとしてしまうことを避けたいので、真陰性率を重視するでしょう。このように、目的や状況に応じて適切な指標を選ぶことが、効果的なモデル開発に繋がります。
最終的には、正解率などの指標だけでなく、モデルが解決しようとしている問題の性質や、ビジネス上の目標も考慮する必要があります。例えば、ある商品をおすすめするモデルでは、クリック率や購入率の向上といったビジネス目標を達成できるかどうかが重要になります。そのため、様々な指標を理解し、状況に応じて適切に使い分ける能力が重要となります。色々な道具を使いこなせる職人のように、状況に合った適切な指標を選び、モデルの良し悪しを正しく見極めることが、より良い機械学習モデルの開発へと繋がっていくのです。
指標 | 説明 | 重視する状況 |
---|---|---|
正解率 | 予測が当たっている割合 | データに偏りがなく、全体的な予測精度を上げたい場合 |
真陽性率(感度) | 実際に病気の人を正しく「病気」と診断できた割合 | 見逃しを減らしたい場合(例:病気の診断) |
真陰性率(特異度) | 健康な人を正しく「健康」と診断できた割合 | 誤判定を減らしたい場合(例:迷惑メールの判定) |