Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- tolerated
- vfr video
- PytestPluginManager
- 코루틴 컨텍스트
- 달인막창
- 개성국밥
- JanusGateway
- 자원부족
- gitflow-shFlags
- kotlin
- addhooks
- mp4fpsmod
- JanusWebRTCGateway
- RouteLocator
- taint
- 깡돼후
- PersistenceContext
- table not found
- JanusWebRTC
- 코루틴 빌더
- python
- Spring Batch
- JanusWebRTCServer
- 겨울 부산
- VARCHAR (1)
- ErrorResponse
- Value too long for column
- terminal
- pytest
- preemption #
Archives
너와 나의 스토리
[Data Mining] Ch4. Classification: Basic concepts, Decision trees, and Model evaluation (3) 본문
Data Analysis/Data Mining
[Data Mining] Ch4. Classification: Basic concepts, Decision trees, and Model evaluation (3)
노는게제일좋아! 2020. 4. 15. 19:50반응형
Model 평가: 어떻게 performance를 신뢰성 있게 추정할 것인가?
- 모델의 performance는 알고리즘 외에도 여러 요소에 의해 결정된다.
- 클래스들에 속하는 데이터들의 분포
- 잘못 분류한 것에 대한 비용 -> 케이스마다 다름
- 트레이닝 or 테스트 데이터 셋의 크기(비율)
Learning Curve
- 샘플 사이즈가 클수록 정확도가 높아짐
- Learning curve를 보면서 어느 정도의 샘플 사이즈가 적절한지 판단 가능
추정 방법
- Holdout
- 우리가 가지고 있는 데이터의 2/3를 트레이닝 데이터로, 1/3을 테스트 데이터로 사용하는 방법
- Random subsampling
- holdout을 반복하는 방법
- Cross validation
- 데이터를 k개의 서브셋으로 파티션 -> 각 서브셋에 여러 개의 데이터가 존재
- k-fold: k-1개의 셋을 가지고 트레이닝하고 나머지 한 개로 테스트함 ex) {1,2,3,4} {5}
- 즉, k가지 경우의 수가 있음
- leave-one-out: k=n
- 가지고 있는 데이터가 극히 작을 때 사용
- 각 서브셋에 한 개의 데이터만 존재
- Stratified sampling(계층적 샘플링)
- 랜덤 샘플링의 경우, 밀도가 낮은 곳에서는 적게, 밀도가 높은 곳에서는 많이 뽑히게 된다.
- 이 경우, 지역마다의 대표성에 문제가 생길 수 있다.
- oversampling vs undersampling
- 밀도가 높은 곳에서는 적게 뽑고(undersampling), 밀도가 낮은 곳에서는 많이 뽑는다(oversampling)
- 지역적인 특징 반영 가능
- 랜덤 샘플링의 경우, 밀도가 낮은 곳에서는 적게, 밀도가 높은 곳에서는 많이 뽑히게 된다.
- Bootstrap
- sampling with replacement
- 샘플링하고 그 데이터를 다시 모집단에 넣음. 다음에 또 같은 값을 뽑을 수도 있게 됨.
- sampling with replacement
모델 비교 방법
ROC (Receiver Operating Characteristic): 이진 분류 시스템의 성능 평가 기법
- noisy 신호를 분석하여 시그널 탐지하는 이론
- positive hits(TP)와 false alarms(FP) 사이의 trade-off를 특징 지음
- 각 분류기의 performance를 ROC curve의 점으로써 나타냄
- 알고리즘의 threshold 변화, 샘플 분포, cost matrix는 점들의 위치를 바꾼다.
ROC Curve
- 1차원 데이터 셋은 2개의 클래스를 포함한다 (positive and negative)
- x>t에 위치한 모든 점을 positive로 분류
- t 이후 빨간 선 부분: TP
- t 이후 파란선 부분: FP
- 오른쪽 그래프에서 가장 이상적인 그래프는, 오른쪽 그림에서 빨간 선 같은 모양
- 가장 안 좋은 그래프는, 오른쪽 그림에서 파란 선같은 모양
ROC 사용해서 모델 비교
- 선 아래 면적으로 비교
- M1과 M2는 아래 면적이 비슷해서 비교하기 힘들다.
How to construct an ROC curve
- x축: FP 비율 = $\frac{FP}{FP+TN}$
- y축: = $\frac{TP}{TP+FN}$
- TRUE: 정답, 제대로 분류했다.
- Positive / Negative: positive 또는 negative로 분류했다.
- TP: positive라고 분류했으며 맞다!
- 예, Threshold가 0.95라면, 이 값을 포함한 오른쪽 범위는 모두 positive로 분류, 왼쪽은 모두 negative로 분류
- 그렇다면 실제 class가 -(negative)인 것들은 TN가 됨. (정답이 negative인데 negative로 골랐으니까) -> 5개
- 반대로 실제 class가 +(positive)인 것들은 FP가 됨 => 0개
- X축: FPR = $\frac{\sum{False Positive}}{\sum{정답이 false인 개수}}$
- Y축: TPR = $\frac{\sum{True Positive}}{\sum{정답이 true인 개수}}$
- 예,
- Threshold가 0.25일 때,
- FPR = 5/5 =1, FPR = 5/5 =1 -> (FPR,TPR)=(1,1)
- Threshold가 0.43일 때,
- FPR = 4/4 =1, TPR = 5/6 = 0.83 (FPR,TPR)=(1,0.83)
- Threshold가 0.25일 때,
반응형
'Data Analysis > Data Mining' 카테고리의 다른 글
Comments