【2023年最新】scikit-learnでRMSEを直接算出する方法

【2023年最新】scikit-learnでRMSEを直接算出する方法

2023年10月20日

RMSEの計算方法を調べると、scikit-learnでMSEを計算し、numpyでルートを取って算出する方法が紹介されています。これはscikit-learnでRMSEを直接算出できないため、と説明されていますが、最近のscikit-learnでは直接できるようになってるようでしたので、紹介します。

この記事でわかること

・scikit-learnでRMSEを直接算出する方法がわかる

MSEとRMSEについて


平均二乗誤差(Mean Squared Error, MSE)と相対平均二乗誤差(Relative Squared Error, RSE)は、モデルの予測性能を評価するための指標です。以下にそれぞれの計算方法について説明します。

平均2乗誤差(MSE)

MSEは、予測値と実際の観測値との差の平均の二乗を示します。以下はMSEの計算方法です。

  1. 各データポイントにおいて、予測値(ŷi)と実際の観測値(yi)の差を計算します。
  2. それらの差をすべて二乗します。
  3. これらの二乗誤差を合計します。
  4. 合計誤差をデータポイントの総数(n)で割って、MSEを計算します。

MSE = (1/n) * Σ(yi – ŷi)²

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

RMSEは、MSEの平方根を取ったもので、誤差の平均の二乗の平方根を示します。以下はRMSEの計算方法です。

  1. MSEを計算します。
  2. MSEの平方根を取ります。

RMSE = √(MSE)

MSEとRMSEの違い

以下に2つの違いをまとめてみます。MSEもRMSEもどちらも予測値と実際の値の誤差を評価する指標です。RMSEの方が単位が観測値と同じため、直感的に理解しやすい特徴があります。

項目MSERMSE
計算方法(1/n) * Σ(yi – ŷi)²√(MSE)
誤差の平均化2乗平均平方根を取った平均
単位誤差の2乗観測値と同じ
目的モデルの性能評価モデルの性能評価
直感的な理解理解しにくい理解しやすい
最小値00
最小値に近いほどよいyesyes

scikit-learnでの計算方法

MSEはsklearn.metricsのmean_squared_errorで計算できます。

#インポート
from sklearn.metrics import mean_squared_error
import numpy as np

# サンプルデータを生成
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)  # 特徴量
y = np.array([2, 4, 5, 4, 5])  # 目標値

#mseの計算
mse=mean_squared_error(X,y)
mse
1.8

RMSEは上記のMSEの平方根を取れば良いため、numpyのnp.sqrtを用いて平方根を取る方法が今まで一般的に紹介されていました。

rmse=np.sqrt(mse)
1.3416407864998738

しかし、sklearn.metricsのmean_squared_errorでRMSEを直接計算できるようになっています。コードは以下の通り。引数として、squaredをFalseに指定します。

rmse=mean_squared_error(X,y,squared=False)
rmse
1.3416407864998738

コードが少なくて済みます。

以上、参考になれば幸いです。