알고리즘을 사용하여 모델링할 때 최적화하기 위해 조절할 수 있는 옵션 (지식과 경험 +다양한 시도)
1) KNN
k값에 따라 성능이 달라짐
거리 계산법(metric)에 따라 성능이 달라짐
2) Decision Tree
max_depth : 트리의 최대 깊이 제한
min_samples_leaf : leaf가 되기 위한 최소한의 샘플 데이터 수
min_samples_split : 노드를 분할하기 위한 최소한의 샘플 데이터 수
🤔 그럼 모든 파라미터를 다 찾아보는 게 좋은가요?
모릅니다!
파라미터를 일부분만 찾아보면(RandomSearch) → 시간 절약 but❗ 최적의 값인지는 모름 파라미터 전부를 찾아보면(Grid Search) → 최적의 파라미터 값 찾을 수 있음 but❗시간이 너~어~무 오래 걸림
Random Search 실습
# 파라미터 선언
# max_depth: 1~50
param = {'max_depth' : range(1, 51)}
# Random Search 선언
# cv=5
# n_iter=20
# scoring='r2'
model = RandomizedSearchCV(model_dt, #기본 모델 이름
param, # 매개변수 범위를 가지고 있는 딕셔너리 변수
cv=5, # K-Fold CV 분할 개수
n_iter=20, # 임의로 선택할 매개변수 값
scoring='r2' # 사용할 평가지표(default는 없음)
)
# 학습하기
model.fit(x_train, y_train)
# 수행 정보
model.cv_results_
# 최적 파라미터
model.best_params_
# 최고 성능
model.best_score