인프런 커뮤니티 질문&답변

서쿠님의 프로필 이미지
서쿠

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

XGBoost를 이용한 위스콘신 유방암 예측(파이썬 Native XGBoost 사용)

안녕하세요:) 질문이 있습니다.

작성

·

809

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

권 철민님의 프로필 이미지
권 철민
지식공유자

아, 그리고 GridSearchCV를 하면 eval_set이 안 먹힙니다. 그래서 ealry stopping도 안먹힐 수 있습니다.

0

서쿠님의 프로필 이미지
서쿠
질문자

넵 :D 일단 30으로 해서 한번 해보고 follow up 알려드리겠습니다 ㅎㅎ

이전 학습 시에도 log는 일단 뜨긴했습니다.

0

권 철민님의 프로필 이미지
권 철민
지식공유자

아, 죄송합니다. 제가 헷갈렸네요. GridSearchCV에 eval_set이 안먹히는게 아닌데, 제가 착각했습니다.

fit_params에 eval_set을 부여하신 방식이 맞습니다.

GridSearchCV.fit() 수행시 output으로 나오는 log를 확인해 보시면 early stopping이 동작하는지 알수 있습니다.

0

서쿠님의 프로필 이미지
서쿠
질문자

아 그렇다면 GridSearchCV 수행시 eval_set을 안 쓰면 에러가 나던데 이럴때 어떻게 하면 되는지 아시나요? ㅠㅠ 

최근 2주동안 관련 문헌들 찾아봤는데 마땅히 도움되는 것은 찾지 못하여 질문드립니다!

0

서쿠님의 프로필 이미지
서쿠
질문자

아 그리고 만약에 cross_validation을 한다면 fit_params에 eval_set을 저렇게 주는게 맞을 까요?

0

서쿠님의 프로필 이미지
서쿠
질문자

Param_grid는 일단 나머지는 다 dafault로 주고, learning_rate랑 n_estimator 수만 바꿨습니다 :D

줄여서 해보고 말씀드릴게요 ㅎㅎ

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

Param_grid에 어떤 하이퍼 파라미터 조정을 어느정도 주셨는지 잘 모르겠지만 수행 시간이 오래 걸리는것 그것 때문인것 같습니다만,,

또 early_stopping도 30 정도로만 하셔도 충분할 것 같습니다.  위 2가지를 같이 적용해보시는게 어떨지요?

서쿠님의 프로필 이미지
서쿠

작성한 질문수

질문하기