メインコンテンツ

average

マルチクラス問題における平均受信者動作特性 (ROC) 曲線のパフォーマンス メトリクスの計算

R2022a 以降

    説明

    [FPR,TPR,Thresholds,AUC] = average(rocObj,type) は、type で指定された平均化方法を使用して、マルチクラス分類用の rocmetrics オブジェクト rocObj に格納されたパフォーマンス メトリクスの平均を計算します。関数は、Thresholds の各しきい値について、平均偽陽性率 (FPR) と平均真陽性率 (TPR) を返します。さらに、FPRTPR で構成される ROC 曲線の下の領域 AUC も返します。

    [avg1,avg2,Thresholds,AUC] = average(rocObj,type,metric1,metric2) は、パフォーマンス メトリクスを計算し、Thresholds (それぞれの平均値の対応するしきい値) と AUC (metric1metric2 で生成される曲線の AUC) に加えて、avg1 (metric1 の平均) と avg2 (metric2 の平均) を返します。 (R2024a 以降)

    averageAUC の出力がサポートされるのは、metric1metric2 が TPR と FPR であるか、それに代わる適合率と再現率である場合だけです。

    • TPR と FPR — TPR は "TruePositiveRate""tpr"、または "recall" を使用して指定し、FPR は "FalsePositiveRate" または "fpr" を使用して指定します。これらの選択により、AUC が ROC 曲線として指定されます。

    • 適合率と再現率 — 適合率は "PositivePredictiveValue""ppv""prec"、または "precision" を使用して指定し、再現率は "TruePositiveRate""tpr"、または "recall" を使用して指定します。これらの選択により、AUC が適合率-再現率曲線の下の領域として指定されます。

    すべて折りたたむ

    rocmetrics オブジェクトを作成してマルチクラス分類問題のパフォーマンス メトリクスを計算し、関数 average を使用してメトリクスの平均値を計算します。average の出力を使用して平均 ROC 曲線をプロットします。

    fisheriris データ セットを読み込みます。行列 meas には、150 種類の花についての測定値が格納されています。ベクトル species には、それぞれの花の種類がリストされています。species には、3 種類の花の名前が格納されています。

    load fisheriris

    観測値を 3 つのラベルのいずれかに分類する分類木に学習させます。10 分割の交差検証をモデルに対して実行します。

    rng("default") % For reproducibility
    Mdl = fitctree(meas,species,Crossval="on");

    検証分割観測値の分類スコアを計算します。

    [~,Scores] = kfoldPredict(Mdl);
    size(Scores)
    ans = 1×2
    
       150     3
    
    

    出力 Scores は、1503 列のサイズの行列です。Scores の列の順序は Mdl.ClassNames に格納されている Mdl のクラスの順序に従います。

    species の真のラベルと Scores の分類スコアを使用して rocmetrics オブジェクトを作成します。Mdl.ClassNames を使用して Scores の列の順序を指定します。

    rocObj = rocmetrics(species,Scores,Mdl.ClassNames);

    rocmetrics により、さまざまなしきい値における FPR と TPR が計算され、各クラスの AUC の値が特定されます。

    マクロ平均法を使用して、さまざまなしきい値における FPR と TPR を含むパフォーマンス メトリクスの平均値を計算します。

    [FPR,TPR,Thresholds,AUC] = average(rocObj,"macro");

    平均 ROC 曲線をプロットし、AUC の平均値を表示します。

    plot(rocObj,AverageCurveType="macro",ClassNames=[])

    Figure contains an axes object. The axes object with title ROC Curve, xlabel False Positive Rate, ylabel True Positive Rate contains 3 objects of type roccurve, scatter, line. These objects represent Macro-average (AUC = 0.9788), Macro-average Model Operating Point.

    すべての ROC 曲線と AUC の値を表示するには、ClassNames 引数を [] に設定しません。

    plot(rocObj,AverageCurveType="macro")

    Figure contains an axes object. The axes object with title ROC Curve, xlabel False Positive Rate, ylabel True Positive Rate contains 9 objects of type roccurve, scatter, line. These objects represent setosa (AUC = 1), setosa Model Operating Point, versicolor (AUC = 0.9636), versicolor Model Operating Point, virginica (AUC = 0.9636), virginica Model Operating Point, Macro-average (AUC = 0.9788), Macro-average Model Operating Point.

    fisheriris データ セットを読み込みます。行列 meas には、150 種類の花についての測定値が格納されています。ベクトル species には、それぞれの花の種類がリストされています。species には、3 種類の花の名前が格納されています。

    観測値を 3 つのラベルのいずれかに分類する分類木に学習させます。

    load fisheriris
    mdl = fitctree(meas,species);

    分類木モデルから rocmetrics オブジェクトを作成します。

    roc = rocmetrics(mdl,meas,species); % Input data meas and response species required

    しきい値と AUC の統計に加えて、再現率と適合率の平均マクロ統計を取得します。

    [avgRecall,avgPrec,thresh,AUC] = average(roc,"macro","recall","precision")
    avgRecall = 9×1
    
             0
        0.6533
        0.9533
        0.9800
        0.9933
        0.9933
        1.0000
        1.0000
        1.0000
    
    
    avgPrec = 9×1
    
           NaN
        1.0000
        0.9929
        0.9811
        0.9560
        0.9203
        0.7804
        0.6462
        0.3333
    
    
    thresh = 9×1
    
        1.0000
        1.0000
        0.9565
        0.3333
       -0.3333
       -0.6667
       -0.9565
       -0.9783
       -1.0000
    
    
    AUC = 
    0.9972
    

    再現率と適合率のメトリクスの ROC 曲線をプロットします。

    plot(roc,AverageCurveType="macro",XAxisMetric="recall",YAxisMetric="precision")

    Figure contains an axes object. The axes object with title Precision-Recall Curve, xlabel Recall (True Positive Rate), ylabel Precision (Positive Predictive Value) contains 4 objects of type roccurve. These objects represent setosa (PR-AUC = 1), versicolor (PR-AUC = 0.9928), virginica (PR-AUC = 0.9873), Macro-average (PR-AUC = 0.9972).

    入力引数

    すべて折りたたむ

    分類性能を評価するオブジェクト。rocmetrics オブジェクトとして指定します。

    平均化方法。"micro""macro"、または "weighted" として指定します。

    • "micro" (マイクロ平均) — average は、1 対他のすべてのバイナリ分類問題を 1 つのバイナリ分類問題として扱うことで平均パフォーマンス メトリクスを求めます。関数は、結合されたバイナリ分類問題の混同行列の成分を計算してから、その混同行列の値を使用して平均メトリクス (名前と値の引数 XAxisMetric および YAxisMetric で指定) を計算します。

    • "macro" (マクロ平均) — average は、1 対他のすべてのバイナリ分類問題の値を平均してメトリクスの平均値を計算します。

    • "weighted" (加重マクロ平均) — average は、マクロ平均法を使用し、事前クラス確率 (rocObjPrior プロパティ) を重みとして使用してメトリクスの加重平均値を計算します。

    アルゴリズムのタイプに応じて、出力引数 (FPRTPR、および Thresholds) のベクトルの長さが決まります。詳細については、パフォーマンス メトリクスの平均を参照してください。

    データ型: char | string

    R2024b 以降

    平均を求めるメトリクスの名前。rocObj.Metrics に含まれる名前、または次の表にリストされた組み込みメトリクスの名前として指定します。

    名前説明
    "TruePositives" または "tp"真陽性の数 (TP)
    "FalseNegatives" または "fn"偽陰性の数 (FN)
    "FalsePositives" または "fp"偽陽性の数 (FP)
    "TrueNegatives" または "tn"真陰性の数 (TN)
    "SumOfTrueAndFalsePositives" または "tp+fp"TP と FP の和
    "RateOfPositivePredictions" または "rpp"陽性予測率 (RPP)、(TP+FP)/(TP+FN+FP+TN)
    "RateOfNegativePredictions" または "rnp"陰性予測率 (RNP)、(TN+FN)/(TP+FN+FP+TN)
    "Accuracy" または "accu"精度、(TP+TN)/(TP+FN+FP+TN)
    "TruePositiveRate""tpr"、または "recall"真陽性率 (TPR) (再現率または感度とも呼ばれる)、TP/(TP+FN)
    "FalseNegativeRate""fnr"、または "miss"偽陰性率 (FNR)、失敗率、FN/(TP+FN)
    "FalsePositiveRate" または "fpr"偽陽性率 (FPR) (フォールアウトまたは 1 - 特異度とも呼ばれる)、FP/(TN+FP)
    "TrueNegativeRate""tnr"、または "spec"真陰性率 (TNR)、特異度、TN/(TN+FP)
    "PositivePredictiveValue""ppv""prec"、または "precision"陽性予測値 (PPV)、適合率、TP/(TP+FP)
    "NegativePredictiveValue" または "npv"陰性予測値 (NPV)、TN/(TN+FN)
    "f1score"F1 スコア、2*TP/(2*TP+FP+FN)
    "ExpectedCost" または "ecost"

    予測コスト、(TP*cost(P|P)+FN*cost(N|P)+FP*cost(P|N)+TN*cost(N|N))/(TP+FN+FP+TN)。ここで、cost[0,cost(N|P);cost(P|N),0] を含む 2 行 2 列の誤分類コスト行列です。cost(N|P) は陽性クラス (P) を陰性クラス (N) として誤分類するコストで、cost(P|N) は陰性クラスを陽性クラスとして誤分類するコストです。

    1 対他の各バイナリ問題について、rocmetrics の名前と値の引数 Cost で指定された KK 列の行列が 2 行 2 列の行列に変換されます。詳細については、誤分類コスト行列を参照してください。

    データ型: char | string

    R2024b 以降

    平均を求めるメトリクスの名前。rocObj.Metrics に含まれる名前、または次の表にリストされた組み込みメトリクスの名前として指定します。

    名前説明
    "TruePositives" または "tp"真陽性の数 (TP)
    "FalseNegatives" または "fn"偽陰性の数 (FN)
    "FalsePositives" または "fp"偽陽性の数 (FP)
    "TrueNegatives" または "tn"真陰性の数 (TN)
    "SumOfTrueAndFalsePositives" または "tp+fp"TP と FP の和
    "RateOfPositivePredictions" または "rpp"陽性予測率 (RPP)、(TP+FP)/(TP+FN+FP+TN)
    "RateOfNegativePredictions" または "rnp"陰性予測率 (RNP)、(TN+FN)/(TP+FN+FP+TN)
    "Accuracy" または "accu"精度、(TP+TN)/(TP+FN+FP+TN)
    "TruePositiveRate""tpr"、または "recall"真陽性率 (TPR) (再現率または感度とも呼ばれる)、TP/(TP+FN)
    "FalseNegativeRate""fnr"、または "miss"偽陰性率 (FNR)、失敗率、FN/(TP+FN)
    "FalsePositiveRate" または "fpr"偽陽性率 (FPR) (フォールアウトまたは 1 - 特異度とも呼ばれる)、FP/(TN+FP)
    "TrueNegativeRate""tnr"、または "spec"真陰性率 (TNR)、特異度、TN/(TN+FP)
    "PositivePredictiveValue""ppv""prec"、または "precision"陽性予測値 (PPV)、適合率、TP/(TP+FP)
    "NegativePredictiveValue" または "npv"陰性予測値 (NPV)、TN/(TN+FN)
    "f1score"F1 スコア、2*TP/(2*TP+FP+FN)
    "ExpectedCost" または "ecost"

    予測コスト、(TP*cost(P|P)+FN*cost(N|P)+FP*cost(P|N)+TN*cost(N|N))/(TP+FN+FP+TN)。ここで、cost[0,cost(N|P);cost(P|N),0] を含む 2 行 2 列の誤分類コスト行列です。cost(N|P) は陽性クラス (P) を陰性クラス (N) として誤分類するコストで、cost(P|N) は陰性クラスを陽性クラスとして誤分類するコストです。

    1 対他の各バイナリ問題について、rocmetrics の名前と値の引数 Cost で指定された KK 列の行列が 2 行 2 列の行列に変換されます。詳細については、誤分類コスト行列を参照してください。

    データ型: char | string

    出力引数

    すべて折りたたむ

    平均偽陽性率。数値ベクトルとして返されます。

    平均真陽性率。数値ベクトルとして返されます。

    関数がパフォーマンス メトリクス (FPRTPR) の各値を求める分類スコアのしきい値。ベクトルとして返されます。

    FPRTPR で構成される平均 ROC 曲線の下の領域。数値スカラーとして返されます。

    R2024b 以降

    metric1 の平均。データに応じて double または single のベクトルとして返されます。

    R2024b 以降

    metric2 の平均。データに応じて double または single のベクトルとして返されます。

    詳細

    すべて折りたたむ

    アルゴリズム

    すべて折りたたむ

    代替機能

    • plot 関数を使用して平均 ROC 曲線を作成できます。関数は、XDataYDataThresholds、および AUC のプロパティを含む ROCCurve オブジェクトを返します。これらのプロパティは、関数 average の出力引数 FPRTPRThresholds、および AUC にそれぞれ対応します。例については、マルチクラス分類器の平均 ROC 曲線のプロットを参照してください。

    参照

    [1] Sebastiani, Fabrizio. "Machine Learning in Automated Text Categorization." ACM Computing Surveys 34, no. 1 (March 2002): 1–47.

    バージョン履歴

    R2022a で導入

    すべて展開する