랜덤 포레스트 알고리즘 단계의 동기


11

나는 임의의 숲을 구성하는 잘 알고있어하는 방법은있는 그대로 다음과 같습니다 (에서 http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm )

숲에서 나무를 만들려면 다음을 수행하십시오.

  1. N 크기의 샘플을 부트 스트랩합니다. 여기서 N은 트레이닝 세트의 크기입니다. 이 부트 스트랩 샘플을이 트리의 학습 세트로 사용하십시오.
  2. 트리의 각 노드에서 무작위로 M 피처의 m을 선택하십시오. 분할 할 m 기능 중 최상의 것을 선택하십시오. (여기서 m은 랜덤 포레스트의 매개 변수입니다)
  3. 각 나무를 최대한 크게 자릅니다. 즉 가지 치기가 없습니다.

이 알고리즘은 절차 적 수준에서 의미가 있고 확실히 좋은 결과를 낳지 만, 이론적 동기가 1, 2, 3 단계에 어떤 영향을 미치는지 확실하지 않습니다. 잘 작동합니까?

예를 들어 1 단계를 수행해야하는 이유는 무엇입니까? 일반적인 분산 감소 목적으로 부트 스트랩하는 것처럼 보이지 않습니다.

답변:


9

앙상블 방법 (예 : 임의의 숲)에는 개별 기본 분류자가 성장한 데이터 집합의 일부 변형 요소가 필요합니다 (그렇지 않으면 임의의 숲은 너무 비슷한 나무의 숲으로 끝납니다). 의사 결정 트리가 훈련 세트의 관측에 매우 민감하기 때문에 (부트 스트랩을 사용하여) 관측을 변경하는 것이 필요한 다양성을 얻는 자연스러운 접근 방법이라고 생각합니다. 명백한 대안은 사용되는 기능을 변경하는 것입니다. 예를 들어 각 기능을 원래 기능의 하위 집합에서 학습합니다. 부트 스트랩 샘플을 사용하면 가방 외부 (OOB) 오류율과 변수 중요도를 추정 할 수 있습니다.

2는 본질적으로 숲에 무작위성을 주입하는 또 다른 방법입니다. 또한 낮은 mtry 값을 사용하여 나무 간의 상관 관계를 줄이는 데 영향을 미치며 (잠재적으로) 예측력이 저하됩니다. 너무 큰 값의 mtry를 사용하면 나무가 점점 더 비슷해집니다 (그리고 극단적으로 bagging으로 끝납니다)

나는 가지 치지 않는 이유가 다른 것보다 필요하지 않다는 사실 때문이라고 생각합니다. 단일 의사 결정 트리를 사용하면 과도하게 적합하기 때문에 일반적으로 정리합니다. 그러나 부트 스트랩 샘플을 사용하고 많은 나무를 키우면 임의의 숲이 개별적으로 강하지 만 서로 연관되지 않은 나무를 자랄 수 있습니다. 기본적으로 개별 트리는 과적 합하지만 오류가 서로 관련이없는 경우 포리스트는 합리적으로 정확해야합니다.

그것이 잘 작동하는 이유는 Condorcet의 배심원 정리 (및 부스팅과 같은 방법의 논리)와 유사합니다 . 기본적으로 무작위 추측보다 약간만 더 잘 수행해야하는 약한 학습자가 많이 있습니다. 이것이 사실이라면, 약한 학습자를 계속 추가 할 수 있으며, 한도 내에서 앙상블로부터 완벽한 예측을 얻을 수 있습니다. 학습자의 오류가 서로 연관되어 앙상블의 성능 향상을 방해하기 때문에 이것은 분명히 제한됩니다.


좋은 대답, 그리고 Condorcet의 배심원 정리와의 관계는 의미가 있습니다. 공식적으로, 그것이 잘 작동하는 이유는 젠슨의 불평등 때문입니다!
JEquihua
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.