機械学習の混同行列:ワンストップソリューション



この記事では、その精度を評価するために使用される機械学習アルゴリズムの最も重要な側面の1つである混同行列に焦点を当てます。

に 、通常、2つの異なるタイプのユースケースがあります。 、および 問題。混同行列は、分類モデルの精度を計算するのに役立ちます。これは、分類モデルのパフォーマンスを間接的に説明するのに役立ちます。これは、モデルの評価に関して最も重要なステップです。この記事では、次のトピックについて説明します。

1.混同行列とは何ですか?





2.混同行列の精度と構成要素

3.適合率、再現率、F-Measure



4.PythonとSklearnを使用して混同行列を作成する

混同行列とは何ですか?

混同行列は、分類問題のユースケースにおける予測結果と実際の結果の比較要約です。比較の要約は、いくつかのトレーニングデータでトレーニングされた後のモデルのパフォーマンスを判断するために非常に必要です。 Accuracy-Confusion-Matrix二項分類のユースケースの場合、混同行列は次のような2×2行列です。
予測されるクラス1の値 EG:1 予測されるクラス2の値 EG:0
実際のクラス1の値

クラス__init__python

EG:1

TP(トゥルーポジティブ) FN(False Negative)
実際のクラス2の値



EG:0

FP(偽陽性) TN(トゥルーネガティブ)

上の図から:
我々は持っています、

  • 実際のクラス1値= 1。これは、バイナリ結果の正の値に類似しています。
  • 実際のクラス2値= 0。これは、バイナリ結果の負の値に似ています。

混同行列の左側のインデックスは基本的に実際の値を示し、上の列は予測値を示します。

混同行列を作成するときに存在するさまざまなコンポーネントがあります。コンポーネントは以下に記載されています

ポジティブ(P): 予測結果はポジティブです(例:画像は猫です)

負(N): 予測結果はネガティブです(例:画像は猫ではありません)

真陽性(TP): ここで、TPは基本的に予測値を示し、実際の値は1(True)です。

真のネガティブ(TN): ここで、TNは予測値を示し、実際の値は0(False)です。

偽陰性(FN): ここで、FNは、予測値が0(負)で実際の値が1であることを示しています。ここでは、両方の値が一致していません。したがって、それは偽陰性です。

誤検知(FP): ここで、FPは、予測値が1(正)で実際の値が0であることを示しています。ここでも、両方の値が一致していません。したがって、それは偽陽性です。

混同行列の精度と構成要素

混同行列が作成され、すべてのコンポーネント値が決定されると、精度の計算が非常に簡単になります。それでは、これをよりよく理解するためにコンポーネントを見てみましょう。
  • 分類精度

上記の式から、TP(True Positive)とTN(True Negative)の合計が正しい予測結果になります。したがって、パーセンテージで精度を計算するために、他のすべてのコンポーネントで除算します。ただし、精度には問題があり、完全に信頼することはできません。

データセットが完全に不均衡であると考えてみましょう。このシナリオでは、98%の精度は、問題の説明に基づいて良い場合と悪い場合があります。したがって、計算の精度を確認するのに役立ついくつかの重要な用語があります。条件は以下のとおりです。

  • TPR(真陽性率)または感度:

感度としても知られている真陽性率は、(TP + FN)で示される実際の陽性の合計に対する真陽性のパーセンテージを測定します。

予測されるクラス1の値 EG:1 予測されるクラス2の値 EG:0 合計
実際のクラス1の値

EG:1

TP(トゥルーポジティブ) FN(False Negative) 合計実績ポジティブ
実際のクラス2の値

Javaプログラムの構造

EG:0

FP(偽陽性)TN(トゥルーネガティブ)実際のネガティブの合計
TPR = True Positive /(True Positive + False Negative
  • TNR(真の負の率)または特異度:

真のネガティブ率または特異度は、ネガティブの合計に対する実際のネガティブの割合を測定します

予測されるクラス1の値 EG:1 予測されるクラス2の値 EG:0 合計
実際のクラス1の値

EG:1

TP(トゥルーポジティブ)FN(False Negative)合計実績ポジティブ
実際のクラス2の値

EG:0

FP(偽陽性) TN(トゥルーネガティブ) 実際のネガティブの合計

TNR = True Negative /(True Negative + False Positive)

  • 偽陽性率(FPR):

偽陽性率は、予測された陽性結果の総数(TP + FP)に対する予測された偽陽性(FP)のパーセンテージです。

予測されるクラス1の値 EG:1 予測されるクラス2の値 EG:0
実際のクラス1値EG:1 TP(トゥルーポジティブ) FN(False Negative)
実際のクラス2値EG:0 FP(偽陽性) TN(トゥルーネガティブ)
予測された正の合計 予測されたネガティブの合計
FPR =偽陽性/(真陽性+偽陽性)
  • 偽陰性率(FNR):

False Negative Rateは、Predicted Negative Results(TN + FN)の総数に対するPredicted False Negative(FP)のパーセンテージです。

予測されるクラス1の値 EG:1 予測されるクラス2の値 EG:0
実際のクラス1値EG:1TP(トゥルーポジティブ) FN(False Negative)
実際のクラス2値EG:0FP(偽陽性) TN(トゥルーネガティブ)
予測された正の合計 予測されたネガティブの合計
FNR = False Negative /(False Negative + True Negative)

適合率、再現率、およびFメジャー

  • 想起:

リコールは真陽性率に似ており、すべての正の値に対する正しく予測された正の値(TP)の総数の比率です。

  • 精度:

精度は基本的に、モデルが正であると予測したすべてのポイントと、それらの何パーセントが実際に正であるかを示します。

適合率と再現率は、上記の式から示されるように、ポジティブクラスに焦点を当てたメトリックの結果です。

  • F-メジャー

したがって、F-Measureは、適合率と再現率の両方の手法を組み合わせた手法であり、通常の算術平均の代わりに調和平均を使用します。これにより、極値が罰せられます。 FメジャーはF1スコアとも呼ばれ、次の式で与えられます。

例を考えて、精度、適合率、再現率、およびF1スコアを計算する方法を見てみましょう。

N = 165 予測はい 予測NO
実際のはい TP = 150 FN = 10
現在のNO FP = 20 TN = 100
    • 精度=(TP + TN)/(TP + TN + FP + FN) =(150 + 100)/(150 + 100 + 20 + 10)= 0.89
    • リコール= TP /(TP + FN) = 150 /(150 + 10)= 0.93
    • 精度:TP /(TP + FP) = 150 /(150 + 20)= 0.88

  • Fメジャー=(2 *再現率*適合率)/(再現率+適合率) =(2 * 0.93 * 0.88)/(0.93 + 0.88)= 0.90

PythonとSklearnを使用した混同行列の作成

ここで、Pythonとsklearnライブラリを使用して混同行列を作成する方法の例を示します。

1。 最初に、以下に示すように、実際のデータと予測されたデータのリストを作成して、精度を確認します。

#混同行列を作成するためのPythonスクリプト。 actual_data = [1、1、0、1、0、0、1、0、0、0、1,0、1] Forecasted_data = [0、1、1、1、0、0、1、0、1 0,1,0,1]

2.2。 以下に示すように、sklearnライブラリから混同行列をインポートする必要があります。

sklearn.metricsからimportconfusion_matrix

3.3。 次に、以下に示すように混同行列を作成します。

final_results = confusion_matrix(actual_data、predicted_data)

四。 これで、次に示すようにライブラリをインポートして、精度を計算できます。

sklearn.metricsからインポートaccuracy_scoreaccuracy = accuracy_score(actual_data、predicted_data)

5.5。 最後に、以下に示すようにF1スコアまたはFメジャーを計算します。

sklearn.metricsからimportclassification_reportreport = Classification_report(actual_data、predicted_data)

以下は完全なコードです:

セレンWebドライバーのデータ駆動型フレームワーク
actual_data = [1、1、0、1、0、0、1、0、0、0、1,0、1] Forecasted_data = [0、1、1、1、0、0、1、0、1 0,1,0,1] fromsklearn.metricsインポートconfusion_matrixfinal_results = confusion_matrix(actual_data、predicted_data)print(final_results)fromsklearn.metricsインポートaccuracy_scoreaccuracy = accuracy_score(actual_data、predicted_data)fromsklearn.metricsインポートclassification_reportreport = classification_report actual_data、predicted_data)print(accuracy)print(report)

matrix

以上で、この記事は終わりです。混同行列に関するすべての混乱が解決されたことを願っています。

エドゥレカの 回帰、クラスタリング、決定木、ランダムフォレスト、ナイーブベイズ、Qラーニングなどのさまざまな機械学習アルゴリズムの専門知識を習得するのに役立ちます。 Pythonトレーニングを使用したこの機械学習では、統計、時系列、および教師あり、教師なし、強化アルゴリズムなどのさまざまなクラスの機械学習アルゴリズムの概念を紹介します。データサイエンス認定コース全体を通じて、メディア、ヘルスケア、ソーシャルメディア、航空、人事に関する実際のケーススタディを解決します。