こんにちは!
スタビジ編集部です!
今回はMSE、RMSE、MAEについて解説していきます!
これら三つの指標は主に機械学習モデルの評価指標として用います。特に回帰問題における機械学習モデルで使用します。
この記事では、MSE、RMSE、MAEについて解説していきます!またこれらの指標をPythonで実装していきます!
・MSE、RMSE、MAEについて解説!
・MSE、RMSE、MAEをPythonで実装!
以下の動画でも解説しているのであわせてチェックしてみてください!
目次
MSE、RMSE、MAEについて解説!
早速MSE、RMSE、MAEを解説していきます。(\(y_{i}\)は実測値、\(\hat{y_{i}}\)は予測値として用いています。)
MSE(Mean Squared Error)
まずMSEはMean Squared Errorの略であり、残差の二乗の平均を表しています。
身近な例として、最小二乗法を用いた回帰分析ではMSEを最小化するようにパラメータを調節していますね!
\(MSE = \frac{1}{n}\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2}\)
しかしMSEの単位に着目してみると学習データの単位の二乗となるので、評価指標の解釈が非常に難しいんです。
RMSE(Root Mean Squared Error)
そこで登場するのがRMSE
RMSEはRoot Mean Squared Errorの略であり、MSEの平方根を表しています。これによってRMSEの単位は学習データの単位と同じになるため、解釈がしやすくなります。
\(RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2}}\)
MAE(Mean Absolute Error)
最後にMAEはMean Absolute Errorの略であり、残差の絶対値の平均を表しています。
\(MAE=\frac{1}{n}\sum_{i=1}^{n}|y_{i}-\hat{y_{i}}|\)
RMSEとの違いは、外れ値にロバストである(頑健である)か。
RMSEはMSEのルートを取って単位を揃えているのですが、残差の二乗を用いているので、残差が大きいほどRMSEの値も高くなってしまいます。
一方、MAEは残差の絶対値であるので大きさはRMSEと比較するとロバストになるんです!
したがって解釈性を重視、あるいは外れ値の影響を抑えたい場合はMAEが有効です!
具体的な計算式で計算してMSE、RMSE、MAEを比較してみよう!
数式だけだとイメージが湧きにくいと思うので具体的にMSE、RMSE、MAEを計算して見ていきましょう!
以下のような結果が得られたとしましょう!
予測値 | 観測値 | 残差 |
100 | 110 | 10 |
1000 | 1100 | 100 |
この時、MSE、RMSE、MAEはどうなるでしょうか?
・MSE
まずMSEは予測値と観測値の差である残差の二乗を足すので、\(10^2+100^2=10100\)となり、それを2で割った5050となります。
・RMSE
それではRMSEはどうなるでしょう?MSEの値にルートを取るので、71.063・・・となります。
・MAE
それではMAEはどうなるでしょう?\(10+100=110\)を2で割った55となりますね。
一方で以下のようなケースではどうでしょう?
予測値 | 観測値 | 残差 |
100 | 110 | 10 |
100 | 110 | 10 |
・MSE
この時、MSEは\(10^2+10^2=200\)となり、それを2で割った100となります。
・RMSE
RMSEはMSEの値にルートを取るので、10となります。
・MAE
MAEは\(10+10=20\)を2で割った10となりますね。
残差が同じ場合はRMSEとMAEが等しくなりました。
もちろんMSEは数字の単位が違うので大きくなりますが、RMSEも外れ値があると外れ値に引っ張られて大きな値を取りがちな傾向があることが分かったと思います。
単一の指標だけではなくて様々な指標を複合的に見て評価できるようになりましょう!
MSE、RMSE、MAEをPythonで実装!
そしてMSE、RMSE、MAEをPythonで実装していきます!
今回はsklearn.metricsパッケージを用いて3つの評価指標を実装していきます!また用いるデータは糖尿病の進行状況のデータを用いて、回帰分析を行います!
注意する点として、RMSEを実装する際はmean_sqared_errorの属性であるsquaredをFalseに指定する必要があります。
import pandas as pd
from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error,mean_absolute_error
from sklearn.model_selection import train_test_split
diabetes = load_diabetes()
x = pd.DataFrame(diabetes.data,columns=diabetes.feature_names)
y = pd.DataFrame(diabetes.target)
x_train,x_test,y_train,y_test = train_test_split(x,y)
model = LinearRegression()
model.fit(x_train,y_train)
y_pred = model.predict(x_test)
print("MSE:{}".format(mean_squared_error(y_test,y_pred)))
print("RMSE:{}".format(mean_squared_error(y_test,y_pred,squared=False)))
print("MAE:{}".format(mean_absolute_error(y_test,y_pred)))
これでMSE、RMSE、MAEを実装することができました!
他の評価指標に関しては以下の記事でまとめていますのでチェックしてみてください!
MSE・RMSE・MAE まとめ
本記事ではMSE、RMSE、MAEについてまとめました!
今回は回帰問題における評価指標を見てきましたが、分類問題に使われる評価指標もあるので、ぜひこちらの記事も見てくださいね!
また今回は回帰分析を使ったので、どのような手法なのか知りたい方はこちらもご覧ください!
このようなデータサイエンスの力を身に付けるためにはスタビジの記事やスクールを活用すると良いでしょう。
当メディアでは、データサイエンティストの経験を詰め込んだデータサイエンス特化のスクール「スタアカ(スタビジアカデミー)」を運営していますので,興味のある方はぜひチェックしてみてください!
AIデータサイエンス特化スクール「スタアカ」
【価格】 | ライトプラン:1280円/月 プレミアムプラン:149,800円 |
---|---|
【オススメ度】 | |
【サポート体制】 | |
【受講形式】 | オンライン形式 |
【学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ SQLとPythonを組み合わせて実データを使った様々なワークを行う マーケティングの実行プラン策定 マーケティングとデータ分析の掛け合わせで集客マネタイズ |
データサイエンティストとしての経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!
当メディアが運営するスクールです。
24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!
Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!
・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ
データサイエンスに関する記事はこちら!
データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください!