• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

하드웨어 성능이 좋지 않을 때, 모델 구성방법 문의

21.10.12 07:41 작성 조회수 143

0

안녕하세요 강사님
요즘 사내 AI 경진대회 준비중이라, 질문이 많은것 같습니다.(Kaggle과 같은 방식의 경진대회)
항상 모든 질문에 세심히 답변해 주셔서 감사드립니다.

제가 문의 드릴것은 강의에 관한 내용은 아닌데, 어디에 적을지 몰라서 여기에 적습니다. 죄송합니다..
문의 사항은 하드웨어 성능이 좋지 않을 때, 모델 구성방법에 관한 사항 입니다.

사내 AI 경진대회가, 사내 플랫폼으로 돌아가는 환경으로 Jupyter 기반입니다
CPU 2 Core, 메모리 16기가, GPU를 지원합니다.

제 전략은 이렇습니다.
피쳐 셀렉션을 하기위한 Permutation_importance를 보기위해
빠르게 앙상블 모델을 만들어서 타겟값에 중요한 영향을 미치는 요소를 뽑아내려합니다.
* EDA, 피쳐 엔지니어링은 당연히 진행합니다!!

하지만 여기서 문제가 있는데, 알고리즘 별 결과 도출까지 소요되는 시간입니다.
[분류] 문제는 LGBM을 쓰려고 하는데, 플랫폼에 LGBM - GPU 가 설치되어 있지않아 사용불가 합니다.
현재 진행중인 예선에서는 2주의 기간이 있어 LGBM을 사용했는데 learning_rate 0.008 했더니 6시간 후에 결과가 나옵니다.
0.01 하면 2시간정도 걸립니다.(이진분류 문제)
따라서 Xgboost-GPU를 사용하려 합니다.  데이터의 모든 특성을 집어넣고 Xgboost를 돌려서 앙상블 모델을 만든다음,
 Permutation_importance와 모델의 Featur_importance 기능을 통해서 사용 피쳐를 선택합니다.
그 후, 어느정도 피쳐가 정해지면 다시 LGBM으로 모델을 구현하려합니다.
근데 나중에가면 분명히 LGBM으로 learning_rate를 낮추고, estimator를 높여서 정확도를 높여야하는데
예선처럼 6시간 후에 결과가 나온다면... 답이 없을 것 같습니다. 스태킹 모델은 꿈도 못꾸겠네요ㅠㅠ

혹시 이러한 접근방법이 적절한지, 아니라면 혹시 추천해주실 방법이 있는지 문의드립니다.
* 딥러닝으로도 빠르게 구현 가능하였으나, 예선에서 테스트 해보았는데 정확도가 그닥 높지 않긴 했습니다.

참고로, 강사님 강의 수강하여 현재 진행중인 예선에서 약 100팀중 2-3등을 하고있습니다. 
정말 감사드립니다!!!

답변 1

답변을 작성해보세요.

0

안녕하십니까, 

좋은 성적을 거두고 계시다니, 저도 기쁩니다. 

learning rate를 0.008로 하면 6시간,  0.01로 하면 2시간 이라면 learning rate 값 차이가 얼마 안나는데 최적화 시간이 너무 큰 차이가 나는 군요.  early stopping 수를 좀 줄여보시고, 2개의 learning rate시 성능 차이를 함 비교해 보시지요. 

hyperparamter 최적화를 gridsearchcv로 하고 계시는 건가요?  아님 bayesian optimization 패키지를 사용하고 계신는 건지도 확인 부탁드립니다. 

그리고 강의 뒷부분에 보시면 Out of Fold 방식으로 predict하는 방법이 있습니다. 이 방법도 적용을 함 해보시지요. 

아마 치열하게 경쟁하는 경우라면 어쩔 수 없이 LightGBM과 XGBoost 모델을 서로 ensemble 섞어서라도 모델 성능을 높이셔야 할 것 같습니다. 

앞에서 말씀드린 early stopping 수를 좀 줄여서 learning rate에 따른 수행 시간 차이를 좀 줄여 보신 다음에 -> bayesian optimization(이미 적용하신것 같습니다만..) -> OOF Prediction -> LightGBM 과 XGBoost 모델 혼합 방식을 함 적용해 보시는게 좋을 것 같습니다.