개발자 끄적끄적

분류기 ROC 본문

데이터 마이닝

분류기 ROC

햏치 2023. 3. 21. 13:33

어떤 클래스가 더 중요할 때 많은 경우에 하나의 클래스 멤버들을 찾는 게 더 중요할 수 있다(클래스의 중요성이 불균등한 경우 성능평가)
- 세금 사기
- 신용 부도
- 판촉 행사물에 대한 응답
- 전자 네트워크 침입 감지
- 비행지연 예측
  이러한 경우에, 전체 정확도가 낮아지더라도 좀 더 관심을 갖는 중요한 클래스를 더 잘 찾도록 해주는
  평가 척도가 필요하고, 그러한 척도들의 균형을 맞추는 기준값 설정이 중요


<대안적 정확성 척도>
- 만약 “C1”이 중요한 클래스라면 (C1, C2)
  - 민감도(Sensitivity )= “C1” 클래스가 정확하게 분류될 확률, 즉 중요 집단의 소속 레코드를 정확하게 판별하는 능력=𝑛_1,1∕〖(𝑛_1,1+𝑛_1,2)〗
  - 특이도(Specificity )= “C2” 클래스가 정확하게 분류될 확률 =𝑛_2,2∕〖(𝑛_2,1+𝑛_2,2)〗
  - 가짜 양성율 (False discovery rate 혹은 FDR )= “C1” 예측 중 “C1”이 아닐 확률 =𝑛_2,1∕〖(𝑛_1,1+𝑛_2,1)〗
  - 가짜 음성율(False omission rate 혹은 FOR) = “C2”  예측 중 “C2”가 아닐 확률= =𝑛_1,2∕〖(𝑛_1,2+𝑛_2,2)〗



<ROC 곡선(Receiver Operating Characteristic)>
- 이 곡선의 y축의 변수는 분류 기준값(cutoff, 0~1)에 따라서 계산된 민감도(Sensitivity) 를 나타내며, x축의 변수는 기준값(cutoff)에 따라서 계산된 특이도(Specificity) 를 이용하여 계산된 (1 – 특이도)의 값으로 나타낸다. 
  곡선 아래 면적(AUC:area under curve)이 클 수록 좋은 모형이다. 
  대각선은 랜덤인 경우 기준값에 따른 결과로 민감도=1-특이도이다.
  (민감도=1-기준값, 민감도=P(pred=1|actual=1)=1-기준값, 특이도=P(pred=0|actual=0)=기준값)

  (기준값, 민감도, 특이도), (기준값, 민감도, 1 – 특이도)
  (민감도=1-기준값, 민감도=P(pred=1|actual=1)=1-기준값, 특이도=P(pred=0|actual=0)=기준값)



<분류에서 Lift Chart와 Decile(십분위) Chart>
- 관찰치가 목표집단(관심 있는 중요한 클래스)에 속하는지를 판별하는 분류모형의 성능을 평가하기 위해서
  사용되는 그래프 분석방법
- 예측 변수를 이용하여 구한 관심 있는 클래스에 속할 확률값(Propensity)에 따라
  - 새로운 레코드들이 관심 있는 클래스에 속할 가능성의 순위(랭킹)를 얻는 것이 목적인
  - 분류모형을 선호하는 경우 Lift Chart를 사용하여 성능 평가
  - Cumulative Gains Chart(누적 이득 차트), Decile Lift Chart 라고 한다



<Cumulative Gains Chart, Decile Lift Chart>
- 예를 들어, 다음과 같은 문제의 분류모형의 평가(관심있는 클래스에 속할 확률이 제공된다)
  - 세금 사기를 찾기 위해 조사할 소득신고서 레코드가 어떤 신고서를 얼마나 많이 조사해야 하는가를 결정
  - 채무 불이행을 하지 않을 고객을 대상으로 얼마나 많은 대출이 승인될 것인가
  - 제한된 예산으로 우편물(판촉물)을 보내야 하는 경우 어떤 잠재고객을 어마나 많이 결정해서 메일 판촉물을 보낼 것인가?
- 위 문제들은 관심 있는 클래스에 속할 가능성이 높은 레코드 순(랭크 순위)으로 그 대상을 선택
  - 적은 수의 데이터를 선택하여 상대적으로 많은 수의 응답자를 얻기 위한 방법의 성능 평가 

- 레코드들의 집합을 경향(관심 있는 클래스 "1"에 속할 확률)에 따라 내림차순 정렬

- 분류기의 성능 평가는 분류기 없이 임의로 선택해서 클래스 "1"로 분류하는 것과 성능 비교
  - x축에는 (확률의 내림차순으로)누적된 데이터의 수를 
    y축에는 양성(positive)의 누적 도수를 표시
  - lift(향상) = cumulative actual 1's in n/(np)
    n: # of cases, p=probability for class 1 in random model

- 비교
  - 누적 이득 차트에서는 계단함수와 대각선 비교
  - 십분위 Lift chart에서는 10%마다 클래스 "1"의 비율을 비교
  - 좋은 분류기는 적은 레코드만 처리해도 높은 향상도

- 모델의 분류를 이용해 레코드를 중요한 클래스의 멤버일 확률이 가장 큰 것에서 가장 작은 것으로 내림차순 정리

- 향상 계산
  - "중요한 클래스"에 속한 레코드 갯수를 누적해서 (y축) 현재까지 분류한 레코드의 수(x축)와 비교
  - 랜덤인 경우는 case 한 개 증가할 때마다 #1's/n 씩 증가

- 십분위 차트는 데이터의 십분위 단위에서 실행
  - y축은 십분위 단위 내에서 모델에 의한 중요 클래스로 분류된 레코드 갯수에 대한 모델이 없이(랜덤) 분류했을 때의
    십분위 평균의 비율
 
- 누적 이득 차트는 연속적 누적 결과를 보여준다
  - y축은 분류된 중요 클래스 레코드의 수를 보여준다


<다중 클래스>
- m개의 클래스를 C0, C1, C2, ... , C(m-1)으로 가정할 경우 혼동행렬은 mxm 행렬이다
- 이론적으로, m(m-1)개의 오분류 비용이 존재
- 어떠한 케이스도 m-1개 방식으로 오분류 될 수 있음으로 식제 작업하기에는 매우 복잡
- 비록 의사결정 맥락에서 그러한 복잡성이 드물다고하더라도 보통 하나의 클래스가 주요 관심사
  -> 이진분류로 문제를 변환 가능