나무 를 꾸리 거나 부스팅 하는 아이디어에 대한 많은 블로그 게시물, YouTube 비디오 등이 있습니다. 내 일반적인 이해는 각각에 대한 의사 코드는 다음과 같습니다.
포장 :
- 표본의 x %와 특징의 y %의 N 개의 랜덤 표본 추출
- 각 N에 모델 (예 : 의사 결정 트리)을 적합
- 각 N으로 예측
- 최종 예측을 얻기 위해 예측 평균화
부스팅 :
- 모델 (예 : 의사 결정 트리)을 데이터에 적합
- 잔차 구하기
- 모형을 잔차에 적합
- N 부스팅 라운드는 2로 이동
- 최종 예측은 순차 예측 변수의 가중치 합계입니다.
위의 이해를 명확하게 설명하지만 의도 한 질문은 다음과 같습니다.
XGBoost와 LightGBM에는 모두 자루에 넣을 수있는 매개 변수가 있습니다. 응용 프로그램은 Bagging OR Boosting (모든 블로그 게시물에서 말하는 내용)이 아니라 Bagging AND Boosting입니다. 결합 된 배깅 및 부스팅이 발생하는 장소 및시기에 대한 의사 코드는 무엇입니까?
나는 그것이 "Bagged Boosted Trees"라고 예상했지만 그것이 "Boosted Bagged Trees"인 것 같습니다. 그 차이는 상당합니다.
부스트 부스트 트리 :
- 표본의 x %와 특징의 y %의 N 개의 랜덤 표본 추출
- N 개의 샘플 각각에 부스트 트리를 맞춤
- 각 N으로 예측
- 최종 예측을 얻기 위해 예측 평균화
가장 좋은 방법 인 것 같습니다. 결국, 부스팅의 위험은 과적 합이며 배깅의 주요 이점은 과적 합을 줄이는 것입니다. 부스트 모델을 포장하는 것은 좋은 생각처럼 보입니다.
그러나 scikit-learn
그라디언트 _boosting.py ( 예 : 임의의 기능을 선택하지는 않지만 그라디언트 _boosting.py)를 살펴보고 LightGBM 및 XGBoost 관련 게시물에서 작은 덩어리를 결합하면 XGBoost 및 LightGBM이 다음과 같이 작동하는 것처럼 보입니다.
부스트 트리 추가 :
- 의사 결정 트리를 데이터에 적합
- N 승압 라운드에서 i의 경우 :
- 잔차 구하기
- 내가 bag_frequency == 0 인 경우 (즉, 매 5 라운드마다 bag) :
- 표본의 x %와 특징의 y %의 단일 랜덤 표본을 취합니다. 앞으로이 무작위 샘플을 사용하십시오
- 나무를 잔차에 맞추다
- 최종 예측은 순차 예측 변수의 가중치 합계입니다.
여기에 내 이해를 수정하고 세부 사항을 작성하십시오. Boosted Bagged Tree (bag_frequency 당 1 개의 임의의 트리 만 있음)는 Bagged Boosted Tree만큼 강력하지 않습니다.