RandomForest
Random Forest
등장배경 : 의사결정트리의 과적합을 해결책으로 제안됨
-> 모든 feature들을 기반으로 트리를 만들어 가지가 많아져 오버피팅됨
랜덤포레스트는 의사결정나무를 배깅방식으로 만든 알고리즘
* 배깅 (Bagging) : 같은 알고리즘을 사용하되 데이터를 무작위로 추출해 다양한 서브 데이터셋을 생성하고 이들을 병렬적으로 학습한 결과를 다수결이나 평균으로 결정하는 것
랜덤포레스트는 다수의 분류트리로 구성
각 트리들의 성장과정
- 원본 데이터에서 무작위로 N개의 사례를 샘플링 - 트리의 훈련세트가 됨
- m << M값을 지정, M = 입력변수의 수
각 노드에서 m개를 무작위로 선택, m개 변수에 대한 최상의 분할을 사용해 분할 - 가지치기 없이 각 나무는 최대로 자람
랜덤포레스트의 오류율 원인
- 두 트리 사이의 상관관계
상관관계가 증가하면 오류율이 증가 - 각 개별 트리의 강도
오류율이 낮은 트리는 강력한 분류기, 개별 트리의 강도를 높이면 오류율이 감소
각 노드에서 무작위로 선택되는 변수 개수인 m값은 2가지 오류율 원인에 영향을 미침
m을 줄이면 상관관계, 강도 모두 감소하고 m을 늘리면 둘 다 증가
-> 오류율이 최소화되는 m의 최적 범위가 있다
=> oob (out of bag)오류율을 사용해 결정할 수 있다
특징
- 정확성
- 확장성
- 고차원성 : 피쳐엔지니어링 없이 수천개의 입력변수를 처리할 수 있음
- 피쳐중요도 : 중요도에 대한 추정치를 제공해 피쳐선택과 데이터 이해를 도움
- 일반화 오류 추정 : 모델 성능을 평가하는데 도움
- 누락된 데이터 처리
- 모집단 불균형 데이터세트의 오류 균형을 맞춤
- 비지도학습 가능
동작방식
- 데이터 샘플링 : Bagging사용하여 Bootstrap만
- 트리 구성
- 트리 성장 : 가지치기 없이 최대 깊이까지 성장
- 모든 인스턴스가 동일한 클래스에 속할때까지 / 중지기준이 충족될때까지 분할 - 보팅 or 평균화 : 모든 트리가 구성된 후
분류 - 각 트리는 클래스에 대해 투표
회귀 - 모든 트리의 예측을 평균 - Out of Bag샘플 테스트 : 각 나무는 1.데이터샘플링에서 하위 집합에 포함되지않은
Out of Bag샘플에 대해 테스트 - 피쳐 중요도
-> 랜덤포레스트는 전체 feature중 랜덤으로 일부 feature만 선택(개별 나무 간 상관성 줄임)해 하나의 결정트리를 만듬
또 전체에서 랜덤으로 일부 feature를 선택해 또 다른 결정트리를 만드는 것을 반복
여러개의 결정트리들의 예측값중 가장 많이 나온 값을 최종 예측값으로 정함
Out-of-Bag (oob)
랜덤포레스트 모델을 평가할때 사용하는 방법
Bagging을 통해 각 Bootstrap을 하며 복원추출에 뽑히지 않은 데이터들 (보통 2/3정도 뽑힘)이
자동으로 validation set이 되어 cross validation하지 않아도 test error를 추정할 수 있다
이때 뽑히지 않은 데이터 = Out-of-Bag
Variable Importance
여러개의 나무를 합하면서 예측정확도는 올라갔지만 기존의 결정트리가 가진 해석력이 없어짐
-> 하나의 트리로 의사결정의 절차를 표현할 수 없어졌기 때문
그러나, RSS나 Gini index를 통해 전반적인 예측변수들의 중요도를 확인할 수 있다
예를들어 분류의 경우 Gini index의 감소량을 특정해 감소량이 크면 중요한 변수임을 의미
장점
분류, 회귀 모두 사용가능
결측치 다루기 쉬움
대용량 데이터 처리에 효과적
오버피팅문제 해결로 모델 정확도 향상
분류모델에서 상대적으로 중요한 변수를 선정 및 ranking가능
개별 의사결정 트리에 비해 데이터의 노이즈 및 이상값에 덜 민감
특성중요도(feature inportance)를 제공
단점
모형의 해석이 어려움
다른 앙상블처럼 유연하지 않음 - 트리외의 다른 예측모형 적용 불가
계산량이 많고 학습에 소요되는 시간이 길다 - 하나의 결정트리에 비
참고 및 출처 : https://ko.wikipedia.org/wiki/%EB%9E%9C%EB%8D%A4_%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8 , https://blog-ko.superb-ai.com/3-minute-algorithm-random-forest/ , https://web.archive.org/web/20080622230434/http://stat-www.berkeley.edu/users/breiman/RandomForests/cc_home.htm , https://godongyoung.github.io/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D/2018/02/23/ISL-Tree-Based-Methods_ch8.html , https://zephyrus1111.tistory.com/249