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 = 3x1 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
は、真陽性、偽陽性、真陰性、および偽陰性の数をそれぞれ表します。
入力引数
rocObj
— 分類性能を評価するオブジェクト
rocmetrics
オブジェクト
分類性能を評価するオブジェクト。rocmetrics
オブジェクトとして指定します。
metrics
— モデルの追加のパフォーマンス メトリクス
文字ベクトル | string 配列 | 関数ハンドル | cell 配列
追加で計算するモデルのパフォーマンス メトリクス。組み込みメトリクスの名前の文字ベクトルまたは 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"
陽性予測値 (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 列の行列に変換されます。詳細については、誤分類コスト行列を参照してください。事前クラス確率 (
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
出力引数
UpdatedROCObj
— 分類性能を評価するオブジェクト
rocmetrics
オブジェクト
分類性能を評価するオブジェクト。rocmetrics
オブジェクトとして返されます。
入力引数 rocObj
を上書きするには、addMetrics
の出力を rocObj
に代入します。
rocObj = addMetrics(rocObj,metrics);
バージョン履歴
R2022a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)