今日はデータサイエンスの最も重要な概念の1つである混乱行列とそのPythonでの実装について見ていきます。
データサイエンスは、私たちがデータを研究し、データをきれいにして、様々な機械学習アルゴリズムを使って予測を実行する巨大な領域です。
アルゴリズムを使用した後、目的の出力に向けたアルゴリズムの正確さと効果を確認することは非常に重要です。
そのようなモデルの性能を評価するためのエラーメトリクスの一つがConfusion Matrixです。
この記事もチェック:知っておきたいPythonの機械学習アルゴリズムTOP5
コンフュージョンマトリックスとは?
分類問題」、つまり結果・目標・反応変数がカテゴリデータであるビジネス問題に対して、ある種のMLアルゴリズムを適用して結果を予測する必要がある状況に遭遇することがある。
例 例:ある電子メールがSPAMかNOT-SPAMかを検出します。
したがって、上記のシナリオでは、ベスト・フィットのためのモデルの正確さと厳密さを判断するための特別なエラー・メトリックが必要です。
Confusion MatrixはError Metricの1つで、分類機械学習アルゴリズムの性能を判断するために使用されます。
これは、モデルの精度レベル、精度率、エラーパーセントに関する詳細な情報を提供します。
混同行列を用いることで、我々は、カテゴリ応答変数の実際の正しい結果と予測された結果を区別することができます。
混同行列の必要性を理解した上で、次に、どのモデルに対しても正しい適合アルゴリズムを判断し、予測することができる様々な構成要素に注目しましょう。
混乱マトリックスの構成要素
Confusion Matrixの構成を見てみましょう。
from sklearn import metrics
pred = [ "T" , "F" , "T" , "T" , "F" ] #predicted set of values
actual = [ "F" , "F" , "F" , "T" , "T" ] #actual set of values
CM = metrics.confusion_matrix(pred, actual, labels = [ "T" , "F" ]) #confusion matrix
print (CM)
report = metrics.classification_report(pred, actual, labels = [ "T" , "F" ]) #precision, recall, f1-score,etc
print (report)
|
これは分類モデルによる予測の要約を表す。
- 真陰性(true negative: tn)。実際に陰性であり、かつ陰性と予測された値。
- false negative (fn)。false negative (fn): 実際には陽性であるが、陰性と予測された値。
- FALSE POSITIVE (FP): 実際には陰性であるが、陽性と予測される値。
- トゥルーポジティブ(TP): トゥルーポジティブ(TP):実際にはポジティブで、ポジティブと予測される値。
それでは、Confusion Matrixがモデルについて提供する他の情報を見てみましょう。
- Accuracy – これは提供された入力から予測に成功した割合を示す値として定義される。
精度 = TP + TN / (TP + TN + FP + FN)
-
- 精度スコア – 正しく「真」と予測された値の集合を定義する値であり、実際の集合においても「真」となることが起こる。
精度とは、正の値が本当に正の値として予測されたことを理解することです。
精度 = TP / (TP + FP)
- リコールスコア – 実際に「真」であり、また「真」として正しく予測された値の集合を表す値です。
リコールとは、サンプルの特定のクラスが正しく予測されたことを理解することです。
リコール = TP / (TP +FN)
- F1スコア
F1スコアは、データが不均衡な場合のモデルの精度と効率性を評価するのに役立ちます。
これは実際にはPrecisionとRecallスコアの調和平均です。
F1 = 2.0*(Recall * Precision) / (Recall + Precision)
それでは、Confusion Matrixの概念を次のセクションで示すように、例として実装してみましょう。
Pythonによる錯乱行列の実装
この例では、予測値と実測値のリストを渡して、混同行列を構築しています。
混同行列の関数を利用するために、sklearnライブラリをインポートする必要があります。
[[ 1 2 ]
[ 1 1 ]]
precision recall f1 - score support
T 0.50 0.33 0.40 3
F 0.33 0.50 0.40 2
accuracy 0.40 5
macro avg 0.42 0.42 0.40 5
weighted avg 0.43 0.40 0.40 5
|
classification_matrix() 関数は、正しく認識された値と誤って認識された値の集合を表す。
さらに、classification_report() 関数
は、渡された入力の各カテゴリ、すなわち ‘T’ と ‘F’ に対するメトリクスの値を表現します。
結果は以下の通りです。
まとめ
ここまでで、このトピックは終了です。
何か疑問があれば、お気軽にコメントください。