랜덤포레스트(RandomForest) (feat. 앙상블, ensemble)
*제가 이해한 내용을 정리한 것입니다. 틀린내용이 있으면 지적해주세요!
랜덤포레스트(RandomForest)란?
- 여러개의 트리를 생성해서 트리의 결과를 투표해서 가장 많이 나온것을 선택하는 알고리즘이다.

랜덤포레스트를 알기전에 앙상블(ensemble)이라는 것을 알아야 한다.
'약한 분류기를 강한 분류기로 만드는 알고리즘'
앙상블은 여러개의 알고리즘을 통합해서 가장 잘 나오는 것을 뽑는 방식이다.
결론적으로 랜덤포레스트는 앙상블을 쓴 알고리즘이다.
앙상블에 대표적인 4가지 방식을 알아보자
1. Voting : 여러개 다른 알고리즘을 여러개 써서 그 중 가장 많이나온 결과를 사용하는 방법이다.
1) hard voting : 여러개의 결과를 투표해서 가장 많이 나온 결과
2) soft voting : 각각의 확률을 구해서 가장 높은 확률 클래스를 선택하는 방식 - 가장 선호하는 방법
2. Bagging : 하나의 알고리즘을 부트스트랩(랜덤으로 중복을 허용한 샘플을 선택)으로 나눠 그 중 많이 나온 결과를 사용하는 방법
- 랜덤포레스트가 이 알고리즘이다.
3. Boosting : 배깅과 비슷하지만, 전에 알고리즘이 예측하지 못한 값에 가중치를 두어 다음 알고리즘이 그 가중치를 중점으로 학습하며 계속 이어나가는 방법
4. Stacking : 여러개의 알고리즘을 학습시켜서 나온 예측값을 학습시켜 예측값을 얻는 방식이다.
앙상블을 이해했으면 랜덤포레스트가 뭔지 이해 될것이다.
의사결정나무(DecisionTree)라는 알고리즘을 여러개를 중복으로 분할시켜 그 중 가장 많이나온 예측값을 사용하는거다.
이 방식은 결정트리의 단점인 노드가 깊이 내려갈수록 과대적합 되는 것을 보완해줄 수 있다.
그래서 분류모델에는 결정트리보다 랜덤포레스트를 많이 사용한다. 단점은 결정트리보다 학습속도가 느리다는 것..
앙상블 모델은 랜덤포레스트 말고도 ExtraTree, Adaboost, GrdientBoosting, Xgboost등 다양한 모델이 존재한다.