Inflearn Community Q&A
GBM 관련 두 가지 질문입니다!
Resolved
Written on
·
305
0
책으로 볼 때보다 강의를 들으니 집중이 잘되어서 책 읽다가 안궁금했던 내용이 궁금하네요!ㅎㅎ
1. GBM 서브 샘플 기본값이 1인데 estimator를 100개 지정해주면 어떤 속성을 조절해서 모델이 다르게 만들어지는건가요~? 그러면 컴퓨팅 성능이 좋은 경우엔 대개 몇 개 정도로 지정해주시나요?
2. 4.5절 실습에서 그리드서치한 결과(0.9010)가 그 이전 결과(0.9376)보다 안좋은데 왜 그런걸까요~?
좋은 강의 항상 감사합니다!^^
강사님 요즘도 캐글하시는지도 궁금하네요!ㅎㅎ
Answer 1
2
안녕하십니까,
질의 1. GBM 서브 샘플 기본값이 1인데 estimator를 100개 지정해주면 어떤 속성을 조절해서 모델이 다르게 만들어지는건가요~? 그러면 컴퓨팅 성능이 좋은 경우엔 대개 몇 개 정도로 지정해주시나요?
답변 :
GBM의 subsample 파라미터는 개별 약한 학습기(weak learner)가 전체 데이터 중에 몇 퍼센트를 기반으로 학습할 것인지를 결정합니다. 만일 전체 데이터 건수가 10,000건이면 subsample=1 일때 10,000건 전체 데이터를 기반으로 합니다. 0.8 이면 8,000건만 기반으로 합니다. 그런데 이 8,000건은 각 학습기가 random하게 선택합니다.
subsample 파라미터는 데이터의 건수를 조절하며 속성의 개수를 조절하진 않습니다.
GBM의 max_features는 tree 분할을 할때 정보이득/지니계수 계산을 하는 데 사용되는 피처의 개수를 지정할 수 있습니다. 기본값은 전체 피처를 사용하는 것이며, 'sqrt' 로 설정하면 전체 피처수의 제곱근에 해당하는 피처들을 추출합니다(즉 전체 피처수가 9개면 3개 추출). 하지만 이 역시 피처 추출을 랜덤하게 수행하게 때문에 어떤 속성이 추출되는지 알 수 없습니다.
컴퓨터 성능이 좋으면 여러개의 하이퍼 파라미터 튜닝을 통해 최적값을 찾는데 더 유리할 수 있습니다. 가령 n_estimators를 1000, 2000, 3000개 단위로, learning_rate를 0.01, 0.02, 0.03... 과 같은 단위로 하이퍼 파라미터 튜닝을 수행해 볼 수 있을 것입니다.
하지만 GBM은 CPU 코어를 병렬로 사용할 수 없기 때문에 수행시간이 매우 오래 걸립니다. CPU 24 Core와 100GB의 메모리를 가진 성능 좋은 H/W라 할지라도 GBM은 CPU 24 Core를 병렬로 사용하지 못하기 때문에 1Core CPU 시스템과 수행 시간 차이가 크지 않습니다. 때문에 병렬 CPU 시스템에서 다양한 하이퍼파라미터를 사용해보기 위해서는 GBM보다는 XGBoost나 LightGBM을 사용하시는게 훨씬 유리합니다.
질의 2. 4.5절 실습에서 그리드서치한 결과(0.9010)가 그 이전 결과(0.9376)보다 안좋은데 왜 그런걸까요~?
답변: 그리드서치한 결과(0.9010)는 학습데이터를 2개의 교차검증 데이터 세트로 나눈 후에 이들의 정확도를 평균하였기 때문입니다. 특정 한개의 데이터 세트의 정확도가 다른 데이터 세트의 정확도 보다 상대적으로 떨어져서 평균값이 작아진 부분이 있습니다.
또한 해당 데이터 세트는 데이터 세트간(교차검증과 테스트 데이터 세트들간) 정확도 편차가 심한 경향을 보이고 있어서 어떤 데이터 세트를 평가를 위한 데이터 세트로 가져가는가에 따라 정확도가 달라지는 경향을 보이고 있습니다.
성원해 주셔서 감사하며, 그렇지 않아도 요즘 바쁜 업무가 다 끝나서 이번주말부터 캐글을 다시 시작하려 합니다.





