Python

Pythonで機械学習を学ぶ モデルの評価指標

分類モデル

混同行列と関連指標

精度を考えた時に、予測と結果で4つのパターンが存在する。

(正解と予測して答えが正解の時、正解と予測して答えが不正解の時、不正解と予想して答えが正解の時、 不正解と予想して答えが不正解の時)

混同行列は、これを表にしたものです。

正解の予測不正解の予測
答えが正解TP (True Positive)FN (False Negative)
答えが不正解FP(False Positive)TN (True Negative)

正解率

全体に対して予測があたった割合。

(TP + TN) / (TP +TN + FP + TN) 

適合率

不正解と予想して不正解であった割合。

TN / (FN + TN) 

再現率

実際に不正解を正しく不正解と予測できた割合。

TN / (FP + TN) 

F1スコア

適合率と再現率の調和平均。

(2 * 適合率 * 再現率) / (適合率 + 再現率) 

ROC曲線とAUC

予測確率の値そのものと観測値の関係から、性能を評価したい場合に役立つ。

ROC曲線

縦横に真陽性率(再現率)、偽陽性率(実際は不正解のものを正解と予測した割合)の値をプロットした曲線。scikit-learnではroc_curve関数が用意されている。

AUC

ROC曲線の形状に基づく評価指標。ROC曲線と横軸の範囲の面積。不均衡なデータ(正解率と適合率が大きく異なる場合)でも、評価時に耐えられる。scikit-learnには、auc関数が用意されている。

multi-class accuracy

二値分類のaccuracyを拡張したもの、予測が正しい割合を表す。scikit-learnには、accuracy_score関数が用意されている。

multi-class logloss

loglossを拡張したもの。log_loss関数が用意されている。

回帰モデル

目的変数が数値であるため評価方法は分類モデルと比べてシンプルなものなる。

タイトル概要関数
平均平方二乗誤差(RMSE)目的変数のTrueと予測値の差の二乗を平均し平方根を取るsqrt(mean_squared_error())
RMSLE目的変数のTrueと予測値のそれぞれの対数の差の二乗を平均し平方根を取るmean_squared_log_error()
平均二乗誤差(MSE)残差平方和(SSE。予測値と正解の差の二乗をサンプルごとに足し上げた値)をサンプル数で割るmean_squared_error()
平均絶対誤差(MAE)予測値と正解の差の絶対値をサンプルごとに足し上げ、最後にサンプル数で割る(予測した外れ値の影響を受けにくい)mean_absolute_error()
MedAE予測値と正解の差の絶対値の中央値。MAEよりも外れ値にロバスト(堅牢)median_absolute_error()
決定係数(R2)処理平方和(SST)と、残差平方和(SSE)の比率。良いと1に近づき、悪いと-1に近づく。r2_score()