addMetrics
説明
rocmetrics は、偽陽性率 (FPR)、真陽性率 (TPR)、および名前と値の引数 AdditionalMetrics で指定された追加のメトリクスを計算します。rocmetrics オブジェクトを作成した後、関数 addMetrics を使用して分類の追加のパフォーマンス メトリクスを計算できます。
は、UpdatedROCObj = addMetrics(rocObj,metrics)rocmetrics オブジェクト rocObj に格納された分類モデルの情報を使用して、metrics で指定された分類の追加のパフォーマンス メトリクスを計算します。
UpdatedROCObj には、rocObj のすべての情報に加え、addMetrics で計算された追加のパフォーマンス メトリクスが格納されます。関数で計算された追加のメトリクス (metrics) が Metrics プロパティの table に新しい変数として追加されます。
rocObj の作成時に信頼区間を計算した場合、関数 addMetrics で追加の metrics に対する信頼区間が計算されます。Metrics プロパティの新しい変数に、1 列目がメトリクスの値に対応し、2 列目と 3 列目が下限と上限にそれぞれ対応する 3 列の行列が格納されます。
例
rocmetrics オブジェクトを作成する際に、マルチクラス分類問題のパフォーマンス メトリクス (FPR、TPR、および予測コスト) を計算します。追加のメトリクスとして陽性予測値 (PPV) と陰性予測値 (NPV) を計算し、それらをオブジェクトに追加します。
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 は、150 行 3 列のサイズの行列です。Scores の列の順序は Mdl のクラスの順序に従います。Mdl.ClassNames に格納されているクラスの順序を表示します。
Mdl.ClassNames
ans = 3×1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
species の真のラベルと Scores の分類スコアを使用して rocmetrics オブジェクトを作成します。Mdl.ClassNames を使用して Scores の列の順序を指定します。既定では、rocmetrics は FPR と TPR を計算します。AdditionalMetrics="ExpectedCost" を指定して予測コストも計算します。
rocObj = rocmetrics(species,Scores,Mdl.ClassNames, ... AdditionalMetrics="ExpectedCost");
rocObj の Metrics プロパティの table には、3 つのすべてのクラスについてのパフォーマンス メトリクスの値が、クラスの順序に従って垂直方向に連結して格納されます。table から 2 番目のクラスの行を特定して表示します。
idx = strcmp(rocObj.Metrics.ClassName,Mdl.ClassNames(2)); rocObj.Metrics(idx,:)
ans=13×5 table
ClassName Threshold FalsePositiveRate TruePositiveRate ExpectedCost
______________ _________ _________________ ________________ ____________
{'versicolor'} 1 0 0 0.074074
{'versicolor'} 1 0.01 0.7 0.023704
{'versicolor'} 0.95455 0.02 0.8 0.017778
{'versicolor'} 0.91304 0.03 0.9 0.011852
{'versicolor'} -0.2 0.04 0.9 0.013333
{'versicolor'} -0.33333 0.06 0.9 0.016296
{'versicolor'} -0.6 0.08 0.9 0.019259
{'versicolor'} -0.86957 0.12 0.92 0.023704
{'versicolor'} -0.91111 0.16 0.96 0.026667
{'versicolor'} -0.95122 0.31 0.96 0.048889
{'versicolor'} -0.95238 0.38 0.98 0.057778
{'versicolor'} -0.95349 0.44 0.98 0.066667
{'versicolor'} -1 1 1 0.14815
Metrics の table に、クラス名、しきい値、偽陽性率、真陽性率、および予測コスト (追加のメトリクス) の変数が格納されています。
rocmetrics オブジェクトを作成した後、オブジェクトに格納された分類モデルの情報を使用して追加のメトリクスを計算できます。関数 addMetrics を使用して PPV と NPV を計算します。入力引数 rocObj を上書きするには、addMetrics の出力を入力に代入します。
rocObj = addMetrics(rocObj,["PositivePredictiveValue","NegativePredictiveValue"]);
Metrics プロパティを表示します。
rocObj.Metrics(idx,:)
ans=13×7 table
ClassName Threshold FalsePositiveRate TruePositiveRate ExpectedCost PositivePredictiveValue NegativePredictiveValue
______________ _________ _________________ ________________ ____________ _______________________ _______________________
{'versicolor'} 1 0 0 0.074074 NaN 0.66667
{'versicolor'} 1 0.01 0.7 0.023704 0.97222 0.86842
{'versicolor'} 0.95455 0.02 0.8 0.017778 0.95238 0.90741
{'versicolor'} 0.91304 0.03 0.9 0.011852 0.9375 0.95098
{'versicolor'} -0.2 0.04 0.9 0.013333 0.91837 0.9505
{'versicolor'} -0.33333 0.06 0.9 0.016296 0.88235 0.94949
{'versicolor'} -0.6 0.08 0.9 0.019259 0.84906 0.94845
{'versicolor'} -0.86957 0.12 0.92 0.023704 0.7931 0.95652
{'versicolor'} -0.91111 0.16 0.96 0.026667 0.75 0.97674
{'versicolor'} -0.95122 0.31 0.96 0.048889 0.60759 0.97183
{'versicolor'} -0.95238 0.38 0.98 0.057778 0.56322 0.98413
{'versicolor'} -0.95349 0.44 0.98 0.066667 0.52688 0.98246
{'versicolor'} -1 1 1 0.14815 0.33333 NaN
Metrics の table の最後の 2 列に、変数 PositivePredictiveValue と NegativePredictiveValue が指定した順序で追加されています。すべて棄却しきい値 (最大のしきい値) では陽性予測値 (PPV = TP/(TP+FP)) が NaN になり、すべて確定しきい値 (最小のしきい値) では陰性予測値 (NPV = TN/(TN+FN)) が NaN になることに注意してください。TP、FP、TN、および FN は、真陽性、偽陽性、真陰性、および偽陰性の数をそれぞれ表します。
入力引数
分類性能を評価するオブジェクト。rocmetrics オブジェクトとして指定します。
追加で計算するモデルのパフォーマンス メトリクス。組み込みメトリクスの名前の文字ベクトルまたは string スカラー、名前の string 配列、関数ハンドル (@metricName)、または関数ハンドルの cell 配列として指定します。偽陽性率 (FPR) と真陽性率 (TPR) については、ROC 曲線を取得するために rocmetrics オブジェクトで常に計算されます。そのため、FPR と TPR を計算するように指定する必要はありません。
組み込みメトリクス — 文字ベクトルまたは string スカラーを使用して次の組み込みメトリクスの名前を指定します。string 配列を使用して複数指定できます。
名前 説明 "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)"FalseNegativeRate"、"fnr"、または"miss"偽陰性率 (FNR)、失敗率、 FN/(TP+FN)"TrueNegativeRate"、"tnr"、または"spec"真陰性率 (TNR)、特異度、 TN/(TN+FP)"PositivePredictiveValue"、"ppv"、"prec"、または"precision"陽性予測値 (PPV)、適合率、 TP/(TP+FP)"NegativePredictiveValue"または"npv"陰性予測値 (NPV)、 TN/(TN+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で指定されたK行K列の行列が 2 行 2 列の行列に変換されます。詳細については、誤分類コスト行列を参照してください。"f1score"F1 スコア、 2*TP/(2*TP+FP+FN)"all"を指定すると上記のすべてのメトリクスを取得できます。"all"を他のいずれかのメトリクスと組み合わせて指定することはできません。事前クラス確率 (
Prior) とLabelsのクラス数を使用してスケール ベクトルが計算され、このスケール ベクトルに従ってパフォーマンス メトリクスがスケーリングされます。詳細については、パフォーマンス メトリクスを参照してください。カスタム メトリクス — 関数ハンドルを使用してカスタム メトリクスを指定します。パフォーマンス メトリクスを返すカスタム関数は次の形式でなければなりません。
metric = customMetric(C,scale,cost)
出力引数
metricはスカラー値です。カスタム メトリクスは混同行列 (
C)、スケール ベクトル (scale)、およびコスト行列 (cost) の関数です。1 対他の各バイナリ分類について、それらの入力値が特定されます。詳細については、パフォーマンス メトリクスを参照してください。Cは[TP,FN;FP,TN]で構成される2行2列の混同行列です。scaleは2行1列のスケール ベクトルです。costは2行2列の誤分類コスト行列です。
カスタム メトリクスに対する交差検証はサポートされていません。代わりに、
rocmetricsオブジェクトの作成時にブートストラップを使用するように指定できます。
すべて棄却しきい値 (TP = FP = 0) では陽性予測値 (PPV) が NaN になり、すべて確定しきい値 (TN = FN = 0) では陰性予測値 (NPV) が NaN になることに注意してください。詳細については、しきい値、固定のメトリクス、固定のメトリクスの値を参照してください。
例: ["Accuracy","PositivePredictiveValue"]
例: {"Accuracy",@m1,@m2} は、精度のメトリクスとカスタム メトリクス m1 および m2 を追加のメトリクスとして指定します。addMetrics は、カスタム メトリクスの値を CustomMetric1 および CustomMetric2 という名前の変数として Metrics プロパティに格納します。
データ型: char | string | cell | function_handle
出力引数
分類性能を評価するオブジェクト。rocmetrics オブジェクトとして返されます。
入力引数 rocObj を上書きするには、addMetrics の出力を rocObj に代入します。
rocObj = addMetrics(rocObj,metrics);
バージョン履歴
R2022a で導入addmetrics に新しいメトリクスがあります。
"f1score"。F1 スコアを計算します。"precision"。"ppv"および"prec"と同じです。"all"。サポートされているすべてのメトリクスを計算します。"all"を他のいずれかのメトリクスと組み合わせて使用することはできません。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)