본문 바로가기
Programming/Python

기본 개념 정리 2 (ML)

출처: AI 엔지니어 기초 다지기 : 네이버 부스트캠프 AI Tech 준비과정

돌다리도 다시 두들겨보고 건너는 개념 복습 게시물

 

 

 

 

Overfitting: 전체 데이터 구조 = sample data set인 경우면 좋음. 그런데 이런 경우 거의 없음.

정확도가 train은 좋은데 test가 엉망(음수)인 경우 =  실질 예측성 떨어짐

Underfitting: 정확도가 train은 엉망인데 test가 좋은 경우; 또는 두 점수 모두 너무 낮은 경우 

                       why?) model is too simple!! or data set is too small! -> not trained well

보통 이걸 기준으로 판단한다고 함 ㅇㅇ

 

 

Underfitting 대응법: 더 많은 데이터, 더 많은 feature 반영, variance가 높은 ML 모델 사용 등

 

 

Overfitting 대응법: Regularization(Early stopping, Parameter norm penalty, Data augmentation, Noise robustness, Label somoothing, Dropout, Batch normalization)

 

여기서 밑줄친 4개 기법은 정형데이터에서도 활용이 가능하다.

 

1. Early Stopping

파랑 = train // 핑크 = validation

validation error가 최소지점일 때 stop!

최적의 결과를 찾는 과정 = tradeoff 관계에 있음

 

 

 

 

2. Parameter norm penalty  (L1 = Lasso,  L2 = Ridge)

[왼쪽: L1  // 오른쪽: L2] // 파랑 = penalty 적용한 경우 // 녹색 = penalty 적용 안한 경우(심한 overfitting)

 

 

 

 

3. Data augmentation: 데이터를 의도적으로 증강시켜 모델을 다양한 학습을 유

원본 이미지를 회전 확대 축소해서 이미지 개수를 늘렸다.

의미있는 데이터가 많을 수록 용이하다. 정형데이터는 SMOTE를 사용한다.

 

 

imbalance(불균형 데이터)한 컬럼을 설정하고 그 적은 데이터를 증가시키는 방법이다.

 

 

 

 

4. Dropout: 모든 피쳐를 사용않고 피쳐 일부부만 사용하는 것

 

DL에서는 node의 일부를 끊어버린다.

 

정형데이터에서는 트리모델의 가지치기 개념

 

 

랜덤하게 컬럼을 선택하고 샘플

 

 

 

 

 


Validation strategy

'Test set은 모델 평가 기준이자 전체 데이터와 가장 유사하게 만들어지므로 함부로 변경하지 않는다.

 

 

 

 

Validation set: 내가 만든 model의 성능을 test set 적용 전에 파악하기위해 사용하는 것. 최대한 test set과 유사한 것이 좋다. test set을 알 수 없는 경우 (내일의 주식가격 예측 등), 그에 맞춰서 기존에 가지고 있는 데이터로 잘 구성해야 함

비율 조정(stratify)도 중요 -> stratified split

 

보통 쪼개는 기준은 8:2이지만 경우에 따라 7:3(test를 많이 해야하는 경우), 9:1 하는 경우도 있다.

 

 

Cross validation(K-fold)

 

 

groop개수는 fold개수보다 커야한다.

 

 

 

 

미래데이터로 과거데이터를 예측하면 안되니 순차적 구성

단점: 초반 train data는 부족할 수 있음

 

 

 

Reproducibility(재현성): 매번 random하면 정량평가가 어려우므로 seed를 고정한다. random state 번호 고정이 그 예가 된다.

 

 

 

결국 머신러닝 worlflow는 이와 같다.

 

 

 

728x90
반응형