Machine-learning-with-python-machine-learning-algorithms-performance-metrics

提供:Dev Guides
移動先:案内検索

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

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_関数を使用して、分類モデルの混同行列を計算できます。

分類精度

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

Accuracy \:= \:\ frac \ {TP + TN} \ {TP + FP + FN + TN}

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

分類レポート

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

精度

文書検索で使用される精度は、MLモデルによって返される正しい文書の数として定義される場合があります。 私たちは次の式の助けを借りて混同行列によってそれを簡単に計算することができます-

Precision \:= \:\ frac \ {TP} \ {TP + FN}

リコールまたは感度

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

Recall \:= \:\ frac \ {TP} \ {TP + FN}

特異度

リコールとは対照的に、特異性は、MLモデルによって返されるネガの数として定義できます。 私たちは次の式の助けを借りて混同行列によってそれを簡単に計算することができます-

Specificity \:= \:\ frac \ {TN} \ {TN + FP}

サポート

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

F1スコア

このスコアにより、精度と再現率の調和平均が得られます。 数学的には、F1スコアは精度と再現率の加重平均です。 F1の最適値は1で、最悪値は0です。 私たちは次の式の助けを借りてF1スコアを計算できます-

F1 \:\:= \:2 *(precision * recall)/(precision + recall)

F1スコアは、精度と再現率の相対的な貢献度が等しくなっています。

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

AUC(Area Under ROC curve)

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

数学的には、TPR(True Positive Rate)をプロットすることで作成できます。 感度または想起vs 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 :
[[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 \ mid Y- \ hat \ {Y} \ mid

ここで、y =実際の出力値

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

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

平均二乗誤差(MSE)

MSEはMAEに似ていますが、唯一の違いは、絶対値を使用する代わりに、すべてを合計する前に実際の出力値と予測出力値の差を2乗することです。 違いは、次の方程式で気づくことができます-

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

ここで、Y =実際の出力値

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

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

R 2乗(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}-\ hat \ {Y} _ \ {i})^ 2}}

上記の方程式では、分子はMSEで、分母はY値の分散です。

sklearn.metricsのr2_score関数を使用して、Rの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