PR
スポンサーリンク

回帰分析の評価指標をスクラッチして理解する

プログラミング
スポンサーリンク

回帰分析の評価指標でよく使う 平均二乗誤差 (MSE)、二乗平均平方根誤差 (RMSE)、平均絶対誤差 (MAE)。スクラッチすることで特徴をあらためて理解することができるので、そのソースコードを紹介します。

比較するリスト

import numpy as np

#差分が0, 1, 2, 4, 8 で平均差分3
test = np.array([1, 2, 3, 4, 5])
pred = np.array([1, 3, 5, 8 ,13])

平均二乗誤差 (MSE)

正解値と予測値の差を二乗した平均。二乗している分、外れ値の影響が強く出るので外れ値を除いておかないと思いがけず大きな値になる。

def MSE(test, pred): 
    return sum((test - pred)**2) / len(test)
MSE(test, pred)

17.0

#sklearnで実行して検証

from sklearn.metrics import mean_squared_error 
mean_squared_error(test, pred)

17.0

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

平均二乗誤差の平方根。平方根の計算はスクラッチではなくnp.sqrtを使いました。

def RMSE(test, pred):
   return np.sqrt(MSE(test, pred))
RMSE(test, pred)

4.123105625617661

#sklearnで実行して検証np.sqrt(mean_squared_error(test, pred))

4.123105625617661

平均絶対誤差 (MAE)

正解値と予測値の絶対値の平均。

def MAE(test, pred):
    return np.mean(abs(test - pred))
MAE(test, pred)

3.0

#sklearnで実行して検証from sklearn.metrics import mean_absolute_error

mean_absolute_error(test, pred)

3.0

差分の絶対値の平均なだけあって、これが差分の平均とピタリ一致しました。当然といえば当然ですが。

コメント

タイトルとURLをコピーしました