機械学習における混同行列の謎を解き明かす[驚くべき]
公開: 2020-12-07機械学習は、データ処理を蓄積し、データから意味のある洞察を導き出し、データモデリングを行う包括的な用語です。 データモデリングを行った後、パフォーマンス評価のためにモデルを測定する必要があります。その他の業界ベースのパラメーターであり、最も一般的なメトリックの1つは混同行列です。
目次
混同行列とは何ですか?なぜそれが使用されるのですか?
これは、出力クラスが2つ以上である可能性があり、この行列がその入力に関連付けられた実際の値を持つモデルによる予測値のすべての組み合わせを表す分類問題で使用されるパフォーマンスメトリックです。 定義からすると簡単に思えるので「混同行列」と呼ばれますが、より価値のあるパラメータを導き出すために進むにつれて、特定の場所に最適なパラメータに関して混乱が生じます。
これは、分類問題が非常に不均衡であり、1つのクラスが他のクラスよりも支配的である場所で使用されます。 このようなシナリオでは、モデルの精度が99%でピークに達するのを見て驚くかもしれませんが、実際には、モデルは支配階級に大きく偏っています。 マイノリティクラスの予測が得られる可能性はほとんどありません。 したがって、このような不均衡なデータセットをテストするために、混同行列を検討します。
混同行列の構造
行列のサイズは、出力クラスの数に正比例します。 これは、列ヘッダーを実際の値、行ヘッダーをモデル予測と見なす正方行列です。 モデルによって真であり、真であると予測される値は真陽性(TP)であり、正しい負の値の予測は真の負(TN)であり、負であるが真であると予測される値は偽陽性(FP)であり、負であると予測される正の値は偽陰性(FN) 。 この画像を見てください:
読む:機械学習における分類アルゴリズムの種類
これから何を学ぶことができますか?
このマトリックスで何ができるかという有効な疑問が生じます。 これに基づくいくつかの重要な用語があります:

- 精度:モデルによって正しいと識別され、問題ステートメントの解決策に関連する値の部分です。 これを値として引用することもできます。これは、モデルによって与えられた正の結果の合計の一部であり、正です。 したがって、その式をTP /(TP + FP)として与えることができます。
- 思い出してください:それは、モデルによって正として正しく識別された値の部分です。 これは、真陽性率または感度とも呼ばれます。 その式はTP/(TP + FN)であることがわかります。
- F-1スコア:適合率と再現率の調和平均です。 これは、2つのモデルを比較する場合、このメトリックは極値を抑制し、同時に誤検知と誤検知の両方を考慮することを意味します。 2 * Precision * Recall /(Precision + Recall)として引用できます。
- 精度:正か負かに関係なく、正しく識別される値の部分です。 これは、すべての真のポジティブと真のネガティブがこれに含まれることを意味します。 この式は(TP + TN)/(TP + TN + FP + FN)です。
すべての用語の中で、適合率と再現率が最も広く使用されています。 それらのトレードオフは、予測の成功の有用な尺度です。 目的のモデルは高精度で高再現率であると想定されていますが、これは完全に分離可能なデータにのみ含まれます。 実際のユースケースでは、データは非常に整理されておらず、不均衡です。

Pythonで混同行列のコードを作成するにはどうすればよいですか?
sklearnライブラリは、すべての機械学習タスクを最高の精度で実行するためのさまざまな機能を提供し、ほとんどすべてがここに実装されています。 すべてのインポートステートメントがすでに実行されている有名なアイリスデータセットを考えてみましょう。混同行列のコードは次のようになります。
iris =datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names
X_train、X_test、y_train、y_test = train_test_split (X、y、random_state = 0 )
分類器= svm.SVC (カーネル= '線形' 、C = 0.01 ) 。 fit(X_train、y_train)
plot_confusion_matrix(classifier、X_test、y_test、 display_labels = class_names 、 cmap = plt。cm。Blues )
注:これによって返されるマトリックスの側面は逆になっています。左側には実際の値があり、上部には予測値があります。 混乱を避けたい場合は、この関数を実行して、手動で計算するのではなく、詳細な要約(分類レポート)を取得してください。

print(classification_report(y_true = y_test、y_pred = y_pred、target_names = class_names))
また読む:ディープラーニングアルゴリズム
どちらをどこで使用しますか?
これは、データのモデリング中に発生する最も一般的な質問であり、解決策は問題のステートメントドメインにあります。 次の2つのケースを考えてみましょう。
- その人が心停止になるかどうかを予測しているとします。 このシナリオでは、誤分類を行う余裕はなく、行われるすべての予測は正確である必要があります。 そうは言っても、False Negativesのコストは高いので、その人は攻撃する傾向がありましたが、安全であると予測されました。 これらのケースは避ける必要があります。 このような状況では、再現率の高いモデルが必要です。
- 検索エンジンが、モデルによってすべて陽性と予測されるランダムな結果を提供したとすると、ユーザーがそれに依存する可能性はほとんどありません。 したがって、このシナリオでは、ユーザーエクスペリエンスが向上し、Webサイトが正しい方向に成長するように、高精度のモデルが必要です。
結論
混同行列は、分類モデルを評価するための優れた方法です。 これにより、提供された入力に基づいてモデルがクラスをどの程度正確に分類したか、およびこのクラスがどのように誤分類される可能性があるかについての実際の洞察が得られます。
機械学習について詳しく知りたい場合は、IIIT-BとupGradの機械学習とAIのPGディプロマをご覧ください。これは、働く専門家向けに設計されており、450時間以上の厳格なトレーニング、30以上のケーススタディと課題、IIIT-を提供します。 B卒業生のステータス、5つ以上の実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。