# RMSE、MAE、MSEの違い/使い分けについて解説！Pythonでそれぞれ計算してみよう！

> 当サイト【スタビジ】の本記事ではRMSE、MAE、MSEについて解説してきます。これらの指標は機械学習のモデルにおける評価指標であり、目的に合わせて適切に使うことが大切です。今回はこれらの評価指標の解説とPythonによる実装を見ていきましょう！

- URL: https://toukei-lab.com/rmse_mae_mse
- 公開: 2023.09.27 / 更新: 2025.07.23
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事ではRMSE、MAE、MSEについて解説してきます。これらの指標は機械学習のモデルにおける評価指標であり、目的に合わせて適切に使うことが大切です。今回はこれらの評価指標の解説とPythonによる実装を見ていきましょう！
:::

こんにちは！

スタビジ編集部です！

今回は**MSE、RMSE、MAE**について解説していきます！

これら三つの指標は主に<mark>機械学習モデルの評価指標</mark>として用います。特に回帰問題における機械学習モデルで使用します。

:::talk{who="umatan" side="right"}
これら3つの指標はよく使われるので、指標の意味と式をしっかり理解していこう！
:::

この記事では、MSE、RMSE、MAEについて解説していきます！またこれらの指標をPythonで実装していきます！

:::point
**・MSE、RMSE、MAEについて解説！**\
**・MSE、RMSE、MAEをPythonで実装！**
:::

以下の動画でも解説しているのであわせてチェックしてみてください！

::youtube{#t8E4Cg_xupg}

## MSE、RMSE、MAEについて解説！

![quiz](/wp-content/uploads/2021/01/Exams-amico-min-e1618234275813-1024x955.png)

早速MSE、RMSE、MAEを解説していきます。($y_{i}$は実測値、$\hat{y_{i}}$は予測値として用いています。）

### MSE（Mean Squared Error）

まず<mark>MSEはMean Squared Errorの略であり、残差の二乗の平均を表しています。</mark>

身近な例として、[最小二乗法](/least_squares_method)を用いた回帰分析ではMSEを最小化するようにパラメータを調節していますね！

$MSE = \frac{1}{n}\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2}$

しかしMSEの単位に着目してみると<mark>学習データの単位の二乗となるので、評価指標の解釈が非常に難しいんです。</mark>

### RMSE（Root Mean Squared Error）

そこで登場するのがRMSE

<mark>RMSEはRoot Mean Squared Errorの略であり、MSEの平方根を表しています。</mark>これによってRMSEの単位は学習データの単位と同じになるため、<mark>解釈がしやすくなります。</mark>

$RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_{i}-\hat{y_{i}})^{2}}$

### MAE（Mean Absolute Error）

最後に<mark>MAEはMean Absolute Errorの略であり、残差の絶対値の平均を表しています。</mark>

$MAE=\frac{1}{n}\sum_{i=1}^{n}|y_{i}-\hat{y_{i}}|$

RMSEとの違いは、<mark>外れ値にロバストである（頑健である）か。</mark>

RMSEはMSEのルートを取って単位を揃えているのですが、残差の二乗を用いているので、残差が大きいほどRMSEの値も高くなってしまいます。

一方、MAEは残差の絶対値であるので大きさはRMSEと比較するとロバストになるんです！

したがって<mark>解釈性を重視、あるいは外れ値の影響を抑えたい場合はMAEが有効です！</mark>

## 具体的な計算式で計算してMSE、RMSE、MAEを比較してみよう！

数式だけだとイメージが湧きにくいと思うので具体的にMSE、RMSE、MAEを計算して見ていきましょう！

以下のような結果が得られたとしましょう！

<table border="0" cellspacing="0" cellpadding="0" class="table">
<tbody>
<tr>
<td>予測値</td>
<td>観測値</td>
<td>残差</td>
</tr>
<tr>
<td align="right">100</td>
<td align="right">110</td>
<td align="right">10</td>
</tr>
<tr>
<td align="right">1000</td>
<td align="right">1100</td>
<td align="right">100</td>
</tr>
</tbody>
</table>

