04강. cross - validation & K- Fold CV

이찬·2023년 9월 6일
0

새로운 data들에 대해서도 좋은 결과를 내게 하려면?
data가 1000개 있는데, 1000개를 모두 train data로 쓰면 overfitting이 난다.

cross validation

60% train data로 모델 학습
20% validation data 로 모델을 최적화 / 선택 (Tune)
20% test data로 모델을 평가 (tet only, no more tune)

  • validation 과 test의 차이
    validation : 여러 후보 model 중 가장 좋은 결과를 내는 model을 선택하는 과정
    test : 선택한 model의 실제 정확도를 평가하는 것

6:2:2 / 7:3 뿐만 아니라 98:1:1과 같이 쪼개기도 한다. in 딥러닝 , 데이터가 많기에!
1. 100만건의 데이터에서 1%여도 1만건이 넘어감
2. 우리나라의 미취학 아동의 심리발달 200만명을 대상으로 분석을 할 때 과거의 6:2:2에서는 그 중 2000명의 sample을 뽑았음. 그럴 경우에는 2000명을 다 외우면 overfitting이 일어나지만, 딥러닝에서는 2000만중 198만을 외운다면 전체 분포정보가 내재되어 있기에 외워도 된다.

K - Fold Cross Validation : 후보 model 간의 비교 및 선택을 위한 알고리즘

K : 우리가 결정하는 갑쇼 / 보통 '5'나 '10' => 10 - Fold CV

  1. 1번 데이터를 섞음
  2. 80 / 20 으로 나누고 80 가져오기
  3. 80을 10 - Fold로 나누기 시작
  1. 이때 총 n가지의 model 후보군이 있다.

  2. 1번 model로 9개의 train data를 학습 후, validation data로 채점

  3. 이후, 모델을 초기화해서 각각의 validation data를 달리해서 10번의 train, test를 실시함

  4. 10번의 반복 후, 채점 결과를 평균을 내면 그것이 하나의 모델의 성능

  5. 모든 model에 같은 행위를 반복 => 가장 성능이 높은 model 선택

  6. 해당 모델 초기화 => 기존의 10개로 쪼갰던 80%의 data 전체를 학습

  7. 20% data로 채점

  8. 그 결과값이 해당 모델의 학습 결과

(stratified) K - Fold Cross Validation

  • 왜 계층적으로 하는가?
  • 보통은 class 0 과 1이 비슷한 비율로 있음 (5:5 or 6:4)
  • 8:2와 같이 불균형한 data의 경우에 data가 한 쪽으로 몰리는 경우가 생길수도 있다. 10토막을 낼 때 한쪽으로 쏠리는 경우가 있음.
  • 이때 strafied = on을 하면 전체 8 : 2의 비율이 유지된 채로 토막이 난다.

<data 불균형을 없애는 방법>

  • Train data를 많이 확보하거나, feature를 줄이는 것도 좋은 방법
  • data augmentation : 기존 data에 변형을 주어 데이터의 양을 늘림

딥러닝에 쓰이는 알고리즘

  • data augmentation : 증가 (데이터 증강 - 무언가를 강화함, 뻥튀기)

  • if 이미지 data : data에 살짝씩 변화를 줘서 더 많은 이미지로 만듦

딥러닝에서 클래스 불균형을 해소하는 방법!


<undersampling, oversampling>

  • BY SMOTE
profile
Kyunghee univ. IE 21

0개의 댓글

관련 채용 정보