오답노트
[ML] HyperParameter Tuning 본문
HyperParameter Tuning
Hyper Parameter를 설정하여 모델을 최적화할 수 있는 알고리즘에서 모델을 최적하기 위한 Hyper Parameter 설정하는 것을 말한다.
Random Search
Random Search 는 값의 범위와 시도 횟수를 정해서, 값의 범위 내에서 시도 횟수만큼 무작위로 값을 선택해서 모델링을 하고, 그 중 가장 성능이 좋은 모델을 선정하는 방법이다.
cv 는 교차검증할 때 데이터 셋을 나눌 개수다.
n_iter는 임의로 시도할 횟수를 지정할 수 있다.
from sklearn.tree import DecisionTreeClassifier, plot_tree
# 값의 범위 설정
params2 = {'max_depth' : range(1,10), 'min_samples_leaf' : range(10,100)}
# 모델 선언
model2 = DecisionTreeClassifier()
model2_rs = RandomizedSearchCV(model2, params2,cv=5,n_iter=5)
# 모델링
model2_rs.fit(x_train_s,y_train)
# 모델 성능
print(model2_rs.best_score_)
# 선택된 hyper parameter
print(model2_rs.best_params_)
Grid Search
Random Search와 다르게 무작위 선택이 아닌 값의 범위를 모두 시도하고 그 중에서 가장 성능이 좋은 모델을 선정하는 방법이다.
model = KNeighborsClassifier()
params = { 'n_neighbors' : range(3,31,2), 'metric' : ['euclidean', 'manhattan'] }
model_gs = GridSearchCV(model, params, cv=5)
print(model_gs.best_params_)
print(model_gs.best_score_)
pred = model_gs.predict(x_val_s)
print(classification_report(y_val, pred))
'''
precision recall f1-score support
0 0.59 0.72 0.65 738
1 0.65 0.51 0.57 762
accuracy 0.61 1500
macro avg 0.62 0.61 0.61 1500
weighted avg 0.62 0.61 0.61 1500
'''
'Python > ML' 카테고리의 다른 글
[ML] Learning Curve (데이터 늘리기, Bias 줄이기) (0) | 2022.08.25 |
---|---|
[ML] k-fold Cross Validation (0) | 2022.08.25 |
[ML] 선형(선형 회귀, 로지스틱 회귀) 모델 변수 선택법 (0) | 2022.08.24 |
[ML] SVM - SVC (0) | 2022.08.24 |
[ML] SVM (Support Vector Machine) (0) | 2022.08.24 |