Main Content

average

다중클래스 문제에서 평균 ROC(수신자 조작 특성) 곡선에 대한 성능 메트릭 계산

R2022a 이후

    설명

    예제

    [FPR,TPR,Thresholds,AUC] = average(rocObj,type)type에 지정된 평균화 방법을 사용하여 다중클래스 분류 문제에 대해 rocmetrics 객체 rocObj에 저장된 성능 메트릭의 평균을 계산합니다. 이 함수는 Thresholds의 각 임계값에 대해 평균 거짓양성률(FPR)과 평균 참양성률(TPR)을 반환합니다. 또한 FPRTPR로 구성된 ROC 곡선 아래 면적인 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, AUC 값을 포함한 평균 성능 메트릭 값을 계산합니다.

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

    평균 ROC 곡선을 플로팅하고 평균 AUC 값을 표시합니다. 원점 (0,0)에서 곡선이 시작하도록 (0,0)을 포함합니다.

    plot([0;FPR],[0;TPR])
    xlabel("False Positive Rate")
    ylabel("True Positive Rate")
    title("Average ROC Curve")
    hold on
    plot([0,1],[0,1],"k--")
    legend(join(["Macro-average (AUC =",AUC,")"]), ...
        Location="southeast")
    axis padded
    hold off

    또는 plot 함수를 사용하여 평균 ROC 곡선을 만들 수 있습니다. 매크로 평균화 방법을 사용하여 평균 ROC 곡선에 대한 메트릭을 계산하려면 AverageROCType="macro"을 지정하십시오.

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

    입력 인수

    모두 축소

    분류 성능을 평가하는 객체로, rocmetrics 객체로 지정됩니다.

    평균화 방법으로, "micro", "macro" 또는 "weighted"로 지정됩니다.

    • "micro"(마이크로 평균화) — average 함수가 모든 일대다(OVA) 이진 분류 문제를 하나의 이진 분류 문제로 취급하여 평균 성능 메트릭을 구합니다. 이 함수는 결합된 이진 분류 문제에 대한 혼동행렬 성분을 계산한 다음, 혼동행렬의 값을 사용하여 평균 FPR과 평균 TPR을 계산합니다.

    • "macro"(매크로 평균화) — average 함수가 모든 일대다(OVA) 이진 분류 문제의 값을 평균화하여 FPR과 TPR에 대한 평균값을 계산합니다.

    • "weighted"(가중 매크로 평균화) — average 함수가 매크로 평균화 방법을 사용하고 사전 클래스 확률(rocObjPrior 속성)을 가중치로 사용하여 FPR과 TPR의 가중 평균 값을 계산합니다.

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

    데이터형: char | string

    출력 인수

    모두 축소

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

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

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

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

    세부 정보

    모두 축소

    ROC(수신자 조작 특성) 곡선

    ROC 곡선은 여러 다른 임계값에서 분류 점수의 참양성률 대 거짓양성률을 보여줍니다.

    참양성률과 거짓양성률은 다음과 같이 정의됩니다.

    • 참양성률(TPR, 재현율 또는 민감도라고도 함) — TP/(TP+FN)으로, 여기서 TP는 참양성의 개수이고 FN은 거짓음성의 개수입니다

    • 거짓양성률(FPR, 비적합률 또는 1-특이도라고도 함) — FP/(TN+FP)로, 여기서 FP는 거짓양성의 개수이고 TN은 참음성의 개수입니다

    ROC 곡선의 각 점은 특정 임계값에 대한 TPR 값과 FPR 값의 쌍에 대응됩니다. 임계값을 변경시키면서 TPR 값과 FPR 값의 다양한 쌍을 찾은 다음, 그러한 쌍을 사용하여 ROC 곡선을 만들 수 있습니다. rocmetrics는 각 클래스를 대상으로 모든 고유한 조정된 점수 값을 임계값으로 사용하여 ROC 곡선을 만듭니다.

    다중클래스 분류 문제의 경우, rocmetrics는 각 클래스마다 하나의 이진 문제를 갖도록 일대다(OVA) 이진 분류 문제 세트를 정식화하고, 대응하는 이진 문제를 사용하여 각 클래스에 대한 ROC 곡선을 구합니다. 각 이진 문제는 한 클래스가 양성이고 나머지는 음성이라고 가정합니다.

    이진 분류 문제에서 분류 점수를 행렬로 지정하면, rocmetrics는 2개의 일대다(OVA) 이진 분류 문제를 정식화합니다. 이 문제 각각은 한 클래스를 양성 클래스로, 나머지 클래스를 음성 클래스로 처리하며, rocmetrics는 2개의 ROC 곡선을 구합니다. 두 곡선 중 하나를 사용하여 이진 분류 문제를 평가합니다.

    자세한 내용은 ROC Curve and Performance Metrics 항목을 참조하십시오.

    AUC(ROC 곡선 아래 면적)

    AUC(ROC 곡선 아래 면적)는 FPR = 0부터 FPR = 1까지 범위의 FPR에 대한 ROC 곡선(TPR 값)의 해당합니다.

    AUC는 가능한 모든 임계값에 대해 집계된 성능 측정값을 제공합니다. AUC 값은 0에서 1 사이의 범위에 있으며, AUC 값이 클수록 분류기 성능이 우수함을 나타냅니다.

    일대다(OVA) 코딩 설계

    일대다(OVA) 코딩 설계는 다중클래스 문제를 이진 분류 문제의 집합으로 축소합니다. 이 코딩 설계에서 각 이진 분류는 한 클래스를 양성으로 처리하고 나머지 클래스는 음성으로 처리합니다. rocmetrics는 다중클래스 분류에 OVA 코딩 설계를 사용하며, 각 클래스에 대해 해당 클래스를 양성으로 처리하는 이진 분류를 사용하여 분류 성능을 평가합니다.

    예를 들어, 3개의 클래스에 대한 OVA 코딩 설계는 다음과 같이 3개의 이진 분류를 정식화합니다.

    Binary 1Binary 2Binary 3Class 1111Class 2111Class 3111

    각 행이 하나의 클래스에 대응하며 각 열이 하나의 이진 분류 문제에 해당합니다. 첫 번째 이진 분류는 클래스 1이 양성 클래스이고 나머지 클래스는 음성이라고 가정합니다. rocmetrics는 첫 번째 이진 분류 문제를 사용하여 첫 번째 클래스에 대한 성능을 평가합니다.

    알고리즘

    모두 축소

    다중클래스 분류 문제에서 사용하는 조정된 점수

    Scores를 행렬로 지정하면 rocmetrics는 한 클래스의 분류 점수(rocmetrics의 입력 인수 Scores)를 나머지 클래스에 대한 상대적 점수로 조정합니다. 구체적으로 설명하자면, 어떤 한 관측값에 대한 클래스의 조정된 점수는 이 클래스의 점수와, 나머지 클래스의 점수의 최댓값 사이의 차이입니다.

    예를 들어 3개 클래스에 대한 분류 문제에서 Scores 행이 [s1,s2,s3]이라면, 조정된 점수 값은 [s1-max(s2,s3),s2-max(s1,s3),s3-max(s1,s2)]입니다.

    rocmetrics는 각 클래스에 대해 조정된 점수 값을 사용하여 성능 메트릭을 계산합니다.

    이진 분류 문제에서는 Scores를 2열 행렬 또는 열 벡터로 지정할 수 있습니다. 분류 객체의 predict 함수는 분류 점수를 행렬로 반환하며, 그러면 이를 rocmetrics에 전달할 수 있으므로 2열 행렬을 사용하는 것이 더 간단합니다. 점수를 2열 행렬로 전달하면 rocmetrics는 다중클래스 분류의 점수를 조정하는 것과 동일한 방식으로 점수를 조정하고 두 클래스의 성능 메트릭을 계산합니다. 둘 중 한 클래스에 대한 메트릭 값을 사용하여 이진 분류 문제를 평가할 수 있습니다. 2열 행렬을 전달했을 때 rocmetrics가 반환하는 클래스의 메트릭 값은, 클래스에 대한 분류 점수를 열 벡터로 지정했을 때 rocmetrics가 반환하는 메트릭 값과 동등합니다.

    대체 기능

    • 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에 개발됨