작성
·
824
0
안녕하세요:) 강의 너무 잘 듣고 있습니다.
다름이 아니라 scikitlearn wrapper를 이용하여 XGboost 하이퍼파라미터 서치를 수행하고 있는데요..! 아래와 같이 gridsearchCV에 CV는 데이터 수가 적어 leave-one-out cross validation을 적용하여 사용하려고 합니다. early_stopping 기준은 어떻게 줘야할지 잘 모르겠어서 100으로 현재 준 상태입니다.
# set data
X = df.iloc[:, 1:-1]
y = df["Y"]
# define fit_params
fit_params = {'early_stopping_rounds': 100, 'eval_set':[(X,y)]}
# define grid_search
model_grid_cv = GridSearchCV(estimator=model, param_grid=param_grid, scoring="accuracy", cv=loo, n_jobs=-1, verbose=True)
# fit_model
model_grid_cv.fit(X, y, **fit_params)
LightGBM의 경우 아래와 코드를 수행했을 때 1시간만에 결과가 잘 나왔는데 XGBoost는 20시간 가까이 계속 코드가 돌고 있더라고요,,,, 그냥 기다리는 것이 좋을 까요? 아니면 early_stopping을 낮게 줘서라도 수렴을 하는 것을 확인해야할까요? 너무 낮게 줘버리면 성능이 잘 나오지 않을 것 같아서 난해한 상황이라 선생님의 의견을 듣고 싶습니다.
감사합니다!
답변 7
1
0
0
아, 죄송합니다. 제가 헷갈렸네요. GridSearchCV에 eval_set이 안먹히는게 아닌데, 제가 착각했습니다.
fit_params에 eval_set을 부여하신 방식이 맞습니다.
GridSearchCV.fit() 수행시 output으로 나오는 log를 확인해 보시면 early stopping이 동작하는지 알수 있습니다.
0
아 그렇다면 GridSearchCV 수행시 eval_set을 안 쓰면 에러가 나던데 이럴때 어떻게 하면 되는지 아시나요? ㅠㅠ
최근 2주동안 관련 문헌들 찾아봤는데 마땅히 도움되는 것은 찾지 못하여 질문드립니다!
0
0
0
안녕하십니까,
Param_grid에 어떤 하이퍼 파라미터 조정을 어느정도 주셨는지 잘 모르겠지만 수행 시간이 오래 걸리는것 그것 때문인것 같습니다만,,
또 early_stopping도 30 정도로만 하셔도 충분할 것 같습니다. 위 2가지를 같이 적용해보시는게 어떨지요?