どうもニコイチです。ここまで来るといよいよ折り返し地点です。前回は、データを学習データと評価データに分割する方法を学びました。今回は、モデルの精度を測るための重要なツール、評価関数について解説します。特に、回帰問題でよく使われるRMSE(二乗平均平方根誤差)について詳しく見ていきましょう。
全編はこちらから

評価関数とは?
評価関数とは、モデルの予測精度を数値で表すための関数です。作ったモデルがどれくらい正確なのかを客観的に評価するために使います。
評価関数があることで、以下のことがわかるようになります。
- モデルの信頼度: モデルがどれくらい信用できるかを判断できます。
- モデルの改善: モデルの精度を定量的に測ることで、モデルを改善する方向性を検討できます。
- モデルの比較: 複数のモデルを比較して、より良いモデルを選択できます。
- 過学習の判断: 学習データと評価データで精度を比較することで、過学習しているかどうかを判断できます。
例えるなら、評価関数は「テストの点数」のようなものです。テストの点数が高ければ、よく勉強できている(モデルの精度が高い)と判断できます。
評価関数の重要性
評価関数は、モデル作成において非常に重要な役割を果たします。なぜなら、モデルを定量的に評価できなければ、そのモデルが本当に使えるのかどうかを判断できないからです。
例えば、あるモデルを使って商品の売上を予測したとしましょう。もし、モデルの精度が分からなければ、その予測結果を信じて良いのか判断できません。しかし、評価関数を使ってモデルの精度を数値化できれば、その数値をもとに、モデルの信頼度を判断したり、改善策を検討したりすることができます。
また、評価関数は、モデルが過学習を起こしているかどうかを判断する上でも役に立ちます。学習データに対する予測精度が高い一方で、評価データに対する精度が低い場合、モデルが過学習を起こしている可能性が高いと判断できます。
RMSE(二乗平均平方根誤差)とは?
RMSE(Root Mean Squared Error) は、回帰問題でよく使われる評価関数の1つで、予測値と実際の値のずれ(誤差)を表す指標です。RMSEの値は小さいほど、予測精度が高いことを意味します。
RMSEの特徴は、大きな誤差にペナルティを与えることです。つまり、RMSEが小さいモデルは、全体的に誤差が小さく、特に大きな予測ミスをしないモデルであると言えます。
RMSEの計算方法
RMSEは、以下の手順で計算します。
- 誤差の算出: 予測値と実際の値の差を計算する
- 誤差の二乗: 誤差を二乗する
- 平均の算出: すべての二乗誤差の平均を計算する
- 平方根の算出: 平均した二乗誤差の平方根をとる
式で表すと、以下のようになります。
RMSE = √((Σ(予測値 - 実測値)^2) / n)
ここで、
- Σ は合計を表す記号です。
- 予測値 はモデルが出力した予測値です。
- 実測値 は実際の値です。
- n はデータの個数です。
RMSEを例を使って理解しよう
例えば、以下のような予測結果があったとします。
実測値 | 予測値 | 誤差 | 誤差の二乗 |
3 | 5 | -2 | 4 |
5 | 3 | 2 | 4 |
10 | 6 | 4 | 16 |
この場合、
- 誤差: -2, 2, 4
- 誤差の二乗: 4, 4, 16
- 平均の算出: (4 + 4 + 16) / 3 = 8
- 平方根の算出: √8 ≈ 2.83
したがって、このモデルのRMSEは 約2.83 となります。
RMSEの特徴と注意点
RMSEは、回帰モデルの精度を測る上で非常に便利な指標ですが、以下のような特徴と注意点があります。
- 値が小さいほど良い: RMSEの値は、誤差を表す指標なので、値が小さいほど予測精度が高いことを示します。
- 外れ値に敏感: RMSEは、誤差を二乗するため、大きな誤差があると値が大きく変動します。つまり、外れ値(予測が大きく外れたデータ)の影響を受けやすいという特徴があります。
- 単位がある: RMSEは、元のデータの単位と同じ単位を持ちます。例えば、宿泊料金を予測するモデルの場合、RMSEは「円」単位になります。
- MAEとの使い分け: RMSEは、MAE(平均絶対誤差)と並んでよく使われる評価指標ですが、大きな誤差をより重視したい場合にRMSEが適しています。
PythonでRMSEを計算する方法
scikit-learn ライブラリには、RMSEを直接計算する関数は用意されていません。しかし、RMSEの平方根を取る前の値である MSE(平均二乗誤差) を計算する関数 mean_squared_error が用意されています。この mean_squared_error を使ってMSEを計算し、その平方根を取ることで、RMSEを計算することができます。
実際に、PythonでRMSEを計算してみましょう。
1. 必要なライブラリをインポート
import numpy as np
from sklearn.metrics import mean_squared_error as MSE
2. 実測値と予測値を準備
actual = [3, 4, 6, 2, 4, 6, 1] # 実測値
pred = [4, 2, 6, 5, 3, 2, 3] # 予測値
3. MSEを計算
mse = MSE(actual, pred)
print("MSE:", mse)
4. RMSEを計算
rmse = np.sqrt(mse)
print("RMSE:", rmse)
このようにすることで、RMSEを計算することができます。
つまずきやすいポイント
- 評価関数の意味:
- 評価関数は、モデルの精度を数値化するための関数である。
- 評価関数を使うことで、モデルの信頼度を判断したり、モデルを改善したりできる。
- RMSEの意味と計算:
- RMSEは、予測値と実際の値のずれを表す指標で、値が小さいほど良い。
- RMSEは、大きな誤差にペナルティを与える。
- RMSEの計算方法:
- scikit-learn の mean_squared_error 関数を使ってMSEを計算し、その平方根を取る。
- numpy の sqrt 関数を使う。
まとめ
今回は、モデルの精度を測る上で重要な評価関数について学びました。
- 評価関数とは、モデルの精度を数値で表すための関数
- RMSEは、回帰問題でよく使われる評価関数の1つで、値が小さいほど良い
- RMSEは、大きな誤差にペナルティを与える
- RMSEは、mean_squared_error 関数を使ってMSEを計算し、その平方根を取ることで計算できる
今回の記事はここまでです。次回は、いよいよ重回帰モデルを使って予測モデルを作成していきます。お楽しみに!
コメント