그라디언트 부스팅 트리 : "변수가 많을수록 좋습니다"?


11

XGBoost 의 튜토리얼 에서 각 트리가 커지면 모든 변수가 스캔되어 노드를 분할하도록 선택되고 최대 게인 분할을 가진 변수가 선택됩니다. 따라서 제 질문은 노이즈 세트를 데이터 세트에 추가하면 이러한 노이즈 변수가 변수 선택에 영향을 미칠까요 (각 트리가 성장할 때)? 내 논리는 이러한 노이즈 변수가 최대 게인 분할을 전혀 제공하지 않기 때문에 선택되지 않으므로 트리 성장에 영향을 미치지 않는다는 것입니다.

대답이 예라면 "XGBoost에 더 많은 변수가 더 좋다"는 것이 사실입니까? 훈련 시간을 고려하지 마십시오.

또한 대답이 예이면 "모델에서 중요하지 않은 변수를 필터링 할 필요가 없다"는 것이 사실입니다.

감사합니다!

답변:


12

내 논리는 이러한 노이즈 변수가 최대 이득 분할을 전혀 제공하지 않기 때문에 선택되지 않으므로 트리 성장에 영향을 미치지 않는다는 것입니다.

이것은 훈련 세트의 샘플 수가 모든 변형을 잘 커버하는 매우 크고 거의 무한한 데이터 세트에만 완벽하게 맞습니다. 실제로, 충분한 치수를 사용하면 데이터의 크기가 클수록 가능한 예제 범위가 약해지기 때문에 샘플링 노이즈가 많이 발생합니다.

우연히 목표 변수와 상관 관계 가있는 약한 변수에 대한 노이즈 는 부스팅 알고리즘의 효과를 제한 할 수 있으며, 이는 평가중인 데이터가 이미 작은 하위 집합으로 그룹화되어있는 의사 결정 트리의 더 깊은 분할에서보다 쉽게 ​​발생할 수 있습니다.

더 많은 변수를 추가할수록 특정 조합에 대한 분할 선택 알고리즘에 잘 어울리는 약하게 상관 된 변수가 생겨 의도 된 신호 대신이 노이즈를 학습하는 트리가 생성됩니다. 나쁘게 일반화하십시오.

실제로 XGBoost는 소규모의 노이즈에 대해 매우 견고하다는 것을 알았습니다. 그러나, 나는 또한 비슷한 이유로 더 나은 상관 관계가있는 데이터보다 선호도에 따라 열악한 품질의 엔지니어링 변수를 선택한다는 사실을 발견했습니다. 따라서 "XGBoost에 더 많은 변수가 더 많을수록"알고리즘이 아니며 가능한 낮은 품질의 기능에주의를 기울여야합니다.


아주 좋아요 감사! 경험에 따라 XGBoost를 설치하기 전에 기능을 선택해야한다고 생각하십니까?
WCMC

@ 프랭크 : 어쩌면. 전체 기능 세트로 시작하여 xgboost 변수 중요도 보고서를 사용하여 도움을 줄 수 있습니다. 그러나 일반적으로 XGBoost는 기능 선택 및 엔지니어링에 대한 일반적인 문제를 완전히 해결하지 못합니다.
Neil Slater

@Neil 님 , 기회가 생길 때마다 datascience.stackexchange.com/questions/17288/…를 보십시오 . 감사합니다.
WCMC

@ Frank : 나는 어제 이미 해냈고 숫자가 조금 벗어난 것처럼 보이기 위해 질문을 남겼습니다.
Neil Slater

안녕 @ 닐, 이전 포스터가 귀하의 질문에 대답하지 않았기 때문에 내 프로젝트와 함께 여기에 다시 게시합니다 . 또한 데이터 세트와 R 스크립트를 제공하여 다른 사람들이 문제를 더 쉽게 이해할 수 있기를 바랍니다. 도움을 주시면 감사하겠습니다.
WCMC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.