블로그
[머신러닝] #5 Hyperparameter 튜닝 본문
반응형
1. Hyperparameter
- 알고리즘을 사용해 모델링 할 때, 모델 성능을 최적화하기 위해 조절할 수 있는 매개변
- 모델의 성능 향상을 위해 최선의 하이퍼파라미터 값을 찾는 다양한 시도를 해야 함
- KNN
- k 값(n_neighbors)에 따라 성능이 달라짐
- 데이터 건수의 제곱근 값으로 설정하는 경우가 종종있음
- k 값이 가장 클 때(=전체 데이터 개수) 가장 단순한 모델 → 평균, 최빈값
- k 값이 작을 수록 복잡한 모델이 됨
- 거리 계산법(metric)에 따라 성능이 달라질 수 있음
- k 값(n_neighbors)에 따라 성능이 달라짐
- Decision Tree
- max_depth
- 트리의 최대 깊이를 제한
- 완벽하게 클래스 결정 값이 될 때까지 깊이를 계속 키우며 분할하거나, 노드가 가지는 데이터 개수가 min_samples_split보다 작아질 때까지 계속 깊이를 증가시킴
- 이 값이 작을수록 모델이 단순해짐
- min_samples_leaf
- leaf가 되기 위한 최소한의 샘플 데이터 수
- 이 값이 클수록 모델이 단순해짐
- min_samples_split
- 노드를 분할하기 위한 최소한의 샘플 데이터 수
- 이 값이 클수록 모델이 단순해짐
- 위 파라미터 값을 조정해 모델을 단순화 시켜 과대적합 위험을 줄임
- max_depth
2. Grid Search, Random Search
# 파라미터 하나의 경우
param = {'n_neighbors': range(1, 101)}
# 파라미터 두 개 경우
param = {'n_neighbors': range(1, 101),
'metric': ['euclidean', 'manhattan']}
# Random Search 함수 불러오기
# 함수 불러오기
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import RandomizedSearchCV
# 기본모델 선언
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 함수 불러오기
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV
# 파라미터 선언
param = {'n_neighbors': range(1, 500, 10), 'metric': ['euclidean', 'manhattan']}
# 기본모델 선언
knn_model = KNeighborsClassifier()
# Grid Search 선언
model = GridSearchCV(knn_model, param, cv=3)
- Grid Search
- 성능을 테스트할 파라미터 값의 범위를 지정(딕셔너리 형태)
- 위 파라미터 값 범위를 모두 사용하는 Grid Search 모델 선언 후 학습
- 학습 데이터에 대해 가장 좋은 성능을 보인 파라미터 값으로 자동으로 학습함
- 이후 예측 및 평가 과정을 바로 진행하면 됨
- Random Search
- 성능을 테스트할 파라미터 값의 범위를 지정(딕셔너리 형태)
- 위 파라미터 값 범위에서 몇 개 선택할 지 정하여 Random Search 모델 선언 후 학습
- 학습 데이터에 대해 가장 좋은 성능을 보인 파라미터 값으로 자동으로 학습함
- 이후 예측 및 평가 과정을 바로 진행하면 됨
- Grid Search. Random Search를 사용할 때 내부적인 K-Fold Cross Validation을 위해 cv 값을 지정하므로 실제 수행되는 횟수는 (파라미터 조합 수(RS의 경우 n_iter) * cv 값)이 됨
- Random Search와 Grid Search를 함께 사용할 수 있음
- Random Search로 나온 파라미터값 앞 뒤로 개수 지정해서 Grid Search 수행
- 운영환경에서 성능이 보장되지 않음
- 과적합 될 수 있음
- 검증 데이터는 학습 데이터와 다를 수 있음
- 모델링 목표 :
완벽한적절한 예측력을 위해 적절한 복잡도의 모델 완성
728x90
반응형
'공부 > ML' 카테고리의 다른 글
[머신러닝] 불균형 클래스 (3) | 2024.03.15 |
---|---|
[머신러닝] #6 앙상블(Ensemble) (2) | 2024.03.15 |
[머신러닝] #4 K-Fold Cross Validation (0) | 2024.03.14 |
[머신러닝] #3 기본 알고리즘 - 1(Linear Regression, K-Nearest Neighbor, Decision Tree, Logistic Regression) (0) | 2024.03.13 |
[머신러닝] #2 성능평가 (0) | 2024.03.12 |