데이터분석 & Machine Learning
Random Forest 간략 정리
김진짜
2023. 8. 20. 22:18
1. 랜덤포레스트와 앙상블 러닝
랜덤포레스트는 앙상블 러닝의 한 버전입니다. 그러면 앙상블러닝이란?
기존의 것보다 더욱 강력한 것을 만들기 위해 "여러 개의 같은 알고리즘"을 합치고 이를 취합해서 최적의 결과값을 찾아내는 것을 의미하죠
랜덤 포레스트를 간단히 말하면, 훈련을 통해 여러개의 나무를 만들고, 이들의 분류 결과를 취합해서 결론을 얻는 방식입니다.
(일종의 인기투표)
- 트레이닝 셋에서 K개의 랜덤한 데이터점을 선정
- K개의 지점과 대응하는 결정트리 만들기.
- 내가 고른 수 N개의 나무를 만들기 위해 1, 2번을 반복
- 새로운 점에 대해서 N개의 나무가 예측한 결과를 계산 → N개의 나무가 예측한 결과값의 평균을 이용해 최종적으로 Y를 결정한다.
하나의 나무의 결과값을 받는 것이 아닌, 다수의 나무의 결과값을 받고 이를 취합한다는 점, 즉 나무가 아닌 Forest 숲을 보자!
하나의 나무에서 Overfitting이 이루어질지라도, 다수의 나무로부터 보정받을 수 있으므로, 나무 하나하나, 데이터 하나하나의 영향력이 줄어들고 안정적인 알고리즘이 될 거야!
이러한 특징을 가지는게 랜덤 포레스트입니다.
2. 랜덤포레스트의 특징 정리
- 랜덤성 → 조금씩 다른 특성의 트리를 여러개 형성
- 배깅(Bagging) : n개의 데이터셋 → m개의 데이터 복원 추출 or 균등확률분포를 이용해 n’개의 훈련집합 생성
여기서 배깅을 하는 이유는 데이터셋의 분산을 줄이면서, Overfitting을 방지하는 것에 있습니다. 데이터셋의 분산이 줄어들면, 데이터 간의 차이가 줄어들고 균등해지면서, 일반화 성능이 높아지게 되는 것을 응용한 셈이죠.
3. Parameter 정리
- n_estimators : 랜덤 포레스트 내의 결정 트리의 개수
- criterion : gini or entropy, 분할할 때 기준이 되는 지수 결정
- max_feature : 트리를 만들 Feature의 수를 결정,
- max_depth : 트리의 깊이를 결정, default값은 모든 leave들이 pure해질 때까지
- bootstrap : bool값, 모든 데이터 셋을 사용 X, 중복 허용해 뽑은 같은 크기의 조금씩 다른 훈련 데이터셋 → 훈련 후 결합