랜덤 포레스트 튜닝에 대한 실질적인 질문


65

내 질문은 랜덤 포레스트에 관한 것입니다. 이 아름다운 분류기의 개념은 나에게 분명하지만 여전히 실제적인 사용법 질문이 많이 있습니다. 불행히도, 나는 RF에 대한 실용적인 가이드를 찾지 못했습니다 (Geoffrey Hinton의 "제한된 Boltzman 기계 훈련을위한 실용 가이드"와 같은 것을 찾고 있었지만 임의의 숲)!

실제로 RF를 어떻게 튜닝 할 수 있습니까?

더 많은 수의 나무가 항상 더 낫다는 것이 사실입니까? 증가하는 나무 수와 주어진 데이터 세트에 대해이를 추정하는 방법에 대한 합리적인 제한 (물론 용량 제외)이 있습니까?

나무의 깊이는 어떻습니까? 합리적인 것을 선택하는 방법? 한 숲에서 길이가 다른 나무를 실험 할 때 어떤 의미가 있습니까? 그에 대한 지침은 무엇입니까?

RF를 훈련 할 때 살펴볼 가치가있는 다른 매개 변수가 있습니까? 개별 나무를 짓기위한 알고리즘은?

그들이 RF가 과적 합에 저항한다고 말할 때, 그것이 얼마나 사실입니까?

검색하는 동안 놓친 가이드 나 기사에 대한 답변 및 / 또는 링크에 감사드립니다.


perfoamnce-tuning에 대해서는 SO : "randomForest 성능을 향상시키는 방법"
smci

답변:


43

나는 권위있는 인물이 아니므로 다음과 같은 간단한 실무자 메모를 고려하십시오.

수익이 줄어들면 나무가 많을수록 좋습니다. 더 깊은 나무는 거의 항상 비슷한 성능을 위해 더 많은 나무가 필요합니다.

위의 두 점은 바이어스-분산 트레이드 오프의 결과입니다. 더 깊은 나무는 편견을 줄입니다. 나무가 많을수록 차이가 줄어 듭니다.

가장 중요한 하이퍼 파라미터는 각 스플릿에 대해 테스트 할 기능의 수입니다. 쓸모없는 기능이 많을수록 더 많은 기능을 시도해야합니다. 조정이 필요합니다. 훈련 데이터에 대한 성과를 알고 싶어하고 자매 결연이없는 경우 (~ 반복 측정 값) OOB 추정값을 통해이를 조정할 수 있습니다. 이것이 가장 중요한 매개 변수 임에도 불구하고, 최적은 여전히 ​​원래 제안 기본값 (분류 / 회귀에 대한 sqrt (p) 또는 (p / 3))에 상당히 가깝습니다.

상당히 최근의 연구에 따르면 기능 내에서 철저한 분할 검색을 수행하지 않아도 우수한 성능을 얻을 수 있습니다. 선택한 각 피처에 대해 몇 가지 컷 포인트를 시도하고 계속 진행하십시오. 이를 통해 훈련이 더욱 빨라집니다. (~ 매우 임의의 숲 / 나무).


다른 몇 가지 참고 사항 : 실제로는 일반적으로 나무의 절반에서 다른 절반으로 예측을 비교하여 수렴을 확인합니다. 과적 합에 관해서는 일반화하려는 기능에 더 가깝습니다. 대표 샘플에 대한 교육을 받으면 과잉 적합하지는 않지만 실제로 작동하는 방식은 거의 없습니다.
시어 파크

시간이 지남에 따라 변하는 의존 구조를 가진 극도로 시끄러운 데이터에 대해 '더 깊은 나무 = 더 좋고 다른 모든 상수'가 사실입니까?
Jase

얕은 관계 만 배워야하는 상황이 있다면 더 얕은 나무가 더 나아질 가능성을 알 수 있지만 실증적 증거를 사용하여 그것을 증명하기 위해 노력하고 싶습니다. 선형 관계가 가장 탄력적이라는 것을 믿거 나 증거가 있다면 트리 기반이 아닌 것을 강력하게 고려할 것입니다. 스킵 레이어가있는 신경망일까요?
Shea Parkes

3 가지 관련 기능과 100 가지 기능 (백색 잡음, 50 가지 데이터 포인트)이있는 데이터 세트가 있다고 가정 해 보겠습니다. 그러나 어떤 백색 잡음인지 사전에 어느 것이 관련되어 있는지 알지 못합니다. 데이터가 너무 잡음이 많으므로 이것이 사실이라는 것을 알 수 있습니다. 분명히 매우 얕은 나무 mtry는 더 낫습니다. 이것을 볼 수있는 증거 나 경험적 증거는 없습니다.
Jase

22
  • 나무 수 : 클수록 좋습니다. 중지시기를 평가하고 알 수있는 한 가지 방법은 포리스트 (또는 사용할 수있는 다른 평가 기준)를 구축하는 동안 오류율을 모니터링하고 수렴시기를 감지하는 것입니다. 학습 세트 자체 또는 가능한 경우 독립 테스트 세트에서이를 수행 할 수 있습니다. 또한 트리의 테스트 노드 수는 객체 수의 상한에 있으므로 변수가 많고 훈련 객체가 많지 않은 경우 더 큰 숲을 사용하는 것이 좋습니다. 포리스트에서 모든 설명자를 한 번 이상 평가할 가능성이 있습니다.

  • 나무 깊이 : 나무의 깊이 를 제어하는 ​​몇 가지 방법이 있습니다 (최대 깊이 제한, 노드 수 제한, 분할에 필요한 객체 수 제한, 분할이 적합도를 충분히 향상시키지 않으면 분할 중지). ). 대부분의 경우 시끄러운 데이터를 처리하는 경우 트리를 제거 (깊이 제한)하는 것이 좋습니다. 마지막으로, 완전히 개발 된 트리를 사용하여 더 짧은 트리의 성능을 계산할 수 있습니다. 이들은 완전히 개발 된 트리의 "서브 세트"입니다.

  • 각 노드에서 테스트 할 기능 수 : 권장 범위를 포함하여 광범위한 값으로 경험을 교차 검증하면 성능 곡선을 얻어이 매개 변수에 가장 적합한 값을 나타내는 최대 값을 식별 할 수 있어야합니다. + Shea Parkes가 대답합니다.

  • Shea Parkes는 Extra-Trees를 언급했으며 여기에 방법을 자세히 설명하는 원본 문서가 있습니다. http://orbi.ulg.ac.be/bitstream/2268/9357/1/geurts-mlj-advance.pdf

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.