<머신러닝 • 딥러닝 문제해결 전략> 5장의 내용을 실습했습니다.
하이퍼파라미터는 사용자가 직접 설정해야하는 값이다. 모델이 좋은 성능을 내기위해 어떤 하이퍼파라미터가 어떤 값을 가지면 좋을지 찾는 작업이 하이퍼파라미터 최적화이다. 대표적인 최적화방법으로는 그리드서치, 랜덤서치, 베이지안 최적화 세가지가 있다.
그리드 서치
가장 기본적인 하이퍼 파라미터 기법으로, 주어진 하이퍼파라미터를 모두 순회하며 가장 좋은 성능을 내는 값을 찾는 방법이다. 모든 경우의 수를 탐색하기에 시간이 오래 걸린다.
랜덤 서치
하이퍼파라미터를 무작위로 탐색해 가장 좋은 성능을 내는 값을 찾는 기법. 무작위라는 한계 때문에 사용빈도가 낮다. RandomizedSearchCV() 메서드로 수행할 수 있다.
베이지안 최적화
사전 정보를 바탕으로 최적 하이퍼파라미터 값을 확률적으로 추정하며 탐색하는 기법이다. 그리드 / 랜덤 서치보다 더 빠르고 효율적으로 최적 하이퍼파라미터를 찾아준다. 코드과 직관적인 점도 사용의 편리를 더한다. bayes_opt 패키지로 베이지안 최적화를 구현할 수 있다.
하이퍼파라미터 탐색 범위를 설정한다. (실습에서는 딕셔너리 형태로 지정함.)
# 하이퍼파라미터 범위(딕셔너리 형태)
param_bounds = {'x': (-1, 5),
'y': (0,4)}
하이퍼파라미터 x 범위가 (-1, 5)라면 -1에서 5 사이를 탐색하겠다는 뜻이다.
평가지표 계산함수를 정의한다. 베이지안 최적화는 평가점수가 가장 큰 값일 때의 하이퍼파라미터를 최적 하이퍼파라미터로 간주한다. 이것이 실제 최적 하이퍼파라미터가 아닐 수 있지만 최적일 가능성이 높은 하이퍼파라미터이다.
def eval_function(x,y):
return -x ** 2 -(y-2) ** 2 +10
BayesianOptimization()으로 베이지안 최적화 객체를 생성한다. 중요한 생성 파라미터는 f, pbounds가 있다
f에 '최대화하려는 평가지표 계산 함수'를 전달하고, pbounds에 하이퍼파라미터 범위를 전달한다.
from bayes_opt import BayesianOptimization
# 베이지안 최적화 객체 생성
optimizer = BayesianOptimization(f=eval_function,
pbounds=param_bounds,
random_state=0)
maximize() 메서드로 최적화를 간단히 수행한다. 이 메서드의 주요파라미터는 init_points, n_iter이 있다.
init_points는 랜덤 탐색을 수행할 스텝 횟수, n_iter은 베이지안 최적화를 수행할 스텝 횟수이다.
# 베이지안 최적화 수행
optimizer.maximize(init_points=2, n_iter=10)
베이지안 최적화로 찾은 최적 하이퍼파라미터는 x = 0.180 , y = 2.479 입니다. 이 값은 베이지안 최적화 객체의 max에 저장되어 있습니다.
# 평가점수가 최대일 때 타깃 , x, y값 출력
optimizer.max
'Data > MLDL' 카테고리의 다른 글
범주형 경진대회 이진분류 (0) | 2022.10.31 |
---|---|
자전거 대여 수요 예측(2) (0) | 2022.09.26 |
자전거 수요 예측 경진대회 (0) | 2022.09.26 |
주요 머신러닝 모델 (0) | 2022.09.19 |
교차검증 (0) | 2022.09.19 |