성능측정
위 그래프는 loss 관점에서 보는 underfitting과 overfitting을 보여준다.
- Training loss와 test loss가 함께 감소하는 구간 (underfitting)
- Training loss는 감소하지만, test loss는 증가하는 구간 (overfitting)
우리의 목적은 머신 러닝 모델을 학습시면서 overfitting이 발생하기 직전에 학습을 멈추는 것이다.(early stopping)
이 목적을 달성하기 위해서 머신러닝에서는 validation set을 이용한다.
Validation Dataset
validation dataset은 임의로 추가된 게 아니라 training dataset으로부터 추출된 dataset이다.
위 그림은 validation dataset을 이용한 머신러닝 모델의 학습 과정을 보여준다.
- 주어진 dataset을 training, validation, test dataset으로 나눈다. 비율은 대략적으로 6:2:2로 설정한다.
- Training dataset을 이용하여 모델을 학습시킨다.
- Validation dataset을 이용하여 모델의 정확도 및 validation dataset에 대한 loss를 계산한다.
- 만약 validation loss가 증가했다면 학습을 종료한다. 그렇지 않은 경우에는 2번으로 돌아가서 학습을 반복한다.
- Test dataset을 이용해 모델의 최종 정확도를 평가한다.
기존의 train / test dataset을 통한 학습과의 차이점은 3, 4번 과정이다. 이러한 두 과정을 통해 현재의 모델이 validation dataset을 얼마나 정확히 예측하는지를 평가하고, 이를 학습의 종료 조건(early stopping)으로 이용해 overfitting을 간접적으로 방지한다.
Validation vs Test
처음 머신러닝을 접하면 validation dataset의 개념을 정확히 이해하지 못하거나, validation과 test dataset의 개념을 혼동할 수도 있다. 아래 표는 혼동하기 쉬운 training, validtion, test dataset들의 용도를 요약한 것이다.
Cross-validation을 사용한 정확도 측정
교차 검증은 본고사(test)를 치르기 전에 여러번 모의고사(validation)를 보는 것이라고 비유할 수 있다.
기계학습은 데이터를 기반해서 학습된다. 그리고 그 데이터는 기계학습에 미치는 다양한 요소들을 가지고 있다. 따라서 특정 ML 알고리즘에서만 최적의 성능을 보이도록 데이터를 선별해 학습한다면 결국 실제 데이터 양식과 큰 차이가 이씅ㄹ 것이고 이는 성능 저하로 이어진다.
정리하면 교차검증은 데이터 편중을 막기 위해 별도의 여러 세트로 구성된 학습 데이터 세트와 검증 데이터 세트에서 학습가 평가를 수행하는 것이다.
K 폴드 교차 검증
k폴드 교차검증은 가장 보편적으로 사용되는 교차 검증 기법이다. 먼저 k개의 데이터 폴드 세트를 만들어서 k번만큼 각 폴드 세트에 학습과 검증을 반복적으로 수행한다. 아래 그림은 5fold 교차검증을 수행한다.
이렇게 구한 5개의 예측 평가를 구하면 이 값을 평균해서 K 폴드 평가 결과로 반영한다.
이외에도 test까지도 fold로 돌려가며 진행하는 k-nested cross-validation역시 존재한다.
혼동 행렬 (Confusion Matrix)
혼동행렬은 분류 모델의 성능을 평가하는 지표이다. 지도학습을 통해 모델링한 '분류 모델이 예측한 값'과 레이블되어 있는 '실제 값'간의 관계를 표로 나타낸다. 이 표를 통해 해당 모델의 정확도(accuracy), 정밀도(precision), 민감도(sensitivity), f1 socre등을 파악할 수 있으며, 이 중에서도 특히 정확도를 통해 해당 모델이 정확하게 분류해 낼 수 있는 비율을 확인할 수 있다.
matrix의 요소는 두개의 알파뱃으로 구성되어 있다. 첫 번째 알파벳은 예측값과 실제 값의 동일 여부를 나타낸다. 예측이 올바른 경우에는 T, 그렇지 않은 경우에는 F를 사용한다. 두 번째 알파벳은 모델이 예측한 값을 나타낸다. 모델의 예측값이 참이라면 P, 그렇지 않다면 N으로 표현한다.
혼동행렬로 부터 도출할 수 있는 여러 지표
- 정확도 (accuracy): (TP+TN) / (TP+TN+FP+FN)
- 정밀도 (precision): TP / (TP + FP)
- 민감도,재현율 (recall/sensitivity): TP / (TP + FN)
- F1 score = 2*precision*recall / (precision + recall)
정밀도와 재현율
정밀도
- 모델의 예측값이 얼마나 정확하게 예측됐는가를 나타내는 지표
- '예'라고 예측했을 때의 정답률
재현율
- 실제값 중에서 모델이 검출한 실제값의 비율을 나타내는 지표
- 예를 들어 병을 갖고 있는 사람 중 환자라고 진단한 비율
ROC 곡선
ROC(Receiver Operating Characteristic) curve는 다양한 threshold에 대한 이진분류기의 성능을 한 번에 표시한 것이다. 이진 분류의 성능은 TP와 FP 두 가지를 이용해서 표현하게 된다. (정밀도와 더 연관이 있겠군)
ROC curve가 죄상단에 붙어있을 수록 더 좋은 이진 분류기임을 알 수 있다.
ROC curve를 잘 이해하기 위해선 ROC curve plot에서 보이는 3가지 특성에 대해 파악하는 것이 필요하다
- TP와 FP의 의미
- ROC curve 위의 점이 가지는 의미
- ROC curve의 휜 정도가 가지는 의미
FPR과 TPR은 각각 ROC Curve의 x, y축에 표시되는 값을 의미한다. 여기서 우리는 FPR, TPR에 공통적으로 Positive라는 단어가 있음을 알 수있다. "Positive"의 의미는 classifier가 참이라고 판별했다는 의미이다.
의사가 환자를 암환자를 판단하는 것 역시 이 문제에 해당되며, 이를 그래프로 나타내면 아래와 같은 모습이 나타난다.
FPR와 TPR의 관계
암 진단 여부를 판단하는 의사 A가 있다고 가정해보자. 이 의사 A는 겂이 없고 성격이 급해서 조금만 의심스러워도 암 판정을 내린다. 이 경우에는 어떻게 될까?
실제로 암에 걸린 환자들 모두 암 환자로 판정되면서 TPR은 상당히 높아질 것이다. 동시에 암에 걸리지 않았던 환자들도 암 환자로 판정할 것이다. 즉 FPR 역시 높아질 것이다. 이 상황을 그림으로 표현하면 아래와 같다. 또 이런 경우를 암 환자임을 결정하는 threshold가 낮다고 말할 수 있다.
반면 겂이 많은 의사 B는 모든 환자가 암환자가 아니라고 판단한다. 다시 말해 의사 B는 암이 걸리지 않은 내원자들 뿐만 아니라 실제 암에 걸린 내원자들 역시 정상인으로 판정한다. 따라서 TPR, FPR 모두 낮아지게 된다. 이 상황을 그림으로 나타내면 아래와 같고, 이 경우 Threshold가 높다고 말할 수 있다.
현 위의 점의 의미는 무엇인가
위 논의를 따라가다 보면 threshold의 변화에 따라 FPR과 TPR의 값이 바뀐다는 것을 알 수 있다. 또 한가지는 threshold의 값과 무관하게 FPR와 TPR이 어느정도 비례한다는 사실을 알 수 있다.
다시 ROC Curve로 돌아가서 현 위의 점이 의미하는 것은 threshold에 따른 FPR, TPR을 알아보겠다는 의미를 담고 있다. 즉 이진 분류기의 성능은 변하지 않되, 가능한 모든 threshold별 FPR과 TPR의 비율을 알아내서 plot하겠다는 의미를 담고 있다.
현의 휨 정도가 의미하는 것은 무엇인가
만약 분류기의 성능이 좋다면, 그러니까 클래스를 더 잘 구별할 수 있다면 ROC커브는 좌상단에 더 가까워진다.
'Deep Learning' 카테고리의 다른 글
0206 Vanishing / Exploding Gradient (0) | 2022.04.17 |
---|---|
0203 Logistic Regression (0) | 2022.04.12 |
0202 Regularized Linear Models (0) | 2022.04.12 |
0201 Regression Model (0) | 2022.04.12 |
딥러닝 01::퍼셉트론에서 손실함수 까지 (0) | 2022.03.22 |