-
모델 평가와 성능 향상전공 서적/파이썬 라이브러리를 활용한 머신러닝 2018. 8. 6. 19:00
- 교차검증
- 데이터를 여러 번 반복해서 나누고 여러 모델을 학습
- K-겹 교차 검증
- 데이터를 k개의 부분집합으로 나눈 후 그 중 하나만 테스트 세트로 사용
이 작업을 k번 반복 - 다섯 개의 정확도를 얻게 된다.
- 이 정확도의 평균이 모델의 정확도의 기대치가 된다.
- 모델이 훈련에 사용한 폴드에
의존적이거나 데이터셋이 작을 경우
폴드에 따른 정확도의 차이가 크다. - 장점
- 데이터를 무작위로 나눴을 때 테스트 세트에 분류하기 쉬운 샘플만 담기는 경우를
방지할 수 있다. - 모델이 훈련 데이터에 얼마나 민감한지 알 수 있다.
- 단점
- 연산 비용이 k배 늘어난다.
- 계층별 k-겹 교차 검증
- 폴드 안의 클래스 비율이 전체 데이터셋의 클래스 비율과 같도록 데이터를 나눈다.
- 만약 샘플의 90%가 클래스 A
10%가 클래스 B일 경우
계층별 교차 검증은 각 폴드에 클래스 A 샘플이 90%, 클래스 B 샘플이 10%가 되도록
만든다. - 교차 검증 이전에 데이터를 섞는 것으로 이 작업을 대체할 수 있다.
- LOOCV
- 폴드 하나에 샘플 하나만 들어있는 k-겹 교차 검증
- 각 반복에서 하나의 데이터 포인트를 선택 해 테스트 세트로 사용
- 시간이 오래 걸리지만 작은 데이터셋에서는 효과적임
- 임의 분할 교차 검증
- Train_size 만큼의 포인트로 훈련 세트를 만들고, test_size 만큼의
포인트로
테스트 세트를 만들도록 분할한다. - 이 분할은 n_splits 횟수만큼 반복된다.
- 전체 데이터의 일부만 사용할 수 있으므로 대규모 데이터셋으로 작업시 유용하다.
- 그룹별 교차 검증
- 각 분할에서 한 그룹 전체가 훈련 세트, 테스트 세트에 속함
- 그리드 서치
- 관심 있는 매개변수들을 대상으로 가능한 모든 조합을 시도해 보는 방법
- 이 경우 매개변수 조정시 테스트
세트를 사용했기 때문에 모델 평가시에는 사용할 수 없다.
때문에 데이터를 세 개의 세트로 만들어 문제를 해결한다. - 교차 검증을 사용한 그리드 서치
- 데이터를 훈련, 검증, 테스트 세트로 나누는 방법은 데이터를 나누는 방법에 민감하다.
- 일반화 성능을 더 잘 평가하기 위해서 교차 검증을 사용하여 성능을 평가한다.
- 교차 검증 결과 분석
- 교차 검증의 결과를 시각화하면 검색 대상 매개변수가 모델의 일반화에
얼마나 영향을 주는지 알 수 있다. - 그리드 서치는 연산 비용이 매우
크기 때문에
비교적 간격을 넓게 하여 적은 수의 그리드로 시작한 후
교차 검증된 그리드 서치의 결과를 분석하여 검색을 확장해 나가는 것이 좋음 - 중첩 교차 검증
- 그리드 서치를 사용할 때 데이터를 훈련, 테스트로 한 번만 나누기 때문에
결과가 불안정하고 테스트 데이터의 분할에 크게 의존한다. - 중첩 교차 검증에서는 바깥쪽 루프에서 훈련, 테스트 세트로 구성된 폴드를 만든다.
- 각 폴드의 훈련 세트에 대하여 그리드 서치를 실행한다.
- 바깥쪽에서 분할된 테스트 데이터의 점수를 최적의 매개변수 설정을 사용해 각각 측정한다.
- 평가 지표와 측정
- 이진 분류의 평가 지표
- 불균형 데이터셋
- 두 클래스 중 하나가 다른 것보다 훨씬 많은 불균형 데이터 셋에서
거짓 양성, 거짓 음성 같은 오류가 발생할 수 있다. - 만약 샘플의 99%가 음성 1%가 양성일 경우
무조건 음성으로 예측하면 정확도가 99%가 된다. - 정확도로는 좋은 모델과 무조건 음성으로 예측하는 모델을 구분하기가 어렵다.
- 오차 행렬
- 오차 행렬은 이진 분류 평가 결과를 나타낼 때 가장 널리 사용하는 방법 중 하나이다.
- 오차 행렬의 대각 행렬은 정확히
분류된 경우이고,
다른 항목은 한 클래스의 샘플들이 다른 클래스로 잘못 분류된 경우가
얼마나 많은지 알려준다. - 정확도와의 관계
- 정밀도, 재현율, f-점수
- 정밀도 (PPV)
- 정밀도는 양성으로 예측된 것(TF + FP) 중 얼마나 많은 샘플이
진짜 양성(TP)인지를 측정 - 거짓 양성(FP)의 수를 줄이는 것이 목표일 때 성능 지표로 사용한다.
- 재현율 (민감도, 적중률, TPR)
- 전체 양성 샘플(TP + FN) 중 얼마나 많은 샘플이
양성 클래스(TP)로 분류되는지를 측정 - 모든 양성 샘플을 식별해야 할 때 (거짓 음성(FN)을 피하는 것이 중요할 때) 성능 지표로 사용한다.
- 재현율 최적화와 정밀도 최적화는 상충한다.
- F-점수
- 불확실성 고려
- 오차 행렬과 classification_report 함수가 예측 결과를 자세히 분석할 수
있도록 도와준다.
하지만 예측값은 모델에 담긴 많은 정보가 이미 손실된 상태이다. - 대부분의 분류기는 decision_function, predict_proba 메서드를 제공한다.
- 임계값이 0일 때
- 클래스 0의 샘플이 매우 많으므로 분류기는 클래스 0에 초점을 맞추고 있다.
- 임계값을 변경해 클래스 1의 재현율을 높일 수 있다.
- 임계값이 -0.8일 때
- 데이터가 심하게 불균형일 때 결정 함수의 임계값을 바꾸면
더 나은 결과를 쉽게 얻을 수 있다. - 정밀도-재현율 곡선
- 정밀도-재현율 곡선을 사용해 비교하면 임계값에 따른 모델의 성능 차이를 비교할 수 있다.
- 곡선의 아랫 부분 면적을 평균 정밀도라고 한다.
- ROC와 AUC
- ROC 곡선
- 진짜 양성 비율(TPR)에 대한 거짓 양성 비율(FPR)을 나타낸다.
- 곡선 아랫부분 면적을 AUC라고 한다.
- 불균형한 클래스를 분류하는
문제에서 모델을 선택할 때는
정확도보다 AUC가 훨씬 의미 있는 정보를 제공한다. - 다중 분류의 평가 지표
- 다중 분류에서 불균형 데이터셋을 위해 많이 사용하는 평가 지표는 f-점수의 다중 분류 버전이다.
- 한 클래스를 양성으로 두고 나머지 클래스를 음성 클래스로 간주하여 클래스마다 f-점수를 계산한다.
'전공 서적 > 파이썬 라이브러리를 활용한 머신러닝' 카테고리의 다른 글
알고리즘 체인과 파이프라인 (0) 2018.08.06 데이터 표현과 특성 공학 (0) 2018.08.06 비지도학습 (0) 2018.08.06 지도학습 (0) 2018.08.06 댓글