반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

블로그

[머신러닝] #5 Hyperparameter 튜닝 본문

공부/ML

[머신러닝] #5 Hyperparameter 튜닝

beenu 2024. 3. 14. 17:10
반응형

1. Hyperparameter

  • 알고리즘을 사용해 모델링 할 때, 모델 성능을 최적화하기 위해 조절할 수 있는 매개변 
  • 모델의 성능 향상을 위해 최선의 하이퍼파라미터 값을 찾는 다양한 시도를 해야 함
  • KNN
    • k 값(n_neighbors)에 따라 성능이 달라짐
      • 데이터 건수의 제곱근 값으로 설정하는 경우가 종종있음
      • k 값이 가장 클 때(=전체 데이터 개수) 가장 단순한 모델 → 평균, 최빈값
      • k 값이 작을 수록 복잡한 모델이 됨
    • 거리 계산법(metric)에 따라 성능이 달라질 수 있음
  • Decision Tree
    • max_depth
      • 트리의 최대 깊이를 제한
      • 완벽하게 클래스 결정 값이 될 때까지 깊이를 계속 키우며 분할하거나, 노드가 가지는 데이터 개수가 min_samples_split보다 작아질 때까지 계속 깊이를 증가시킴
      • 이 값이 작을수록 모델이 단순해짐
    • min_samples_leaf
      • leaf가 되기 위한 최소한의 샘플 데이터 수
      • 이 값이 클수록 모델이 단순해짐
    • min_samples_split
      • 노드를 분할하기 위한 최소한의 샘플 데이터 수
      • 이 값이 클수록 모델이 단순해짐
    • 위 파라미터 값을 조정해 모델을 단순화 시켜 과대적합 위험을 줄임

 

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
    1. 성능을 테스트할 파라미터 값의 범위를 지정(딕셔너리 형태)
    2. 위 파라미터 값 범위를 모두 사용하는 Grid Search 모델 선언 후 학습
    3. 학습 데이터에 대해 가장 좋은 성능을 보인 파라미터 값으로 자동으로 학습함
    4. 이후 예측 및 평가 과정을 바로 진행하면 됨
  • Random Search
    1. 성능을 테스트할 파라미터 값의 범위를 지정(딕셔너리 형태)
    2. 위 파라미터 값 범위에서 몇 개 선택할 지 정하여 Random Search 모델 선언 후 학습
    3. 학습 데이터에 대해 가장 좋은 성능을 보인 파라미터 값으로 자동으로 학습함
    4. 이후 예측 및 평가 과정을 바로 진행하면 됨
  • Grid Search. Random Search를 사용할 때 내부적인 K-Fold Cross Validation을 위해 cv 값을 지정하므로 실제 수행되는 횟수는 (파라미터 조합 수(RS의 경우 n_iter) * cv 값)이 됨
  • Random Search와 Grid Search를 함께 사용할 수 있음
    • Random Search로 나온 파라미터값 앞 뒤로 개수 지정해서 Grid Search 수행
  • 운영환경에서 성능이 보장되지 않음
    • 과적합 될 수 있음
    • 검증 데이터는 학습 데이터와 다를 수 있음
  •  모델링 목표 : 완벽한 적절한 예측력을 위해 적절한 복잡도의 모델 완성

 

728x90
반응형