機械学習-パフォーマンスメトリクス

MLアルゴリズム、分類、回帰アルゴリズムのパフォーマンスを評価するために使用できるさまざまな指標があります。MLのパフォーマンスを評価するためのメトリックを慎重に選択する必要があります。

  • MLアルゴリズムのパフォーマンスを測定および比較する方法は、選択した指標に完全に依存します。

  • 結果のさまざまな特性の重要性をどのように重み付けするかは、選択したメトリックによって完全に影響を受けます。

分類問題のパフォーマンスメトリクス

前の章で分類とそのアルゴリズムについて説明しました。ここでは、分類問題の予測を評価するために使用できるさまざまなパフォーマンスメトリックについて説明します。

混同行列

これは、出力が2つ以上のタイプのクラスである可能性がある分類問題のパフォーマンスを測定する最も簡単な方法です。混同行列は、2次元のテーブルに他なりません。「実際」と「予測」、さらに、両方のディメンションには、以下に示すように、「真のポジティブ(TP)」、「真のネガティブ(TN)」、「偽のポジティブ(FP)」、「偽のネガティブ(FN)」があります。

混同行列に関連する用語の説明は次のとおりです。

  • True Positives (TP) −データポイントの実際のクラスと予測されたクラスの両方が1の場合です。

  • True Negatives (TN) −データポイントの実際のクラスと予測されたクラスの両方が0の場合です。

  • False Positives (FP) −データポイントの実際のクラスが0で、データポイントの予測クラスが1の場合です。

  • False Negatives (FN) −データポイントの実際のクラスが1で、データポイントの予測クラスが0の場合です。

sklearn.metricsのconfusion_matrix関数を使用して、分類モデルの混同行列を計算できます。

分類精度

これは、分類アルゴリズムの最も一般的なパフォーマンスメトリックです。これは、行われたすべての予測の比率として行われた正しい予測の数として定義できます。次の式を使用して、混同行列で簡単に計算できます。

$$精度= \ frac {TP + TN} {+++} $$

sklearn.metricsのaccuracy_score関数を使用して、分類モデルの精度を計算できます。

分類レポート

このレポートは、Precision、Recall、F1、およびSupportのスコアで構成されています。それらは次のように説明されます-

精度

ドキュメントの取得に使用される精度は、MLモデルによって返される正しいドキュメントの数として定義できます。次の式を使用して、混同行列で簡単に計算できます。

$$ Precision = \ frac {TP} {TP + FP} $$

再現率または感度

リコールは、MLモデルによって返されるポジティブの数として定義できます。次の式を使用して、混同行列で簡単に計算できます。

$$リコール= \ frac {TP} {TP + FN} $$

特異性

リコールとは対照的に、特異性は、MLモデルによって返されるネガティブの数として定義できます。次の式を使用して、混同行列で簡単に計算できます。

$$特異性= \ frac {TN} {TN + FP} $$

サポート

サポートは、ターゲット値の各クラスにある真の応答のサンプル数として定義できます。

F1スコア

このスコアは、適合率と再現率の調和平均を示します。数学的には、F1スコアは適合率と再現率の加重平均です。F1の最良の値は1で、最悪の値は0です。次の式を使用してF1スコアを計算できます。

= ∗(∗)/(+)

F1スコアは、適合率と再現率の相対的な寄与が等しくなっています。

sklearn.metricsのclassification_report関数を使用して、分類モデルの分類レポートを取得できます。

AUC(ROC曲線下の領域)

AUC(曲線下面積)-ROC(受信者動作特性)は、分類問題のさまざまなしきい値に基づくパフォーマンスメトリックです。名前が示すように、ROCは確率曲線であり、AUCは分離可能性を測定します。簡単に言えば、AUC-ROCメトリックは、クラスを区別する際のモデルの機能について教えてくれます。AUCが高いほど、モデルは優れています。

数学的には、TPR(True Positive Rate)、つまり感度または再現率とFPR(False Positive Rate)、つまり1-特異度をさまざまなしきい値でプロットすることで作成できます。以下は、ROC、y軸にTPR、x軸にFPRを持つAUCを示すグラフです。

