AIモデルを評価する指標の選び方!初心者が迷わないための完全ガイド

こんにちは。ゆうせいです。

AIや機械学習のモデルを作ってみたけれど、結局そのモデルが「どれくらい優秀なのか」をどう判断すればいいか迷っていませんか?

実は、AIの評価には、体重計で重さを測るような単純な物差しだけでなく、体脂肪率や血圧を測るように、目的によって使い分けるべき専用の指標がたくさんあるんです。

今回は、回帰分析や分類問題など、モデルの目的に合わせた評価指標の正体を、初心者の方にも分かりやすく解き明かしていきます。

皆さんが今作っているモデルは、数字を当てるためのものですか?それとも、種類を分けるためのものですか?

その答えによって、見るべき数字がガラリと変わりますよ!

1. 数値を予測する「回帰モデル」の精度を測る指標

まずは、売上金額や気温のように「具体的な数値」を予測する回帰モデルの評価について見ていきましょう。

ここでは、予測した値と実際の値がどれくらいズレているか、つまり「誤差」に注目します。

MAE(平均絶対誤差)

これは、誤差の絶対値を平均したものです。

例えば、予測が10円外れた場合、プラスでもマイナスでも「10円のズレ」として扱います。

外れ値、つまり極端に大きなミスがあっても、その影響をマイルドに評価できるのが特徴です。

学校のテストで、1人だけ0点を取っても、クラス全体の平均点が極端に下がらないように配慮するようなイメージですね。

MSE(平均二乗誤差)

誤差を二乗してから平均をとる指標です。

数学的には次のように表されます。

MSE = ( 予測値 - 実績値 ) \times ( 予測値 - 実績値 ) の平均

二乗することで、大きな誤差があるほどその値が跳ね上がります。

「小さなミスは許せるけれど、大きなミスは大問題だ!」という厳しい基準でモデルを評価したい時に使います。

RMSE(二乗平均平方根誤差)

MSEにルート(平方根)を被せたものです。

RMSE = \sqrt{ MSE }

MSEは二乗しているため、単位が「円の二乗」のようになってしまい、直感的に分かりにくいという弱点があります。

RMSEなら、ルートを取ることで単位が元の「円」や「cm」に戻るため、どれくらいズレているかがパッと見て理解しやすいというメリットがあります。


2. 種類を分ける「分類モデル」の性能を測る指標

次に、メールがスパムかどうか、画像が犬か猫かといった「カテゴリ」を分ける分類モデルの評価指標です。

単に「何%当たったか」だけでは見えてこない、モデルのクセを分析します。

正解率(Accuracy)

全体のうち、どれだけ予測が当たったかを示す最もシンプルな指標です。

ただし、これには落とし穴があります。

例えば、100人中1人しか病気でないデータで、全員を「健康」と予測すれば、正解率は99%になってしまいます。

これでは、肝心の1人を見逃してしまいますよね?

適合率(Precision)と再現率(Recall)

この2つは、ビジネスの目的に合わせて使い分けます。

  • 適合率:モデルが「正解だ!」と言った中で、本当に正解だった割合。「空振りを防ぎたい」時に重視します。例えば、誤認逮捕を絶対に避けたい裁判のような場面です。
  • 再現率:本当の正解の中で、モデルがどれだけ正解を見つけ出せたかの割合。「見逃しを防ぎたい」時に重視します。がん検診のように、怪しい人は全員チェックしたい場面ですね。

F1スコア

適合率と再現率は、一方が上がればもう一方が下がるという「あちらを立てればこちらが立たず」の関係にあります。

そのバランスをちょうど良く取ったのがF1スコアです。

F1スコア = 2 ×( 適合率 × 再現率 ) /( 適合率 + 再現率 )


3. モデルの「良さ」と「複雑さ」のバランス

モデルは、複雑にすればするほど学習データには完璧に適合しますが、新しいデータには弱くなる「過学習」という現象が起きます。

これを防ぐための指標がこちらです。

自由度調整済み決定係数

通常の決定係数は、予測に役立たないゴミのような情報を追加しても、数値が上がってしまう性質があります。

それを防ぐために、不要な変数を増やしすぎるとペナルティを与えるようにしたのが、この指標です。

AIC(赤池情報量基準)

モデルのシンプルさと正確さのバランスを数値化したものです。

「カンニングペーパーを丸暗記して満点を取るよりも、教科書の本質を理解して80点を取るほうが賢い」と判断してくれる基準だと思ってください。

この値が小さいほど、無駄がなく優秀なモデルと言えます。


4. 評価指標のメリットとデメリット

どの指標にも得意・不得意があります。表にまとめてみました。

