🙄 결정 트리와 앙상블
➡ 결정 트리
- 결정 트리는 직관적이고 쉽게 해석할 수 있는 장점이 있는 반면 부정확하다는 단점 존재
그럼에도 결정 트리가 중요한 이유는
결정 트리를 응용하여 성능이 좋은 다른 모델을 만들 수 있음
➡ 앙상블 (ensemble)
- 하나의 모델을 쓰는 대신, 수많은 모델들을 사용해 종합적인 판단을 하는 것
- 수많은 모델들을 만들고 이 모델들의 예측을 합쳐서 종합적인 예측을 하는 기법
🙄 Random Forest
➡ Bagging_1 : 임의로 bootstrap 데이터 셋 만들기
- 수많은 트리 모델들을 임의로 많이 만들어서 다수결 투표로 결과를 종합하는 알고리즘
bootstrap
데이터 셋을 만들어내고, 모델들의 결정을 종합해서 예측을 하는
앙상블 기법을 bootstrap aggregating
, 줄여서 bagging
이라고 부름
Bootstrapping
- 갖고 있는 데이터 셋으로 다른 데이터 셋을 만들어내는 방법
- 기존의 데이터 셋에서 임의로 데이터 하나를 골라 새로운 데이터 셋에 추가한다
- 계속해서 임의로 하나의 데이터를 추가해 같은 크기의 데이터 셋을 임의로 만든다
- 여러번 추가된 데이터도 있을 수 있는 반면 한번도 추가되지 않은 데이터도 있을 수 있다
- 이런 식으로 원래의 데이터 셋에서 임의로 새로운 데이터 셋을 만들어내는 방법이
bootstrapping
이고 이렇게 만들어진 데이터 셋을 bootstrap
데이터 셋이라고 함
Bootstrapping을 하는 이유
- 앙상블은 수많은 다른 머신 러닝 모델들을 만들고
이 모델들의 예측을 종합해서 예측을 하는 기법
- 모델들을 다 똑같은 데이터 셋으로 학습시키면 다양하게 결과가 나오지 않고 비슷한 결과
- 이를 방지하기 위한 한 가지 방법으로 임의로 만든
bootstrap
데이터 셋 사용
➡ Bagging_2 : 임의로 결정 트리 만들기
- 여러 속성중 임의로 여러 속성을 골라 불순도를 계산해서
가장 좋은 거로 root node
의 질문으로 정함
- 그 다음에도 똑같이 여러 속성을 골라 지니 불순도가 가장 낮은 것을 사용
- 매 노드를 만들 때 임의로 만들기 때문에 수많은 서로 다른 결정 트리 탄생
bootstrapping
을 사용해서 임의로 데이터 셋을 만듦
- 결정 트리를 만들 때도 질문 노드들을 어느 정도는 임의로 만듦
- 이 두 단계를 엄청 많이 반복해서 서로 조금씩 다른 100개의 결정 트리를 만들었다고 가정
bootstrap
데이터를 써서 엄청 많은 트리들을 임의로 만드는게 바로 Random Forest
- 예측할 때는 만들어놓은 트리들의 예측을 다수결 투표로 종합해서 결정
🙄 scikit-learn으로 Random Forest 사용

