scikit-learn で回帰モデルの結果を評価する

Last update: 2017-10-10

本ページでは、Python の機械学習ライブラリの scikit-learn を用いて、回帰モデル (Regression model) の予測精度を評価する方法を紹介します。

回帰モデルの評価にはいくつかの指標があり、本ページでは主要な指標として、MAE, MSE, RMSE, 決定係数の 4 つを紹介します。

平均絶対誤差 (MAE)

平均絶対誤差 (MAE, Mean Absolute Error) は、実際の値と予測値の絶対値を平均したものです。MAE が小さいほど誤差が少なく、予測モデルが正確に予測できていることを示し、MAE が大きいほど実際の値と予測値に誤差が大きく、予測モデルが正確に予測できていないといえます。計算式は以下となります。

evaluation_mae

(evaluation_y: 実際の値, evaluation_y_hat: 予測値, evaluation_n: 件数)

scikit-learn には、sklearn.metrics.mean_absolute_error に計算用のメソッドが実装されており、以下のように利用できます。

平均二乗誤差 (MSE)

平均二乗誤差 (MSE, Mean Squared Error) とは、実際の値と予測値の絶対値の 2 乗を平均したものです。この為、MAE に比べて大きな誤差が存在するケースで、大きな値を示す特徴があります。MAE と同じく、値が大きいほど誤差の多いモデルと言えます。計算式は以下となります。

evaluation_mse

(evaluation_y: 実際の値, evaluation_y_hat: 予測値, evaluation_n: 件数)

scikit-learn には、sklearn.metrics.mean_squared_error に計算用のメソッドが実装されており、以下のように利用できます。

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

MSE の平方根を 二乗平均平方根誤差 (RMSE: Root Mean Squared Error) と呼びます。上記の MSE で、二乗したことの影響を平方根で補正したものです。RMSE は、RMSD (Root Mean Square Deviation) と呼ばれることもあります。計算式は以下となります。

evaluation_rmse

(evaluation_y: 実際の値, evaluation_y_hat: 予測値, evaluation_n: 件数)

scikit-learn には RMSE の計算は実装されていないため、以下のように、np.sqrt() 関数で上記の MSE の結果を補正します。

決定係数 (R2)

決定係数 (R2, R-squared, coefficient of determination) は、モデルの当てはまりの良さを示す指標で、最も当てはまりの良い場合、1.0 となります (当てはまりの悪い場合、マイナスとなることもあります)。寄与率 (きよりつ) とも呼ばれます。計算式は以下となります。

evaluation_r2

(evaluation_y: 実際の値, evaluation_y_hat: 予測値, evaluation_y_bar: 実際の値の平均値, evaluation_n: 件数)

scikit-learn には、sklearn.metrics.r2_score に計算用のメソッドが実装されており、以下のように利用できます。

参考:

See also