ROCAUC 평가 방법에 대한 알기 쉬운 설명


안녕하세요.저는 LinkX 주식회사의 ito입니다.
이상 검출 시리즈로 (4)까지 소개했지만 심도 있는 학습을 이용한 이상 검출을 소개하고자 합니다.논문 등에서 제시된 알고리즘은 일반적으로 ROCAUC를 기준으로 데이터 집합을 평가한다.그래서 저는 이 블로그에서 깊이 공부하기 전의 ROCAUC를 소개하고 싶습니다.
ROCAUC에 대한 알기 쉬운 설명을 담은 웹페이지 글도 많지만, 대부분 확률 분포의 함수와 그 면적을 통해 설명한다.그래프를 잘 상상하는 사람에게는 이해하기 쉬운 설명이지만, 그래프를 잘 상상하지 못하는 사람에게는 좀 번거로울 수 있다.
따라서 본 블로그는 분포 함수의 그림을 사용하지 않고'단순한 그림 그리기'로 ROCAUC를 설명합니다.나는 이 방법이 도표에 서투른 사람도 직관적으로 이해하기 쉽다고 생각한다.꼭 읽어주세요.
※ 이 블로그는 회사 생각이 아니라 제 개인적인 설명입니다.제 생각에 잘못된 해석과 기술이 있다면 지적해 주십시오.
과거의 이상 검출 블로그가 여기 있습니다.
  • 이상 검출(1)확률 분포로 인한 기본 이상 검출
  • 이상 검출(2)가령 고스 분포의 이상 검출, 조개 T2 방법을 가정하다
  • 이상 검출(3)데이터 편리 고스 분포도 사용 가능, k 부근법
  • 이상검측(4)시간 서열신호의 변화검측, 특이 스펙트럼법 등

  • ROCAUC 평가 방법에 대한 알기 쉬운 설명<-----이 블로그

  • 심층 이상 검출(1) 고스시안-AD;학습 시간이 거의 없는 고성능 이상 검출 알고리즘
  • 1. 이상 검출 알고리즘


    이상 검출 알고리즘의 작업은 '입력 데이터에 대한 이상도 출력' 이다.정상적인 데이터에 대해서는 이상도가 작고 이상한 데이터에 대해서는 이상도가 큰 출력이 이상적이다.이상도에 대해서는 "이상 검출(1)"에도 설명되어 있으니 참조하십시오.
    이 이상 검출 알고리즘의 성능을 정량적으로 평가하기 위해 정상과 이상 샘플이 혼합된 테스트 데이터를 준비한다.
    모든 테스트 데이터에 대해 알고리즘은 이상도를 계산할 것이다.물론 테스트 데이터의 라벨이 표시되지 않습니다. (정상인지 이상인지)

    모든 샘플에 대한 이상도 계산이 끝난 후 이상도에 따라 아래 그림과 같이 샘플을 배열한다.여기에도 정상과 이상 라벨이 표시됩니다.

    이 알고리즘을 운용할 때 보기 좋은 곳에 한도값을 설정하고 입력 데이터의 이상값이 한도값보다 낮으면'정상', 높으면'이상'으로 판정한다.

    따라서 정상과 이상 샘플이 완전히 좌우 두 부분으로 나뉘면 이 기간에 한도값을 설정하면 100점의 이상을 판정할 수 있다.다음 그림의 알고리즘 A입니다.
    그러나 실제로는 그렇지 않다. 알고리즘 B와 알고리즘 C처럼 한가운데 부근에 정상적이고 이상한 샘플이 섞여 들어간다.이런 혼합 정도가 많을수록 이상 검출의 성능은 떨어진다.

    예외 탐지의 관점에서 이러한 혼합의 양을 나타내는 것은 ROCAUC입니다.
    따라서 필요한 개념으로 TPR과 FPR을 설명한다.

    2. 정답 비율, TPR(True Positive Rate)


    이상을 검출하는 데 가장 중요한 것은'얼마나 많은 이상을 정확하게 검출할 수 있는지'라는'정답의 비율'이다.
    다음 그림의 샘플(원)에서 색상은 "레이블"을 나타냅니다.'황록'은'진짜 정상','핑크'는'진짜 이상'이다.
    샘플 테두리의 색은 알고리즘 판정의 결과를 나타낸다.'녹색 테두리'는'정상 판정','빨간 테두리'는'이상 판정'이라는 뜻이다.샘플의 위치가 한도값 왼쪽이면 가장자리가 녹색이고 오른쪽이면 가장자리가 빨간색이다.

    """정답의 비율""은 위의 그림과 같이 TPR이라고 하며 다음과 같이 정의할 수 있습니다."
    TPR = 이상 샘플(핑크)에서 이상으로 판정된 비율
    TPR은'True Positive Rate'의 약자로 일본어에서는 진짜 양성률이다.응, 정말 귀찮은 이름이군.'양성(Positive)'은 질병 등을 검사하는 데 쓰이는 용어로, 질병으로 판정된 것은'양성(Positive)'이다.양성(Positive)은 예외 검사에서 말하는 예외에 해당합니다.
    TPR은'정확(True) 이상(Positive)이 감지되는 비율(Rate)'이라는 뜻이다.이상 검출 알고리즘의 성능은 TPR이 클수록 좋습니다.

    3. 오류 배율, FPR(False Positive Rate)


    이상 검출 알고리즘은 이상을 놓치지 않는 것이 중요하지만'정상적이지만 이상으로 판정되는 오류 비율'은 최대한 줄여야 한다.이것도 이상을 검출하는 중요한 지표이다. 아래 그림과 같다.

    총괄적으로 말하면'잘못된 비율'은
    FPR = 일반 샘플(황록) 중 이상 및 오류 판정 비율
    를 참고하십시오.
    FPR은'False Positive Rate'의 약자로 일본어로 가짜 양성률이다.FPR은 오류(Flashe) 이상(Positive) 및 검출된 비율(Rate)이라는 뜻이다.이상 검출 알고리즘의 성능은 FPR이 작을수록 좋다.

    4. 모든 임계값을 기준으로 ROC 커브 및 ROCAUC 평가


    TPR 및 FPR 값은 임계값에 따라 달라집니다.
    TPR은 가급적 1에 가까운 것이 좋지만, TPR이 1에 가까운 임계값으로 이동하면 FPR도 증가한다.
    "모든 임계값에 대해 TPR과 FPR의 그룹 값을 그래프로 그립니다"이후의 ROC 커브는 이러한 관계성을 한눈에 알 수 있습니다.다음 그림에서 보듯이 임계값을 (1)에서 (7)로 바꿀 때의 FPR과 TPR을 계산하고 이 값을 좌표로 그리면 ROC 곡선이 완성된다.

    그리고 이'ROC 곡선 아래쪽 면적'을 ROCAUC(AUC;Area under the curve)라고 하는데 이상 검출 알고리즘 성능의 지표다.
    알고리즘의 성능이 향상될수록 ROCAUC 값이 커집니다.위의 3가지 알고리즘에 대해 ROC 곡선을 만들고 ROCAUC를 계산한 그림은 다음과 같습니다.

    최고 알고리즘 A의 ROC 곡선은 왼쪽 상단의 FPR = 0, TPR = 1의 점을 통과하는 선이고 ROCAUC는 가장 높은 1.00이다.다른 한편, 정상과 이상 라벨을 혼합한 알고리즘 C의 ROCAUC는 1.00보다 훨씬 작고 값은 0.64이다.
    테스트 데이터가 충분하면 완전 무작위 값의 알고리즘인 ROC 곡선은 왼쪽 하단의 FPR = 0, TPR = 0의 점에서 시작하여 오른쪽 상단의 FPR = 1, TPR = 1의 점의 대각선으로 바뀐다. 이때 ROCAUC는 0.5이다.
    실제 계산하면 ROCAUC가 0.5보다 작아진다?!이런 경우가 있을 수 있지만 이 경우 태그가 거꾸로 됐는지, 프로그램에 오류가 없었는지 등을 의심하는 것이 좋다.
    ROCAUC에 대한 설명입니다.이처럼 ROCAUC는 임계값과 무관한 지표이기 때문에 매우 편리하다.

    5. 파이톤을 통해 ROC 곡선의 그리기와 ROCAUC 계산


    파이톤에서 sklearn 프로그램 라이브러리를 사용하면 ROC 곡선을 간단하게 그리고 AUC를 계산할 수 있습니다.
    다음은 구상google colaboratory의 설치입니다.
    먼저 차트를 그리는 데 사용할 matplotlib.pyplot 가져오기
    ROC 커브 및 ROCAUC를 위해 sklearn.metrics에서 roc_curveroc_auc_score를 가져옵니다.
    cell1
    import matplotlib.pyplot as plt
    from sklearn.metrics import roc_curve
    from sklearn.metrics import roc_auc_score
    
    목록 (numby.arry) 으로 데이터를 준비할 수 있습니다.
    cell2
    labels = [  0,   0,   0,   1,   0,   1,   0,   1,   1,   1]  # 0:正常, 1:異常
    scores = [ 40,  60, 120, 170, 240, 280, 310, 360, 410, 460]  # 異常値
    
    FPR 및 TPR, ROCAUC 값은 다음과 같습니다.
    cell3
    fpr, tpr, th = roc_curve(labels, scores) # FPR, TPRの計算 (A)
    rocauc = roc_auc_score(labels, scores)   # ROCAUCの計算 (B)
    
    일반적으로 ROC 커브를 그리는 데 사용됩니다plt.plot().
    cell4
    plt.figure(figsize=(5, 5))
    plt.plot(fpr, tpr, '-o')
    plt.xlabel('FPR')
    plt.ylabel('TPR')
    plt.title(f'ROCAUC {rocauc:.3f}')
    plt.grid()
    plt.show()
    
    
    cell4의 실행 결과

    6.마지막


    끝까지 읽어주셔서 감사합니다.
    다음은 이 ROCAUC로 딥러닝을 이용한 이상 탐지를 소개하고자 합니다.
    잘 부탁드립니다.
    2021/8/18K.T씨로부터 ROCAUC의 최저치에 대한 평론을 얻어 본고에 반영되었다.감사합니다.다시 한 번 제 문제를 지적해 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기