<Stratified K 폴드>
- 불균형한(imbalanced) 분포도를 가진 레이블(결정 클래스) 데이터 집합을 위한 K 폴드 방식
- 불균형한 분포도 : 특정 레이블 값이 특이하게 많거나 매우 적어서 분포가 한쪽으로 치우치는 것
ex. 대출사기데이터가 있음. 데이터 세트는 1억 건이고, 수십 개의 피처와 사기여부 O/X인 종속변수가 있음.
> 이런 경우에는 당연히 대출 사기가 아주아주 적겠지?
> 예를 들어 대출 사기건수가 1억 개중에 약 1000건이 있다고 한다면 0.0001%임.
> 그래서 이걸로 K 폴드로 랜덤하게 학습 및 테스트 세트를 나눈다면 비율이 제대로 나눠지지 않는 경우가 생김
>> 즉, 사기 O 가 한쪽에 쏠릴 수도 있고, 아예 없을 수도 있음
> 하지만 대출 사기를 예측하기 위한 거니까 매우매우매우 중요한 세트라서 제외할 수도 없음.
▶ 이럴 때 원본 데이터와 유사한 대출 사기 레이블 값의 분포를 학습/테스트 세트에도 유지하는 것이 중요함.
▶▶ Stratified K 폴드는 K폴드가 학습/테스트 세트에 제대로 분배하지 못하는 경우의 문제를 해결해줌
▷ 원본 데이터의 레이블 분포를 먼저 고려하고 이 분포와 동일하게 학습/검증 데이터 세트를 분배함
▶ 붓꽃 데이터 세트를 간단하게 준비해봄
▷ 0,1,2 값 모두 50개로 동일함.
▶ 일부러 이슈가 발생하는 현상을 만들기 위해서 3개의 폴드 세트를 KFold로 생성하고, 교차 검증할 때마다
생성되는 학습/검증 레이블 데이터 값의 분포도를 확인해봄
▶ 이렇게 되면 교차 검증할 때마다 학습/검증 레이블이 완전히 다른 값으로 추출됨.
그러니까.. 출력값을 보면 알 수 있듯이 고루 분포가 되어야 하는데 교차검증 1에서는 0만 학습이 되지 않고,
교차검증 2에서는 1만 학습이 되지 않고, 교차검증 3에서는 2만 학습이 되지 않음.
그럼 학습하지 않은 레이블은 예측 정확도가 0이 될 수 밖에 없음.
▷ 이것을 해결해주는 것이 바로 StratifiedKFold
▷▷ KFold 사용법과 비슷한데, 여기는 split 메서드 인자로 피처는 물론 레이블 데이터 세트도 반드시 필요함.
▶ 오오오오 고르게 값의 분포도가 할당되는구만
이렇게 되면 레이블 0,1,2 모두 학습할 수 있고 테스트 할 수 있게 됨.
▶ Stratified K FOld 는 분포도 특성을 반영한 학습/검증 데이터 셋를 만들 수 있으므로 왜곡된 레이블 데이터 세트에서는 반드시 Stratified KFOld를 이용해서 교차 검증해야함.
▶▶일반적으로 분류(Classification)에서의 교차 검증은 Stratified K 폴드 (회귀에서는 지원 xxx)
▷▷▷회귀는 레이블이 연속된 숫자값이기 때문에 결정값별로 분포를 정하는 의미가 없어서.
'머신러닝 > 개념익히기' 카테고리의 다른 글
머신러닝 앙상블 학습, 보팅 배깅 부스팅 (0) | 2023.08.30 |
---|---|
머신러닝 교차검증을 보다 간편하게 해주는, cross_val_score() (0) | 2023.08.22 |
머신러닝 교차검증, K-Fold Cross Validation (1) | 2023.08.06 |
머신러닝 scikit-learn model selection 모듈 (0) | 2023.08.01 |
머신러닝 scikit-learn 주요 모듈 (0) | 2023.07.30 |