주요 콘텐츠

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)는 성능 메트릭을 계산하고 avg1(metric1의 평균)과 avg2(metric2의 평균), 그리고 Thresholds(각 평균값에 대응하는 임계값)와 AUC(metric1metric2에 의해 생성된 곡선의 AUC)를 반환합니다. (R2024a 이후)

    averagemetric1metric2가 TPR과 FPR이거나, 또는 정밀도와 재현율일 때만 AUC 출력을 지원합니다.

    • TPR과 FPR — "TruePositiveRate", "tpr" 또는 "recall"을 사용하여 TPR을 지정하고 "FalsePositiveRate" 또는 "fpr"을 사용하여 FPR을 지정합니다. 이러한 선택 사항은 AUC가 ROC 곡선임을 지정합니다.

    • 정밀도와 재현율 — "PositivePredictiveValue", "ppv", "prec" 또는 "precision"을 사용하여 정밀도를 지정하고 "TruePositiveRate", "tpr" 또는 "recall"을 사용하여 재현율을 지정합니다. 이 선택 사항은 AUC가 정밀도-재현율 곡선 아래 면적임을 나타냅니다.

    예제

    예제

    모두 축소

    rocmetrics 객체를 생성하여 다중클래스 분류 문제에 대한 성능 메트릭을 계산한 다음 average 함수를 사용하여 메트릭에 대한 평균값을 계산합니다. average의 출력값을 사용하여 평균 ROC 곡선을 플로팅합니다.

    fisheriris 데이터 세트를 불러옵니다. 행렬 meas는 150개의 서로 다른 꽃에 대한 꽃 측정치를 포함합니다. 벡터 species는 각 꽃의 종을 나열합니다. species에는 세 종류의 꽃 이름이 포함되어 있습니다.

    load fisheriris

    관측값을 이 세 레이블 중 하나로 분류하는 분류 트리를 훈련시킵니다. 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.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에는 세 종류의 꽃 이름이 포함되어 있습니다.

    관측값을 이 세 레이블 중 하나로 분류하는 분류 트리를 훈련시킵니다.

    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 함수가 모든 일대다(OVA) 이진 분류 문제를 하나의 이진 분류 문제로 취급하여 평균 성능 메트릭을 구합니다. 함수는 결합된 이진 분류 문제에 대한 혼동행렬 성분을 계산한 다음 혼동행렬의 값을 사용하여 평균 메트릭(XAxisMetric 이름-값 인수와 YAxisMetric 이름-값 인수로 지정됨)을 계산합니다.

    • "macro"(매크로 평균화) — average는 모든 일대다(OVA) 이진 분류 문제의 값을 평균화하여 메트릭에 대한 평균값을 계산합니다.

    • "weighted"(가중 매크로 평균화) — average는 매크로 평균화 방법을 사용하고 사전 클래스 확률(rocObjPrior 속성)을 가중치로 사용하여 메트릭에 대한 가중 평균값을 계산합니다.

    이 알고리즘 유형에 따라 출력 인수(FPR, TPR, Thresholds)의 벡터 길이가 결정됩니다. 자세한 내용은 Average of Performance Metrics 항목을 참조하십시오.

    데이터형: 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)은 음성 클래스를 양성 클래스로 오분류하는 데 따른 비용입니다.

    각각의 일대다(OVA) 이진 문제에 대해 rocmetricsCost 이름-값 인수로 지정된 K×K 행렬이 2×2 행렬로 변환됩니다. 자세한 내용은 Misclassification Cost Matrix 항목을 참조하십시오.

    데이터형: 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)은 음성 클래스를 양성 클래스로 오분류하는 데 따른 비용입니다.

    각각의 일대다(OVA) 이진 문제에 대해 rocmetricsCost 이름-값 인수로 지정된 K×K 행렬이 2×2 행렬로 변환됩니다. 자세한 내용은 Misclassification Cost Matrix 항목을 참조하십시오.

    데이터형: char | string

    출력 인수

    모두 축소

    평균 거짓양성률으로, 숫자형 벡터로 반환됩니다.

    평균 참양성률으로, 숫자형 벡터로 반환됩니다.

    함수가 각각의 평균 성능 메트릭 값(FPRTPR)을 구할 때 기준이 되는 분류 점수 임계값으로, 벡터로 반환됩니다.

    FPRTPR로 구성된 평균 ROC 곡선 아래 면적으로, 숫자형 스칼라로 반환됩니다.

    R2024b 이후

    metric1의 평균으로, 데이터에 따라 double형 벡터 또는 single형 벡터로 반환됩니다.

    R2024b 이후

    metric2의 평균으로, 데이터에 따라 double형 벡터 또는 single형 벡터로 반환됩니다.

    세부 정보

    모두 축소

    알고리즘

    모두 축소

    대체 기능

    • plot 함수를 사용하여 평균 ROC 곡선을 만들 수 있습니다. 함수는 XData, YData, Thresholds, AUC 속성을 포함하는 ROCCurve 객체를 반환하며, 해당 속성들은 각각 average 함수의 출력 인수 FPR, TPR, Thresholds, AUC에 대응됩니다. 예제는 Plot Average ROC Curve for Multiclass Classifier 항목을 참조하십시오.

    참고 문헌

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

    버전 내역

    R2022a에 개발됨

    모두 확장