指標のタイプ主なメリット主なデメリット
回帰 (RMSE)単位が元データと同じで直感的大きな誤差に過剰に反応する
分類 (F1スコア)適合率と再現率のバランスが良い指標そのものの意味が直感的に分かりにくい
モデル選択 (AIC)過学習を防ぎ、汎用性を評価できるデータの数が少ないと安定しない

まとめと今後の学習指針

いかがでしたか?

AIの評価は、一つの数字だけを見るのではなく、目的に合わせて複数の指標を組み合わせることが大切です。

  • 数値を当てるなら:まずはRMSEで誤差の感覚を掴みましょう。
  • 種類を分けるなら:正解率だけでなく、F1スコアでバランスを確認してください。
  • 実運用を考えるなら:予測にかかる時間(推論速度)や、モデルのデータ容量も忘れずにチェックしましょう。

まずは、今自分が扱っているデータが「回帰」なのか「分類」なのかを再確認してみてください。

次にモデルを作る際は、これまで見ていなかった別の指標も計算して、モデルの新しい一面を観察してみることをおすすめします!

次は、これらの指標をPythonのライブラリを使って実際に計算する方法にチャレンジしてみます。

理論がわかったら、次は実際に手を動かして数字を出してみたくなりますよね!

Pythonには「scikit-learn(サイキット・ラーン)」という、機械学習の強い味方となるライブラリがあります。

これを使えば、複雑な数式を自分で書かなくても、たった一行で正確な評価指標を導き出すことができるんです。

皆さんの手元に、モデルが予測した値と、実際の結果のデータは準備できていますか?

それでは、具体的なコードの書き方を見ていきましょう!


1. 回帰モデルの指標を計算する

まずは、数値予測のズレを計算する方法です。

sklearn.metrics というモジュールから、必要な道具を呼び出します。

from sklearn.metrics import mean_absolute_error, mean_squared_error
import numpy as np

# y_trueは実際の結果、y_predはモデルが予測した値です
y_true = [300, 450, 590, 710]
y_pred = [280, 460, 580, 800]

# MAE(平均絶対誤差)の計算
mae = mean_absolute_error(y_true, y_pred)

# MSE(平均二乗誤差)の計算
mse = mean_squared_error(y_true, y_pred)

# RMSE(二乗平均平方根誤差)の計算
rmse = np.sqrt(mse)

print(f"MAE: {mae}")
print(f"RMSE: {rmse}")

コードのポイント

RMSE専用の関数は用意されていないことが多いので、MSEを計算した後に numpy というライブラリの sqrt(ルート計算)を使って仕上げるのが一般的です。

「二乗したものをルートで戻す」という手順を、コードでもそのまま実行しているわけですね!


2. 分類モデルの指標を計算する

次に、種類を分ける分類モデルの評価です。

正解率やF1スコアをバラバラに計算しても良いのですが、もっと便利な「一括表示」の方法があります。

from sklearn.metrics import accuracy_score, classification_report

# 0は「健康」、1は「病気」というカテゴリだと想定します
y_true = [0, 1, 0, 0, 1, 1]
y_pred = [0, 0, 0, 0, 1, 1]

# 正解率を計算
acc = accuracy_score(y_true, y_pred)

# 主要な指標をまとめて表示!
report = classification_report(y_true, y_pred)

print(f"正解率: {acc}")
print("詳細レポート:")
print(report)

classification_report の凄さ

この関数を実行すると、適合率(Precision)、再現率(Recall)、F1スコアをクラスごとに表形式でドバッと表示してくれます。

一つひとつ計算する手間が省けるだけでなく、どのカテゴリの予測が苦手なのかが一目瞭然になる魔法のコマンドです!


3. 実践で役立つ「メリット・デメリット」の確認表

コードで計算する際に知っておくと得をする、ライブラリ活用のポイントです。

項目ライブラリを使うメリット注意点(デメリット)
計算速度非常に高速で、大量のデータも一瞬データの形式(リストや配列)を揃える必要がある
正確性計算ミスがなく、標準的な定義で算出内部の計算式を理解していないと結果の解釈を誤る
利便性複雑なF1スコアなども関数一つで完了ライブラリのバージョンによって関数名が変わることがある

まとめと今後の学習指針

Pythonを使えば、評価指標の算出は驚くほど簡単になります。

大切なのは「計算すること」ではなく「出た数字を見て、モデルをどう改良するか」を考えることです。

  • 数字が悪かったら:学習データを増やしたり、モデルのパラメータ(設定)を調整したりしてみましょう。
  • 数字が良すぎたら:もしかすると、テストデータが学習データに混ざってしまう「データリーク」が起きているかもしれません。

次は、モデルの予測結果を視覚的にチェックするために、予測値と実績値をグラフにプロットする方法を学んでみるのはいかがでしょうか?

数字だけでは気づけなかった「特定の範囲だけ予測が外れる」といった傾向が見えてくるはずですよ!

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。