sklearn.metricsのroc_auc_score関数を使用してAUC-ROCを計算できます。

LOGLOSS(対数損失)

ロジスティック回帰損失またはクロスエントロピー損失とも呼ばれます。これは基本的に確率推定に基づいて定義され、入力が0〜1の確率値である分類モデルのパフォーマンスを測定します。正確に区別することでより明確に理解できます。精度はモデル内の予測の数(予測値=実際の値)であるのに対し、ログ損失は実際のラベルとの変動量に基づく予測の不確実性の量です。Log Loss値を使用すると、モデルのパフォーマンスをより正確に表示できます。sklearn.metricsのlog_loss関数を使用して、ログ損失を計算できます。

以下は、Pythonでの簡単なレシピであり、バイナリ分類モデルで上記で説明したパフォーマンスメトリックをどのように使用できるかについての洞察を提供します。

from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))

出力

Confusion Matrix :
[
   [3 3]
   [1 3]
]
Accuracy Score is 0.6
Classification Report :
            precision      recall      f1-score       support
      0       0.75          0.50      0.60           6
      1       0.50          0.75      0.60           4
micro avg     0.60          0.60      0.60           10
macro avg     0.62          0.62      0.60           10
weighted avg  0.65          0.60      0.60           10
AUC-ROC:  0.625
LOGLOSS Value is 13.815750437193334

回帰問題のパフォーマンスメトリクス

前の章で回帰とそのアルゴリズムについて説明しました。ここでは、回帰問題の予測を評価するために使用できるさまざまなパフォーマンスメトリックについて説明します。

平均絶対誤差(MAE)

これは、回帰問題で使用される最も単純なエラーメトリックです。これは基本的に、予測値と実際の値の絶対差の平均の合計です。簡単に言えば、MAEを使用すると、予測がどれほど間違っていたかを知ることができます。MAEはモデルの方向を示しません。つまり、モデルのパフォーマンスの低下またはパフォーマンスの上昇については示しません。以下は、MAE −を計算する式です。

$$ MAE = \ frac {1} {n} \ sum | Y- \ hat {Y} | $$

ここで、=実際の出力値

そして$ \ hat {Y} $ =予測された出力値。

sklearn.metricsのmean_absolute_error関数を使用してMAEを計算できます。

平均二乗誤差(MSE)

MSEはMAEに似ていますが、唯一の違いは、絶対値を使用する代わりに、実際の出力値と予測された出力値の差を2乗してからすべてを合計することです。違いは次の式で確認できます-

$$ MSE = \ frac {1} {n} \ sum(Y- \ hat {Y})$$

ここで、=実際の出力値

そして$ \ hat {Y} $ =予測された出力値。

sklearn.metricsのmean_squared_error関数を使用してMSEを計算できます。

決定係数(R 2

R 2乗メトリックは通常、説明の目的で使用され、予測された出力値のセットが実際の出力値に適しているかどうかを示します。次の式は私たちがそれを理解するのに役立ちます-

$$ R ^ {2} = 1- \ frac {\ frac {1} {n} \ sum_ {i {= 1}} ^ n(Y_ {i}-\ hat {Y_ {i}})^ 2} {\ frac {1} {n} \ sum_ {i {= 1}} ^ n(Y_ {i}-\ bar {Y_i)^ 2}} $$

上記の式で、分子はMSEであり、分母は値の分散です。

sklearn.metricsのr2_score関数を使用して、決定係数の2乗値を計算できます。

以下はPythonの簡単なレシピで、回帰モデルで上記で説明したパフォーマンスメトリックをどのように使用できるかについての洞察を提供します。

from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
X_actual = [5, -1, 2, 10]
Y_predic = [3.5, -0.9, 2, 9.9]
print ('R Squared =',r2_score(X_actual, Y_predic))
print ('MAE =',mean_absolute_error(X_actual, Y_predic))
print ('MSE =',mean_squared_error(X_actual, Y_predic))

出力

R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999