[머신러닝] 7. 지도학습(회귀): 하이퍼파라미터 튜닝

PurinYun·2023년 11월 23일
0

AIffel

목록 보기
32/75

모델의 성능 향상을 위해 하이퍼파라미터 튜닝을 진행하며 사이킷런의 model_selection에서 제공하는GridSearchCV와RandomizedSearchCV를 이용하여 최적화할 수 있습니다.

1. GridSearchCV

• grid search를 통해 모두 탐색하여 최적의 하이퍼파라미터를 찾음 (시간 오래 걸림)

2. RandomizedSearchCV

• RandomizedSearchCV 는 GridSearchCV와 달리 랜덤으로 N개의 조합만 탐색함(시간 내 최적의 하이퍼파라미터 탐색)

(1) 데이터셋 로드


# 라이브러리 불러오기
fromsklearn.model_selection importGridSearchCV, RandomizedSearchCV



# 하이퍼파라미터
params={'learning_rate':[0.07, 0.05], 
        'max_depth':[3, 5, 7], 
        'n_estimators':[100, 200],
        'subsample':[0.9, 0.8, 0.7]
}


# 데이터셋 로드
defmake_dataset2():
dataset = load_diabetes()
df = pd.DataFrame(dataset.data, columns=dataset.feature_names)
df['target'] = dataset.target
    returndf.drop('target', axis=1), df['target']
X, y = make_dataset2()

(2) GridSearchCV

# GridSearchCV
xgb = XGBRegressor()
grid = GridSearchCV(xgb, params, cv=3, n_jobs=-1) {모델,하파값,크로스밸리데이션을 몇 개로 나눌건지 적기 cv=3(개로 나눈다는 것), 옵션:n_jobs를 통해~}
grid.fit(X, y)

# 최적의 하이퍼파라미터를 찾음
grid.best_params_

# 하이퍼파라미터 튜닝 {위에서 나온 값을 넣은 것}
xgb = XGBRegressor(
	learning_rate = 0.05,
	max_depth = 3,
	n_estimators = 100,
	subsample =0.7
)
xgb.fit(X_train, y_train)
pred = xgb.predict(X_test)
mean_squared_error(y_test, pred)

(3) RandomizedSearchCV

#  Randomized Search
xgb = XGBRegressor()
grid = RandomizedSearchCV(xgb, params, cv=3, n_iter=10, n_jobs=-1)
grid.fit(X, y)

# 최적의 하이퍼파라미터를 찾음
grid.best_params_
profile
Fantivation

0개의 댓글