더북(TheBook)

3.6.3 랜덤 포레스트로 여러 개의 결정 트리 연결

앙상블 방법은 뛰어난 분류 성능과 과대적합에 안정적이기 때문에 지난 10년간 머신 러닝 애플리케이션에서 큰 인기를 누렸습니다. 나중에 7장에서 배깅(bagging)부스팅(boosting)을 포함하여 여러 종류의 앙상블 방법을 배우겠지만 여기서는 확장성이 좋고 사용하기 쉬운 결정 트리 기반의 랜덤 포레스트(random forest) 알고리즘을 소개하겠습니다. 랜덤 포레스트는 결정 트리의 앙상블(ensemble)로 생각할 수 있습니다. 랜덤 포레스트 이면의 아이디어는 여러 개의 (깊은) 결정 트리를 평균 내는 것입니다. 개개의 트리는 분산이 높은 문제가 있지만 앙상블은 견고한 모델을 만들어 일반화 성능을 높이고 과대적합의 위험을 줄입니다. 랜덤 포레스트 알고리즘은 다음 네 단계로 요약할 수 있습니다.

1. n개의 랜덤한 부트스트랩(bootstrap) 샘플을 뽑습니다(훈련 데이터셋에서 중복을 허용하면서 랜덤하게 n개의 샘플을 선택합니다).

2. 부트스트랩 샘플에서 결정 트리를 학습합니다. 각 노드에서 다음과 같이 합니다.

a. 중복을 허용하지 않고 랜덤하게 d개의 특성을 선택합니다.

b. 정보 이득과 같은 목적 함수를 기준으로 최선의 분할을 만드는 특성을 사용해서 노드를 분할합니다.

3. 단계 1~2k번 반복합니다.

4. 각 트리의 예측을 모아 다수결 투표(majority voting)로 클래스 레이블을 할당합니다. 다수결 투표는 7장에서 자세히 설명하겠습니다.

 

단계 2에서 각각의 결정 트리를 훈련할 때 조금 다른 점이 있습니다. 각 노드에서 최선의 분할을 찾기 위해 모든 특성을 평가하는 것이 아니라 랜덤하게 선택된 일부 특성만 사용합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.