티스토리 뷰
Random Forest 알고리즘
출처 : https://medium.com/@williamkoehrsen/random-forest-simple-explanation-377895a60d2d
Random Forest 는 굉장히 중요한 !!! 알고리즘입니다.
먼저 Random Forest 알고리즘은 Decision Tree의 분류보다 정확도를 개선시키기 위해, 여러개의 나무를 생성하여 각각 나무의 예측을 총 조합하여 결론을 내리는 구조입니다.
현업에서도 현재까지 가장 많이 사용하고 있고, 분류 분석에서 이 알고리즘만 사용해도 될 정도로 쉽고, 성능이 매우 우수한 알고리즘이기 때문이죠 !!!
Random Forest 특징
- 서로 모두 다른 트리 구조로 구성
: 서로 다른 트리들이 각각의 의사결정을 내리고, 그 의사결정의 결론을 종합적으로 판단
1) 각 트리마다 랜덤하게 데이터를 샘플링(복원추출 허용)
* Random Forest 내부적으로 랜덤 샘플링을 수행하여 각 트리마다 훈련시키는 데이터가 다르게 적용 -> 모두 다른 모델 생성
2) 각 트리의 노드 결정 시 설명변수의 후보 수(mtry)를 지정
* mtry값이 설명변수의 개수와 같을 시 모든 설명변수를 각 노드 결정 시 고려
=> 이미 설명변수의 중요도는 정해져있으므로 각 트리마다 비슷한 구조 생성
ex) 설명변수의 수 = 10, mtry = 10 일 경우, 여러 노드가 다 비슷한 구조로 생성되므로 Decision Tree와 비슷한 결과가 도출
* mtry값이 1일 경우 랜덤하게 선택된 설명변수를 각 노드마다 고정
=> 중요도가 낮은 설명 변수들이 루트 노드로 선택될 경우, 각 트리가 복잡하게 구성될 확률이 높아짐
- 트리의 개수(ntree)가 많을 수록 정확도는 개선되지만 elbow point(기울기가 급변하는 지점)가 존재
: elbow point 지점 이상 개수의 트리까지는 생성할 필요가 없음 (불필요한 트리 생성으로 인한 알고리즘 성능 저하)
- 분류(단순하지만 평가의 통계적 접근이 없고, 모델 내부를 볼 수 없음 -> 해석 불가)가 주 목적이지만 회귀 분석이 가능하게 제작
: 회귀 모델(주 목적은 인과관계 파악)이 굉장히 어려운 모델이기 때문에 회귀 분석을 위해 사용되기도 함(random forest regression)
* Y가 연속형일 경우, 결과로 각 트리의 결과값 평균 -> 오로지 예측만 가능(관계 파악 불가)
* Y가 범주형일 경우, 결과로 각 트리의 다중투표에 의한 다수결 의견 (random forest classifier)
- 알고리즘 자체적으로 병렬처리가 가능하게 해주는 옵션 보유
- 다수의 의견을 통합(과반수)해서 만드는 알고리즘이므로 속도가 늦음
-> 속도 개선을 위한 시스템 튜닝이 중요
- 모델의 일반화를 위해 매개변수 튜닝(조정)이 필요
Random Forest 용어
- 임의화
: 임의성에 의해 서로 조금씩 다른 특성을 갖는 트리들로 구성
1) 배깅
: 데이터를 여러 번의 복원 샘플링을 통해 모델링한 후 결과를 결합하여 최종 모델을 생성 -> 기존 방식보다 예측력 향상
* 랜덤추출을 하지 않으면, 모든 트리들은 가중치가 높은 변수를 상위 노드로 정하려하기 때문에 트리가 다 똑같아질 것임
2) 임의 노드 최적화
: 분석에 사용될 데이터를 랜덤하게 추출
- 후보군(=mtry)
: 설명변수들 중 각 트리에 사용 될 변수 후보
ex) 10개의 설명변수가 있다고 가정, 후보군(mtry)을 5개로 지정했다고 한다면 각 트리들이 생성될 때 10개의 설명변수 중 5개의 변수를 랜덤으로 선택하여 트리를 생성
* 후보군을 통해 각기 다른 트리를 구성할 수 있음
* 후보군의 크기가 작아질수록 각 트리들이 모두 다르게 구성 -> 예측력 향상
하지만! 후보군을 너무 작게하면(=1) 가중치가 적은 설명변수들이 상위 노드에 위치하게되어 불순도가 높아짐 -> 복잡한 트리 구성
* 후보군의 크기가 커질수록 각 트리들이 모두 비슷하게 구성 -> 예측력 하락(=단일 의사결정)
* 결론으로, 후보군은 낮아서도 높아서도 안 되고, 모델, 데이터마다 적정한 후보군의 크기가 다르므로 튜닝이 꼭 필요 !
참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성과정
'Data > Analysis ' 카테고리의 다른 글
[데이터 분석] 계층적 군집 분석(hierarchical clustering) (0) | 2019.01.21 |
---|---|
[데이터 분석] K-NN 알고리즘 (3) | 2019.01.21 |
[데이터 분석] 분석의 단계 (0) | 2019.01.17 |
[데이터 분석] Decision Tree(의사결정 나무) 알고리즘 (0) | 2019.01.15 |
[데이터 분석] 지도학습의 분석 절차 (0) | 2019.01.15 |