見出し画像

評価関数

回帰モデルと分類モデルの評価の方法メモ。

回帰モデルの評価

1.MeanAbsoluteError【平均絶対誤差】

平均絶対誤差(MAE)は、小さいほど精度が良いです。真の値と予測値の差の絶対値の平均つまりどれだけズレているか外れ値の影響を低減した形での評価に適しています。
全サンプルの誤差を平等に評価し、サンプル全体の誤差をできるだけ小さくしたい場合に利用します。さらにMAEは外れ値に影響されにくいです。

from sklearn.metrics import mean_absolute_error as MAE

# MAE算出
print(MAE(y_test, clf.predict(X_test)))

2.MeanSquaredError【平均二乗誤差】

平均二乗誤差(MSE)は、実際の値と予測値の絶対値の2乗を平均したものです。MSEはMAEよりも平均値を重視します。そのため、MAEは平均値が偏っているデータセットに適しており、MSEは分散が大きいデータセットに適しています。

from sklearn.metrics import mean_squared_error as MSE

# MSE算出
print(MSE(y_test, clf.predict(X_test)))

3.RMSE【二乗平均平方根誤差】

小さいほど精度が良く、MSEに平方根をとることで計算されるもので1点でも大きく予想を外すと値が大きくなります。大きな予測誤差を出さないモデルの評価に適しています。(外れ値もできるだけ当てたい場合)
回帰問題を使ったコンペティションではRMSEがよく評価指標として使われます。

from sklearn.metrics import mean_squared_error as MSE
# MSE算出
print(MSE(y_test, clf.predict(X_test)))
# RMSE算出
print(np.sqrt(MSE(y_test, clf.predict(X_test))))

4.R²Score【決定係数】

R²Scoreは決定係数といい、統計学において独立変数(説明変数)が従属変数(目的変数)のどれくらいを説明できるかを表す値です。
最も当てはまりの良い場合、1.0となります。寄与率と呼ばれることもあります。
MAEに比べて、大きな誤差が存在する時に小さな値を示す特徴があります。また、MAEと異なり、値が大きいほど誤差の少ないモデルと言えます。

from sklearn.metrics import r2_score
# R2score算出
print(r2_score(y_test, clf.predict(X_test)))

分類モデルの評価

1.AccuracyScore

正解率とも呼ばれます。正解数を全体の個数で割った値です。例えば、10個のテストデータがあり、そのうち9個を正しく分類できた場合、Accuracy Scoreは0.9となります。
Accuracy Scoreは、分類問題の精度を測る評価指標としてよく使われますが、すべての問題に適しているわけではありません。例えば、クラスの分布が偏っている場合、Accuracy Scoreは精度を過大評価する可能性があります。そのため、Accuracy Score以外の評価指標も併用して、分類問題の精度を測ることが重要です。

# ライブラリのインポート
from sklearn.metrics import accuracy_score

# 予測ラベル
y_pred = [0, 2, 1, 3]
# 正解ラベル
y_true = [0, 1, 2, 3]

# accuracyの算出
print(accuracy_score(y_true, y_pred))

2.ConfusionMatrix【混合行列】

混合行列は、4つの要素で構成されています。

  • 真陽性(True Positives, TP):正しく陽性と予測されたデータ

  • 偽陰性(False Negatives, FN):誤って陰性と予測されたデータ

  • 偽陽性(False Positives, FP):誤って陽性と予測されたデータ

  • 真陰性(True Negatives, TN):正しく陰性と予測されたデータ

混合行列は、以下の4つの指標で評価することができます。

  • 精度(Accuracy):(TP + TN) / (TP + TN + FP + FN)

  • 再現率(Recall):TP / (TP + FN)

  • 適合率(Precision):TP / (TP + FP)

  • F1スコア:2 * Recall * Precision / (Recall + Precision)

精度は、混合行列の4つの要素を合計した割合です。再現率は、正しく陽性と予測されたデータの割合です。適合率は、正しく陽性と予測されたデータの割合です。F1スコアは、再現率と適合率の調和平均です。
混合行列は、分類問題におけるモデルの精度を評価するための重要な指標です。混合行列を活用することで、モデルの精度を客観的に評価することができます。

from sklearn.metrics import accuracy_score,confusion_matrix

# 混合行列の作成
cm = confusion_matrix(y_test, y_pred)
print(cm)

# ヒートマップの作成
sns.heatmap(cm, annot=True,cmap='Blues')
plt.show()

3.ClassificationReport 

分類レポート(Classification Report)とは、分類問題におけるモデルの精度を評価するための指標です。混合行列と、精度(Accuracy)、再現率(Recall)、適合率(Precision)、F1スコア(F1 Score)、サポート(Support)をまとめた表です。
分類レポートは、混合行列の要素をまとめて表示することで、モデルの精度をよりわかりやすく評価することができます。

from sklearn.metrics import classification_report

# 正解ラベル
y_true = [0, 1, 2, 2, 2]
# 推定ラベル
y_pred = [0, 0, 2, 2, 1]

# 目的変数の各クラス名
target_names = ['class 0', 'class 1', 'class 2']
#第1引数に正解ラベル、第2引数に予測ラベル、第3引数に目的変数の各クラスの名前を指定

print(classification_report(y_true, y_pred, target_names=target_names))

いいなと思ったら応援しよう!