この時、MSE、RMSE、MAEはどうなるでしょうか？

**・MSE**

まずMSEは予測値と観測値の差である残差の二乗を足すので、$10^2+100^2=10100$となり、それを2で割った5050となります。

**・RMSE**

それではRMSEはどうなるでしょう？MSEの値にルートを取るので、71.063・・・となります。

**・MAE**

それではMAEはどうなるでしょう？$10+100=110$を2で割った55となりますね。

一方で以下のようなケースではどうでしょう？

<table border="0" cellspacing="0" cellpadding="0" class="table">
<tbody>
<tr>
<td>予測値</td>
<td>観測値</td>
<td>残差</td>
</tr>
<tr>
<td align="right">100</td>
<td align="right">110</td>
<td align="right">10</td>
</tr>
<tr>
<td align="right">100</td>
<td align="right">110</td>
<td align="right">10</td>
</tr>
</tbody>
</table>

**・MSE**

この時、MSEは$10^2+10^2=200$となり、それを2で割った100となります。

**・RMSE**

RMSEはMSEの値にルートを取るので、10となります。

**・MAE**

MAEは$10+10=20$を2で割った10となりますね。

残差が同じ場合はRMSEとMAEが等しくなりました。

<mark>もちろんMSEは数字の単位が違うので大きくなりますが、RMSEも外れ値があると外れ値に引っ張られて大きな値を取りがちな傾向があることが分かったと思います。</mark>

単一の指標だけではなくて様々な指標を複合的に見て評価できるようになりましょう！

## MSE、RMSE、MAEをPythonで実装！

![stories pc](/wp-content/uploads/2021/01/All-the-data-bro-e1613475965440-1024x789.png)

そしてMSE、RMSE、MAEをPythonで実装していきます！

今回はsklearn.metricsパッケージを用いて３つの評価指標を実装していきます！また用いるデータは[糖尿病の進行状況のデータ](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_diabetes.html)を用いて、[回帰分析](/%e5%9b%9e%e5%b8%b0%e5%88%86%e6%9e%90)を行います！

注意する点として、<mark>RMSEを実装する際はmean_sqared_errorの属性であるsquaredをFalseに指定する必要があります。</mark>

```python
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の結果](/wp-content/uploads/2023/09/66c19942ab4ba346fdb64ccc04cde373.png)

これでMSE、RMSE、MAEを実装することができました！

他の評価指標に関しては以下の記事でまとめていますのでチェックしてみてください！

<https://toukei-lab.com/evaluation>

## MSE・RMSE・MAE　まとめ

![Happy](/wp-content/uploads/2020/08/Celebration-amico-min-e1618926172675-1024x932.png)

ここまでご覧いただきありがとうございました！

本記事では**MSE、RMSE、MAE**についてまとめました！

今回は回帰問題における評価指標を見てきましたが、分類問題に使われる評価指標もあるので、ぜひ[こちらの記事](/confusion_matrix)も見てくださいね！

<https://toukei-lab.com/confusion_matrix>

また今回は[回帰分析](/%e5%9b%9e%e5%b8%b0%e5%88%86%e6%9e%90)を使ったので、どのような手法なのか知りたい方はこちらもご覧ください！

<https://toukei-lab.com/%e5%9b%9e%e5%b8%b0%e5%88%86%e6%9e%90>

このようなデータサイエンスの力を身に付けるためにはスタビジの記事やスクールを活用すると良いでしょう。

当メディアでは、データサイエンティストの経験を詰め込んだデータサイエンス特化のスクール[「スタアカ（スタビジアカデミー）」](https://toukei-lab.com/achademy/)を運営していますので，興味のある方はぜひチェックしてみてください！

### AIデータサイエンス特化スクール「スタアカ」

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

当メディアが運営するスクールです。

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

データサイエンスに関する記事はこちら！

<https://toukei-lab.com/statistics-freshman>

<https://toukei-lab.com/datascience-book>

データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください！

<https://toukei-lab.com/datascientist-school>