랜덤 포레스트(random forest)는 Leo Breiman 및 Adele Cutler에 의해 상표가 등록된 흔히 사용되는 머신 러닝 알고리즘으로, 하나의 결과에 도달하기 위해 여러 의사결정 트리의 출력을 결합합니다. 이 알고리즘은 분류와 회귀 문제를 모두 다루며 사용 편의성과 유연성이 뛰어나 도입이 가속화되었습니다.
랜덤 포레스트 모델은 여러 의사결정 트리로 구성되므로 의사결정 트리 알고리즘을 먼저 간략하게 살펴보면 도움이 될 것입니다. 의사결정 트리는 "서핑을 해야 할까?"와 같은 기본적인 질문으로 시작됩니다. 여기서부터 "너울의 주기가 긴가?" 또는 "바람이 바다쪽으로 부는가?"와 같은 일련의 질문에 답할 수 있습니다. 이러한 질문들은 트리의 의사결정 노드를 구성하며 데이터를 분할하는 수단 역할을 수행합니다. 각 질문은 개인이 최종 의사결정에 도달하도록 도움을 줍니다. 이 최종 의사결정은 잎새 노드(leaf node)로 표시됩니다. 기준을 충족하는 관측은 "예" 가지를 따라가고 그렇지 않은 관측은 다른 경로를 따라갑니다. 의사결정 트리는 데이터의 하위 집합을 만들기 위해 최적의 분할 지점을 찾고자 하며, 일반적으로 분류 및 회귀 트리(Classification and Regression Tree, CART) 알고리즘을 통해 훈련됩니다. 지니 불순도(Gini impurity), 정보 이득(information gain) 또는 평균제곱오차(mean square error, MSE)와 같은 지표를 사용하여 분할의 질을 평가할 수 있습니다.
이 의사결정 트리는 분류 문제의 예입니다. 여기서 클래스 레이블은 "서핑함"과 "서핑하지 않음"입니다.
의사결정 트리는 일반적인 지도형 학습 알고리즘이지만, 편향 및 과대적합과 같은 문제가 발생할 수도 있습니다. 그러나 여러 의사결정 트리가 랜덤 포레스트 알고리즘에서 앙상블을 형성하면, 더 정확한 결과를 예측합니다. 특히, 개별 트리가 서로 상관관계가 없는 경우 그러합니다.
앙상블 학습 방식은 의사결정 트리와 같은 분류자의 모음으로 구성됩니다. 그 예측을 집계하여 가장 인기 있는 결과를 찾아냅니다. 가장 잘 알려진 앙상블 방법은 배깅(bagging)입니다. 배깅은 부트스트랩 집계 또는 부스팅(boosting)으로도 알려져 있습니다. 1996년, Leo Breiman(ibm.com 외부 링크)(PDF, 810KB)은 배깅 방법을 소개했습니다. 이 방법은 훈련 세트에서 무작위로 데이터를 복원 추출하여 랜덤 샘플을 만드는 것입니다. 이는 개별 데이터 포인트가 한 번 이상 선택될 수 있음을 의미합니다. 여러 데이터 샘플이 생성된 후, 이러한 모델들은 독립적으로 훈련되며, 회귀 또는 분류와 같은 작업 유형에 따라 예측의 평균 또는 과반수가 더 정확한 추정치를 제공합니다. 이 접근법은 노이즈가 있는 데이터 세트 내에서 분산을 줄이는 데 자주 사용됩니다.
랜덤 포레스트 알고리즘은 배깅 방법의 확장으로, 배깅과 특성 무작위성을 모두 활용하여 상관관계가 없는 의사결정 트리의 포레스트를 만드는 것입니다. 특성 배깅 또는 “랜덤 서브스페이스 메소드”(ibm.com 외부 링크)(PDF, 121KB)로도 알려진 특성 무작위성은 무작위로 특성의 하위 집합을 생성하여 의사결정 트리 간에 낮은 상관관계가 존재하도록 합니다. 이것이 의사결정 트리와 랜덤 포레스트의 주된 차이점입니다. 의사결정 트리는 가능한 모든 특성 분할을 고려하는 반면, 랜덤 포레스트는 이러한 특성의 하위 집합만을 선택합니다.
"서핑을 해야 할까?"라는 예로 돌아가면, 예측을 결정하기 위해 물을 수 있는 질문이 다른 사람의 질문들만큼 포괄적이지 않을 수 있습니다. 데이터의 잠재적인 가변성을 모두 고려하면 과대적합, 편향, 전체 분산의 리스크를 낮추어 더 정확한 예측을 수행할 수 있습니다.
SPSS Modeler
랜덤 포레스트 알고리즘에는 세 개의 주요 하이퍼파라미터가 있습니다. 훈련 전에 이러한 하이퍼파라미터를 설정해야 합니다. 여기에는 노드 크기, 트리의 수, 샘플링된 특성의 수가 포함됩니다. 여기에서부터 랜덤 포레스트 분류자를 사용하여 회귀 또는 분류 문제를 해결할 수 있습니다.
랜덤 포레스트 알고리즘은 다수의 의사결정 트리로 구성되며 앙상블의 각 트리는 복원 추출 방식으로 훈련 세트에서 추출된 데이터 샘플(이를 부트스트랩 샘플이라고 부름)로 구성됩니다. 이 훈련 샘플 중에서 1/3은 테스트 데이터로 떼어 놓습니다. 이러한 데이터를 아웃오브백(out-of-bag, oob) 샘플이라고 하며, 이에 관해서는 나중에 살펴보겠습니다. 그 다음, 무작위성의 또 다른 인스턴스는 특성 배깅을 통해 주입됩니다. 이를 통해 데이터 세트에 다양성을 추가하고 의사결정 트리 간의 상관관계를 줄입니다. 문제의 유형에 따라 예측에 대한 결정이 달라집니다. 회귀 작업의 경우 개별 의사결정 트리는 평균을 구하며, 분류 작업의 경우 다수결 보트(majority vote), 즉 가장 빈번한 범주적 변수에 따라 예측된 클래스를 내놓습니다. 마지막으로, oob 샘플이 교차 검증을 위해 사용되고 예측이 완료됩니다.
분류 또는 회귀 문제에 랜덤 포레스트 알고리즘이 사용될 경우 발생하는 여러 가지 주요 장점과 문제가 있습니다. 일부를 소개하면 다음과 같습니다.
랜덤 포레스트 알고리즘은 더 나은 의사결정을 지원하며 다양한 산업에서 적용되어 왔습니다. 일부 적용사례는 다음과 같습니다.