[KT Aivle 3기 AI] 17일차. 머신러닝 (4) Hyperparameter 튜닝
KT Aivle School 3기 AI 17일차
- 강사 : 이장래 강사님
- 주제 : 기본 알고리즘 중 Logistic Regression, SVM과 K-Fold Cross Validation, Hyperparameter 튜닝(Grid Search, Random Search)
- 내용 :
- K-Fold Cross Validation 설명 및 실습
- Hyperparameter 튜닝 방법 설명 (Grid Search, Random Search)
- 모델의 복잡성, 클래스 불균형
K-분할 교차 검증 (K-Fold Cross Validation)
- 모든 데이터가 평가에 한 번, 학습에 k-1번 사용
- k는 2 이상
- K-Fold Cross Validation 실습코드(Diabetes)
Hyperparameter
- 알고리즘을 사용하여 모델링 할 때, 최적화하기 위해 조절할 수 있는 옵션
- 정답은 없음! 다양한 시도가 중요하다. (Grid Search, Random Search)
모델 별 Hyperparameter 예시
KNN
- k 값 (n_neighbors)
- 거리 계산법 (metric)
Decision Tree
- max_depth : 트리의 최대 깊이 제한
- min_samples_leaf : leaf가 되기 위한 최소한의 샘플 데이터 수 (default : 1)
- min_samples_split : 노드를 분할하기 위한 최소한의 샘플 데이터 수(default : 2)
Grid Search & Random Search
- Grid Search : 설정한 범위의 모든 값에 대한 결과 확인
Random Search : 설정한 범위에서 설정한 개수 만큼만 랜덤하게 뽑아서 결과 확인
- → Random Search로 구하고, 그 근처를 Grid Search로 진행 하는 방법
- → Grid Search로 진행 한 후 해당 범위의 중앙에 값이 나오면 쓰고~ 범위 끝 쪽 값으로 나오면 범위를 그 방향으로 늘려서 또 돌려보고~ 하는 방법
→ 최선의 파라미터를 찾도록 다양한 방법 활용
- grid search model 에서
model.cv_results_
속성에 성능 테스트와 관련된 많은 정보가 포함되어있다.model.cv_results_['mean_test_score']
: 테스트로 얻은 성능model.best_params_
: 최적의 파라미터model.best_score_
: 최고의 성능
- Grid Search 실습코드(결정트리, Boston)
- Grid Search 실습코드(결정트리, Mobile)
모델의 복잡성
- 모델이 복잡하다는 것은
- 학습 데이터에 너무 치중한 나머지 실제 평가시 성능이 좋지 않은 것을 의미
- 즉, 과적합 위험이 있는 것을 의미
- Linear Regression : 독립 변수가 많을 수록
- KNN : k값, 즉 n_neighbors 값이 작을 수록
- Decision Tree : max_depth가 클 수록 복잡한 모델이 됨
- 결국 우리는 적절한 복잡성을 갖는 모델을 만들어야 함
- 너무 단순해도 안되고, 너무 복잡해도 안됨
- KNN 복잡도 실습코드
클래스 불균형
- 정답 클래스의 값이 불균형하게 있을 경우 (ex: 0 - 100개, 1 - 10개)
- 1에 대한 recall이 떨어짐. 우리는 1에 대한 recall을 올리고 싶다.
- under sampling : 개수가 많은 데이터를 개수가 적은 데이터의 수에 맞춤 (0 - 10개, 1 - 10개)
- over sampling : 개수가 적은 데이터를 개수가 많은 데이터의 수에 맞춤 (0 - 100개, 1 - 100개)
- class_weight = ‘balanced’ : 모델의 weight를 조절하여 맞춤
- 클래스 불균형 관련 코드
This post is licensed under CC BY 4.0 by the author.