[KT] AIVLE SCHOOL 7일차
하이퍼 파라미터(Hyperparameter)
- 알고리즘을 사용해 모델링할 때 모델 성능을 최적화하기 위해 조절할 수 있는 매개변수
- KNN 알고리즘의 n_neighbors, Decision Tree 알고리즘의 max_depth 등
- 튜닝하는 방법에 정답은 없음, 지식과 경험 그리고 다양한 시도로 튜닝
- 모델의 성능 향상을 위해 최선의 하이퍼파라미터 값을 찾는 다양한 시도를 해야 함
- 다양한 시도 방법
- Grid Search
- Random Search
- 사용법
- 함수 불러오기
- 파라미터 값 범위 지정
- 딕셔너리로 값 범위 지정
- 미지정 파라미터 값은 기본값으로 지정
- 리스트 형태 또는 range() 함수 등을 사용해 적절한 step 설정
- 모델 선언
- 기본 모델 선언
- Random Search 모델 선언
- n_iter에 수행 횟수(임의로 선택할 파라미터 조합 수) 지정
- 적절한 cv 값 지정
- 모델 학습
- 기본 모델이 아니라 Ranodm Search 모델 학습
- 모델 학습 과정이 최선의 파라미터 값을 찾는 과정
- 경우에 따라 많은 시간이 소요될 수 있음
- 결과 확인
- 학습 결과를 열어보면 딕셔너리 형태
- 선택된 최선의 파라미터 값과 그때의 성능 확인 가능
- 예측 및 평가
- 최선의 파라미터 값으로 모델이 자동으로 학습된 상태
- 곧 바로 예측 및 평가를 진행할 수 있음
- 사용법
함수 불러오기
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import RandomizedSearchCV
# 파라미터 선언
param = {'n_neighbors': range(1, 500, 10),
'metric': ['euclidean', 'manhattan']}
# 기본모델 선언
knn_model = KNeighborsClassifier()
# Random Search 선언
model = RandomizedSearchCV(knn_model,
param,
cv=3,
n_iter=20)
# 학습하기
model.fit(x_train, y_train)
# 수행 정보
model.cv_results_
# 최적 파라미터
model.best_params_
# 최고 성능
model.best_score_
- Grid Search, Random Search를 사용할 때 내부적인 K-Fold Cross Validation을 위해 cv 값을 지정하므로
- 실제 수행되는 횟수는 파라미터 조합 수 x cv 값이 됨
KNN
- k 값(n_neighbors)에 따라 성능이 달라짐
- 보통 데이터 건수의 제곱근으로 결정하는 경우가 종종 있음
- k 값이 가장 클 때(= 전체 데이터 개수) 가장 단순 모델 -> 평균, 최빈값
- k 값이 작을 수록 복잡한 모델이 됨
Decision Tree
- max_depth
- 트리의 최대 깊이 제한
- 기본값
- 완벽하게 클래스 결정 값이 될 때까지 깊이를 계속 키우며 분할하거나
- 노드가 가지는 데이터 개수가 min_samples_split보다 작아질 때까지 계속 깊이를 증가시킴
- 이 값이 작을 수록 트리 깊이가 제한되어 모델이 단순해 짐
- min_samples_leaf
- leaf가 되기 위한 최소한의 샘플 데이터 수
- 이 값이 클 수록 모델이 단순해 짐
- min_samples_split
- 노드를 분할하기 위한 최소한의 샘플 데이터 수
- 이 값이 클 수록 모델이 단순해 짐
- 위 파라미터 값을 조정해 모델을 단순화 시켜 과대적합 위험을 줄임
'Data Science > 머신러닝' 카테고리의 다른 글
머신러닝 알고리즘 (0) | 2025.04.03 |
---|---|
모델 성능 평가(분류) (0) | 2025.04.03 |
모델 성능 평가(회귀) (0) | 2025.04.03 |
머신러닝 모델링 (0) | 2025.04.03 |