개발자 끄적끄적
분류기 ROC 본문
어떤 클래스가 더 중요할 때 많은 경우에 하나의 클래스 멤버들을 찾는 게 더 중요할 수 있다(클래스의 중요성이 불균등한 경우 성능평가)
- 세금 사기
- 신용 부도
- 판촉 행사물에 대한 응답
- 전자 네트워크 침입 감지
- 비행지연 예측
이러한 경우에, 전체 정확도가 낮아지더라도 좀 더 관심을 갖는 중요한 클래스를 더 잘 찾도록 해주는
평가 척도가 필요하고, 그러한 척도들의 균형을 맞추는 기준값 설정이 중요
<대안적 정확성 척도>
- 만약 “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개 방식으로 오분류 될 수 있음으로 식제 작업하기에는 매우 복잡
- 비록 의사결정 맥락에서 그러한 복잡성이 드물다고하더라도 보통 하나의 클래스가 주요 관심사
-> 이진분류로 문제를 변환 가능
'데이터 마이닝' 카테고리의 다른 글
Collaborative Filtering(콘텐츠 기반 추천) (0) | 2023.04.07 |
---|---|
분류 정오행렬 (0) | 2023.03.20 |
파이썬 기초(if문, elif문, for문, while문, 함수, 모듈(Module), 패키지(Package), 클래스(Class), 생성자) (1) | 2023.03.09 |