← 9. 예측·머신러닝
랜덤 포레스트
이 분석 해 보기 →

랜덤 포레스트

여러 개의 의사결정나무를 학습한 뒤 각 나무의 예측을 결합하는 앙상블 학습 방법입니다.

배깅과 부트스트랩무작위 변수 선택OOB 평가변수 중요도

학습 데이터고객 5,000명표본 1표본 2표본 3예측 결합분류: 투표 · 회귀: 평균일부 변수만 검토

고객의 서비스 해지 여부를 예측하기 위해 의사결정나무를 만들었다고 가정해 보겠습니다. 이용 기간과 계약 유형, 고객센터 문의 횟수를 기준으로 고객을 구분했더니 비교적 좋은 결과가 나타났습니다. 그런데 학습에 사용한 고객을 조금 바꾸자 나무의 첫 번째 분할 조건부터 달라지고 예측 결과도 크게 변했습니다.

이는 의사결정나무에서 나타날 수 있는 대표적인 문제입니다. 하나의 나무는 데이터를 나누는 기준을 쉽게 설명할 수 있지만, 학습 데이터의 작은 변화에도 구조가 크게 달라질 수 있습니다.

이러한 불안정성을 완화하기 위해 사용하는 대표적인 머신러닝 알고리즘이 랜덤 포레스트(Random Forest)입니다.

랜덤 포레스트는 여러 개의 의사결정나무를 학습한 뒤 각 나무의 예측을 결합하는 앙상블 학습(Ensemble Learning) 방법입니다. 하나의 나무가 내린 판단에 의존하지 않고 여러 나무의 결과를 종합하여 예측의 안정성을 높이는 것이 핵심입니다.

특히 랜덤 포레스트는 복잡한 비선형관계와 변수 사이의 상호작용을 학습할 수 있어 고객 이탈 예측, 금융 위험 분석, 의료 연구, 제조업 품질관리 등 여러 분야에서 활용됩니다.

이번 글에서는 랜덤 포레스트의 기본 개념부터 배깅과 부트스트랩, 변수 무작위 선택, 분류와 회귀 예측, 실제 분석 사례, OOB 평가, 변수 중요도, 주요 설정과 주의사항까지 살펴보겠습니다.

SECTION 1

랜덤 포레스트란 무엇이며, 왜 여러 나무를 사용하나요?

랜덤 포레스트는 여러 의사결정나무(Decision Tree)를 학습하여 예측 결과를 결합하는 머신러닝 알고리즘입니다.

예를 들어 고객 5,000명의 데이터를 이용해 서비스 해지 여부를 예측한다고 가정해 보겠습니다. 하나의 의사결정나무는 이용 기간을 가장 중요한 조건으로 선택할 수 있고, 다른 나무는 계약 유형이나 서비스 이용 횟수를 먼저 선택할 수 있습니다.

랜덤 포레스트는 이러한 나무들을 여러 개 만들어 각 나무의 판단을 결합합니다. 분류 문제에서는 다수결이나 예측 확률의 평균을 사용할 수 있으며, 회귀 문제에서는 각 나무의 예측값을 평균내는 방식이 일반적입니다.

학습 데이터고객 5,000명표본 1일부 변수만 검토표본 2일부 변수만 검토표본 3일부 변수만 검토예측 결합분류: 투표 · 회귀: 평균
랜덤 포레스트의 학습과 결합

랜덤 포레스트에서 중요한 점은 단순히 똑같은 나무를 여러 개 만드는 것이 아니라는 사실입니다. 각 나무는 서로 다른 데이터 표본을 활용하고, 분할 과정에서도 일부 변수를 무작위로 선택하여 학습합니다.

이렇게 여러 나무 사이에 차이를 만들면 특정 나무의 불안정한 판단이 최종 예측에 미치는 영향을 줄일 수 있습니다.

다만 랜덤 포레스트가 항상 단일 의사결정나무보다 높은 성능을 보이는 것은 아닙니다. 데이터의 크기와 변수 구조, 주요 설정에 따라 결과가 달라지므로 별도의 평가 데이터에서 성능을 확인해야 합니다.

하나의 의사결정나무 대신 여러 개의 나무를 사용하는 이유

의사결정나무는 학습 데이터에서 가장 효과적인 분할 조건을 반복적으로 선택합니다.

하지만 비슷한 성능을 가진 분할 후보가 여러 개 존재하면 데이터의 작은 변화에도 선택되는 조건이 달라질 수 있습니다.

예를 들어 특정 고객 집단에서 이용 기간과 계약 유형이 모두 서비스 해지와 관련되어 있다고 가정해 보겠습니다. 학습 표본에 따라 어떤 나무는 이용 기간을 첫 번째 조건으로 선택하고, 다른 나무는 계약 유형을 먼저 선택할 수 있습니다.

문제는 첫 번째 조건이 달라지면 이후의 분할 구조도 크게 달라질 수 있다는 점입니다. 이러한 특성 때문에 단일 의사결정나무는 예측의 분산(Variance)이 높은 모델로 알려져 있습니다.

랜덤 포레스트는 여러 나무의 예측을 평균내거나 결합하여 이러한 변동성을 완화합니다. 특정 나무가 일부 관측값에 과도하게 반응하더라도 다른 나무들이 서로 다른 패턴을 학습했다면 그 영향을 줄일 수 있습니다. 이러한 방식은 통계학에서 여러 추정값을 결합하여 불안정성을 낮추는 접근과 유사합니다.

다만 나무들 사이의 예측 결과가 지나치게 비슷하다면 여러 나무를 결합하더라도 성능 개선이 제한적일 수 있습니다. 따라서 랜덤 포레스트에서는 각 나무 사이에 다양성을 만드는 과정이 중요합니다.

SECTION 2

배깅과 부트스트랩은 어떻게 작동하나요?

랜덤 포레스트를 이해하려면 먼저 배깅(Bagging)을 알아야 합니다.

배깅은 Bootstrap Aggregating의 줄임말로, 원본 학습 데이터에서 여러 표본을 생성하고 각 표본으로 모델을 학습한 뒤 예측 결과를 결합하는 앙상블 방법입니다.

예를 들어 학습 데이터에 고객 1,000명의 기록이 있다고 가정해 보겠습니다. 배깅에서는 이 데이터에서 복원추출로 1,000개의 관측값을 선택해 첫 번째 학습 표본을 만들 수 있습니다.

같은 방식으로 두 번째, 세 번째 표본을 생성하면 각 표본에는 서로 다른 고객 구성이 나타납니다. 이렇게 생성한 표본을 이용하여 여러 의사결정나무를 각각 학습합니다. 마지막으로 각 나무의 예측 결과를 결합하면 하나의 최종 예측을 얻을 수 있습니다.

배깅의 핵심은 서로 다른 학습 표본에서 만들어진 모델들을 결합하여 예측의 변동성을 줄이는 것입니다. 랜덤 포레스트는 이러한 배깅을 기반으로 하면서, 각 분할에서 사용할 변수까지 무작위로 선택한다는 특징이 있습니다.

부트스트랩(Bootstrap)은 어떻게 작동하나요?

부트스트랩은 원본 데이터에서 복원추출을 통해 새로운 표본을 생성하는 방법입니다.

복원추출이란 관측값을 하나 선택한 뒤 다시 원래 데이터에 포함시켜 다음 추출에서도 선택될 수 있도록 하는 방식입니다. 예를 들어 고객 5명의 데이터가 있다고 가정해 보겠습니다.

고객 ID실제 해지 여부
A해지
B유지
C유지
D해지
E유지

이 데이터에서 5개를 복원추출하면 다음과 같은 표본이 생성될 수 있습니다.

원본ABCDEOOB표본 1ABBDEC표본 2AACDEB표본 3BCCDEA한 표본뽑힘 63.2%OOB 36.8%
부트스트랩 표본

표본 1에서는 고객 B가 두 번 선택되었고 고객 C는 선택되지 않았습니다. 표본 2에서는 고객 A가 두 번 선택되었습니다. 이처럼 부트스트랩 표본에는 같은 관측값이 여러 번 포함될 수도 있고, 전혀 포함되지 않는 관측값도 존재할 수 있습니다.

일반적으로 원본 표본 크기와 동일한 수만큼 복원추출하면 한 번의 부트스트랩 표본에는 원본 관측값의 약 63.2%가 서로 다른 관측값으로 포함됩니다. 나머지 약 36.8%는 해당 표본에 한 번도 선택되지 않습니다. 이렇게 선택되지 않은 관측값은 뒤에서 설명할 OOB 평가에 활용할 수 있습니다.

SECTION 3

랜덤 포레스트의 무작위 변수 선택은 무엇인가요?

랜덤 포레스트가 일반적인 배깅과 구별되는 중요한 특징은 각 노드의 분할에서 일부 변수만 무작위로 선택한다는 점입니다.

예를 들어 고객 이탈 예측에 다음과 같은 변수를 사용한다고 가정해 보겠습니다.

일반적인 의사결정나무는 각 노드에서 모든 후보 변수를 검토할 수 있습니다. 하지만 랜덤 포레스트는 각 노드에서 무작위로 선택된 일부 변수만 대상으로 최적의 분할 조건을 찾습니다.

이용 기간월 요금계약 유형이용 횟수문의 횟수할인 사용나무 1나무 2나무 3
노드마다 달라지는 후보 변수

예를 들어 첫 번째 나무의 특정 노드에서는 이용 기간과 월 요금, 문의 횟수를 검토하고, 다른 나무에서는 계약 유형과 서비스 이용 횟수, 할인 혜택 사용 여부를 검토할 수 있습니다. 이를 통해 모든 나무가 항상 동일한 변수를 먼저 선택하는 현상을 줄일 수 있습니다.

특정 변수가 매우 강한 예측력을 가지고 있다면 일반적인 배깅에서는 많은 나무가 같은 변수로 비슷하게 분할될 수 있습니다. 랜덤 포레스트의 무작위 변수 선택은 이러한 나무 간 상관성을 낮추는 데 도움이 됩니다. 결과적으로 여러 나무의 예측을 결합했을 때 분산을 더 효과적으로 줄일 수 있습니다.

SECTION 4

랜덤 포레스트는 어떻게 최종 예측을 만드나요?

랜덤 포레스트는 여러 나무의 예측을 결합하여 최종 결과를 계산합니다.

분류 문제와 회귀 문제에서는 예측값을 결합하는 방식이 다릅니다.

분류 문제

고객의 서비스 해지 여부를 예측한다고 가정해 보겠습니다. 다섯 개의 나무가 다음과 같이 예측했다고 가정하겠습니다.

나무예측 결과
나무 1해지
나무 2유지
나무 3해지
나무 4해지
나무 5유지

다섯 개 중 세 개의 나무가 해지를 예측했으므로 다수결 방식에서는 최종 결과가 해지로 결정됩니다. 하지만 모든 랜덤 포레스트 구현이 반드시 다수결만 사용하는 것은 아닙니다. 일부 구현에서는 각 나무가 출력한 범주별 예측 확률을 평균내고, 그 결과를 기준으로 최종 범주를 결정합니다.

예를 들어 각 나무의 해지 확률이 0.80, 0.40, 0.70, 0.65, 0.30이라면 평균 해지 확률은 0.57입니다. 기준값을 0.5로 설정한 경우 최종 예측 범주는 해지가 됩니다.

회귀 문제

회귀 문제에서는 각 나무가 연속형 수치를 예측합니다. 예를 들어 다섯 개의 나무가 고객의 다음 달 구매 금액을 10만 원, 12만 원, 11만 원, 9만 원, 13만 원으로 예측했다면 평균은 11만 원입니다. 랜덤 포레스트 회귀모형은 이러한 평균값을 최종 예측으로 사용할 수 있습니다.

SECTION 5

실제 사례: 고객의 서비스 해지를 예측한다면?

한 구독 서비스 기업에서 고객 5,000명의 데이터를 이용하여 다음 달 서비스 해지 여부를 예측한다고 가정해 보겠습니다.

전체 고객 중 650명이 서비스를 해지했고, 나머지 4,350명은 서비스를 유지했습니다. 전체 해지율은 13%입니다. 모형에 사용하는 변수는 고객의 이용 기간, 월 요금, 계약 유형, 최근 서비스 이용 횟수, 고객센터 문의 횟수입니다. 연구 질문은 다음과 같습니다.

"여러 의사결정나무를 결합하면 하나의 의사결정나무보다 고객의 서비스 해지 여부를 더 안정적으로 예측할 수 있을까?"

데이터를 학습용 4,000명과 최종 평가용 1,000명으로 나누었다고 가정하겠습니다. 최종 평가 데이터의 해지 고객은 130명, 유지 고객은 870명입니다. 학습 데이터 내부에서 교차검증을 통해 나무 수와 최대 깊이 등의 설정을 선택한 뒤, 단일 의사결정나무와 랜덤 포레스트를 비교했습니다.

모델별 예측 성능

지표의사결정나무랜덤 포레스트
정확도84%88%
ROC-AUC0.730.84
PR-AUC0.320.47
재현율57%69%

이 수치는 두 알고리즘의 일반적인 순위를 의미하지 않습니다.

정확도84%88%ROC-AUC0.730.84PR-AUC0.320.47재현율57%69%의사결정나무랜덤 포레스트
의사결정나무와 랜덤 포레스트 성능

이 사례에서는 랜덤 포레스트가 모든 주요 평가 지표에서 단일 의사결정나무보다 높은 성능을 보였습니다. 특히 PR-AUC가 0.32에서 0.47로 높아졌습니다. 해지 고객의 비율이 13%인 데이터를 고려하면 랜덤 포레스트가 해지 고객을 구분하는 데 더 유용한 예측 순위를 제공했을 가능성이 있습니다.

하지만 이 결과만으로 랜덤 포레스트가 모든 데이터에서 의사결정나무보다 우수하다고 판단할 수는 없습니다. 모형 성능은 데이터의 특성과 하이퍼파라미터 설정, 평가 방법 등에 따라 달라집니다.

SECTION 6

OOB(Out-of-Bag) 평가란 무엇인가요?

랜덤 포레스트에서는 부트스트랩 표본을 이용하여 각 나무를 학습합니다.

이때 특정 나무의 학습 표본에 포함되지 않은 관측값을 OOB(Out-of-Bag) 데이터라고 합니다. 예를 들어 고객 A가 나무 1의 부트스트랩 표본에는 포함되지 않았지만 나무 2와 나무 3의 표본에는 포함되었다고 가정해 보겠습니다.

이 경우 고객 A의 OOB 예측에는 고객 A를 학습에 사용하지 않은 나무들의 예측만 활용합니다. 각 고객에 대해 해당 고객을 학습하지 않은 나무들의 예측을 결합하면 OOB 기반 예측 성능을 계산할 수 있습니다.

OOB 평가는 별도의 검증 데이터 분할 없이도 랜덤 포레스트의 일반화 성능을 추정하는 데 도움이 됩니다.

다만 OOB 평가가 최종 평가 데이터를 완전히 대체하는 것은 아닙니다.

OOB 성능을 반복적으로 확인하면서 하이퍼파라미터를 조정했다면 해당 성능은 모델 선택 과정에 사용된 검증 성능에 해당합니다. 최종 일반화 성능을 확인하려면 별도로 보관한 평가 데이터를 사용하는 것이 좋습니다.

또한 시간 순서나 고객별 반복 관측 구조가 중요한 데이터에서는 단순한 부트스트랩 기반 OOB 평가가 실제 예측 환경을 충분히 반영하지 못할 수 있습니다.

SECTION 7

랜덤 포레스트에서 변수 중요도는 어떻게 확인하나요?

랜덤 포레스트는 여러 나무를 이용하기 때문에 어떤 변수가 예측에 많이 기여했는지 확인할 수 있습니다.

대표적인 방법은 불순도 기반 중요도와 순열 중요도입니다.

불순도 기반 변수 중요도

불순도 기반 중요도는 각 나무에서 특정 변수가 분할에 사용되었을 때 불순도를 얼마나 감소시켰는지 계산합니다. 이 값을 여러 나무에서 집계하면 변수별 중요도를 구할 수 있습니다. 예를 들어 고객 이탈 예측모형에서 다음과 같은 결과가 나타났다고 가정해 보겠습니다.

변수중요도
이용 기간0.34
계약 유형0.28
월 요금0.18
고객센터 문의 횟수0.14
서비스 이용 횟수0.06
합계1.00
이용 기간0.34계약 유형0.28월 요금0.18고객센터 문의 횟수0.14서비스 이용 횟수0.06
변수 중요도

이 결과에서는 이용 기간과 계약 유형이 랜덤 포레스트의 분할 과정에서 상대적으로 큰 비중을 차지했습니다. 하지만 이용 기간의 중요도가 0.34라고 해서 이용 기간이 실제 서비스 해지의 원인을 34% 설명한다는 뜻은 아닙니다.

또한 불순도 기반 중요도는 분할 가능한 값이 많은 변수나 연속형 변수에 유리하게 나타날 수 있으므로 해석에 주의해야 합니다.

순열 중요도(Permutation Importance)

순열 중요도는 특정 변수의 값을 무작위로 섞었을 때 모형의 예측 성능이 얼마나 감소하는지 확인하는 방법입니다. 예를 들어 계약 유형을 무작위로 섞은 뒤 PR-AUC가 0.47에서 0.37로 감소했다면, 원래의 계약 유형 정보가 해당 모형의 예측 성능에 상당한 기여를 했을 가능성이 있습니다.

다만 서로 높은 상관관계를 가진 변수들이 있다면 한 변수의 값을 섞어도 다른 변수에 유사한 정보가 남아 있을 수 있습니다. 따라서 순열 중요도 역시 변수의 인과적 영향이나 절대적인 중요성을 나타내는 지표로 해석해서는 안 됩니다.

SECTION 8

랜덤 포레스트에서 어떤 설정이 중요한가요?

랜덤 포레스트는 여러 나무를 결합하므로 단일 의사결정나무보다 조절할 수 있는 설정이 많습니다.

대표적인 하이퍼파라미터는 다음과 같습니다.

설정의미
나무 수(n_estimators)학습할 의사결정나무의 개수
최대 깊이(max_depth)개별 나무의 최대 깊이
최소 리프 표본 수(min_samples_leaf)하나의 리프에 필요한 최소 표본 수
최소 분할 표본 수(min_samples_split)노드를 분할하기 위한 최소 표본 수
분할 변수 수(max_features)각 분할에서 검토할 변수의 개수
부트스트랩 사용 여부(bootstrap)복원추출 표본을 사용할지 여부
클래스 가중치(class_weight)분류에서 범주별 오류의 가중치를 조정하는 설정

위 이름은 scikit-learn에서 사용하는 대표적인 매개변수 명칭이며, 소프트웨어에 따라 이름과 기본값이 다를 수 있습니다.

나무 수를 늘리면 일반적으로 앙상블 예측의 변동성이 감소하고 성능이 안정화되는 경향이 있습니다. 다만 일정 수준을 넘어서면 추가적인 성능 개선은 작아질 수 있으며, 학습 시간과 메모리 사용량은 증가합니다.

최대 깊이나 최소 리프 표본 수는 각 나무의 복잡도를 조절합니다. 나무가 지나치게 깊거나 리프가 너무 작으면 학습 데이터의 세부적인 패턴까지 반영할 수 있습니다.

분할 변수 수는 각 노드에서 선택할 후보 변수를 제한합니다. 이 값을 작게 설정하면 나무 사이의 다양성을 높일 수 있지만, 중요한 분할 변수를 놓쳐 개별 나무의 예측 성능이 낮아질 수도 있습니다. 따라서 설정값은 분석 목적과 데이터 특성에 따라 조정해야 합니다.

나무는 많을수록 좋은가요?

랜덤 포레스트에서는 나무 수가 중요한 설정 중 하나입니다.

나무 수가 적으면 개별 나무의 예측에 따라 최종 결과가 비교적 크게 달라질 수 있습니다. 반면 나무 수를 늘리면 여러 나무의 예측을 결합하여 결과를 안정화할 수 있습니다. 예를 들어 다음과 같은 결과를 생각해 볼 수 있습니다.

나무 수OOB 정확도
10개84.5%
50개87.1%
100개87.8%
300개88.0%
500개88.0%
84%85%86%87%88%84.5%87.1%87.8%88.0%88.0%개선 폭 감소10개50개100개300개500개
나무 수별 OOB 정확도

이 사례에서는 나무 수가 100개를 넘어가면서 성능 개선 폭이 점차 줄어들었습니다. 랜덤 포레스트는 나무 수를 늘린다고 해서 부스팅처럼 순차적으로 학습 데이터를 더 강하게 맞추는 구조가 아닙니다. 일반적으로 충분한 수의 나무를 추가하면 예측 결과가 안정화되는 방향으로 수렴합니다.

따라서 나무 수를 늘린다는 이유만으로 일반적인 부스팅과 같은 방식의 과적합이 발생한다고 보기는 어렵습니다. 다만 개별 나무가 학습하는 데이터에 문제가 있거나 모형 전체에 편향이 존재한다면 나무를 많이 추가해도 해결되지 않습니다.

또한 데이터가 크거나 변수 수가 많다면 나무 수 증가에 따른 계산 비용도 고려해야 합니다.

SECTION 9

의사결정나무·그래디언트 부스팅과 어떻게 다른가요?

랜덤 포레스트는 의사결정나무를 기반으로 하지만 학습 방식과 결과를 해석하는 방법에서 차이가 있습니다.

구분의사결정나무랜덤 포레스트
모델 구성하나의 나무여러 개의 나무
학습 데이터일반적으로 전체 학습 데이터나무별 부트스트랩 표본
분할 변수후보 변수 전체를 검토할 수 있음일부 변수를 무작위로 선택
예측 방식단일 나무의 결과여러 나무의 예측 결합
해석 가능성상대적으로 높음전체 구조는 더 복잡함
예측 안정성데이터 변화에 민감할 수 있음여러 나무 결합으로 변동성 완화 가능
계산 비용비교적 낮음나무 수에 따라 증가

예를 들어 고객 관리 담당자에게 간단한 규칙을 제시해야 한다면 단일 의사결정나무가 더 적합할 수 있습니다. 반면 여러 고객 특성을 이용하여 보다 안정적인 예측을 수행하는 것이 중요하다면 랜덤 포레스트를 고려할 수 있습니다.

하지만 단일 나무가 설명하기 쉽다는 이유만으로 항상 좋은 예측모형인 것은 아니며, 랜덤 포레스트가 복잡하다는 이유만으로 해석이 불가능한 것도 아닙니다. 따라서 예측 성능과 설명 가능성, 운영 환경 등을 함께 고려해야 합니다.

랜덤 포레스트와 그래디언트 부스팅은 어떻게 다른가요?

랜덤 포레스트와 그래디언트 부스팅은 모두 여러 의사결정나무를 결합하는 앙상블 방법입니다.

하지만 여러 나무를 학습하고 결합하는 방식은 다릅니다. 랜덤 포레스트는 일반적으로 여러 나무를 서로 독립적으로 학습한 뒤 예측을 평균내거나 투표로 결합합니다. 반면 그래디언트 부스팅은 앞서 만들어진 모델을 보완하는 방향으로 나무를 순차적으로 추가합니다.

구분랜덤 포레스트그래디언트 부스팅
주요 방식배깅 기반부스팅 기반
나무 학습비교적 독립적순차적
예측 결합평균 또는 투표나무별 기여를 누적
주요 목적예측 분산 완화손실함수를 줄이는 방향으로 예측 개선
대표 설정나무 수, 분할 변수 수, 최대 깊이학습률, 나무 수, 최대 깊이

예를 들어 랜덤 포레스트는 각 나무가 서로 다른 데이터 표본과 분할 후보를 사용해 학습하는 방식입니다. 반면 그래디언트 부스팅은 첫 번째 나무의 예측에서 부족한 부분을 다음 나무들이 순차적으로 보완하는 방식입니다.

두 알고리즘 모두 복잡한 비선형관계와 변수 간 상호작용을 학습할 수 있지만, 어느 방법이 항상 더 정확하다고 말할 수는 없습니다. 따라서 실제 데이터에서는 동일한 평가 조건에서 성능을 비교하는 것이 좋습니다.

SECTION 10

클래스 불균형이 있는 데이터에서는 어떻게 하나요?

랜덤 포레스트를 고객 이탈이나 부정거래 탐지처럼 관심 사건의 비율이 낮은 문제에 적용할 때는 클래스 불균형(Class Imbalance)을 고려해야 합니다.

예를 들어 전체 고객 중 95%가 서비스를 유지하고 5%만 해지한다고 가정해 보겠습니다. 모든 고객을 유지로 예측해도 정확도는 95%가 됩니다. 하지만 해지 고객을 한 명도 찾아내지 못하므로 고객 이탈 예측모형으로서의 실용성은 낮습니다.

이러한 경우에는 정확도 외에 정밀도, 재현율, F1 점수, PR-AUC 등을 함께 확인해야 합니다. 학습 과정에서는 클래스 가중치를 조정하거나 재표본추출(Resampling)을 적용할 수도 있습니다.

클래스 가중치는 적은 범주의 오류에 더 큰 가중치를 부여하는 방법입니다. 재표본추출은 특정 범주의 표본 수를 늘리거나 줄여 학습 데이터의 범주 구성을 조정하는 방법입니다. 다만 재표본추출은 학습 데이터 내부에서만 수행해야 합니다.

학습 데이터와 평가 데이터를 나누기 전에 전체 데이터에 오버샘플링을 적용하면 평가 데이터에 학습 데이터와 유사하거나 중복된 관측값이 포함될 수 있기 때문입니다.

또한 클래스 가중치나 재표본추출을 적용하면 예측 확률의 보정 상태가 달라질 수 있으므로, 확률을 실제 의사결정에 사용하려면 별도의 보정 평가가 필요합니다.

SECTION 11

과적합과 데이터 누수를 어떻게 방지하나요?

랜덤 포레스트는 여러 나무의 예측을 결합하기 때문에 단일 의사결정나무의 불안정성을 완화할 수 있습니다.

하지만 과적합 문제가 완전히 사라지는 것은 아닙니다. 예를 들어 학습 데이터의 관측값 수가 적고 변수 수가 매우 많거나, 예측에 사용할 수 없는 미래 정보가 포함되어 있다면 랜덤 포레스트도 실제보다 높은 학습 성능을 보일 수 있습니다.

또한 개별 나무를 지나치게 복잡하게 만들거나, 검증 데이터의 성능을 반복적으로 확인하면서 설정을 조정하면 실제 일반화 성능보다 낙관적인 결과를 얻을 수 있습니다. 과적합을 줄이기 위해서는 최대 깊이와 최소 리프 표본 수 등을 조절하고, 학습 데이터 내부에서 교차검증이나 OOB 평가를 활용할 수 있습니다.

그리고 최종 성능은 모델 선택에 사용하지 않은 평가 데이터에서 확인하는 것이 좋습니다. 특히 시간에 따라 데이터 분포가 달라지는 문제라면 과거 데이터에서 학습하고 이후 기간의 데이터에서 평가하는 방식을 고려해야 합니다.

랜덤 포레스트에서 데이터 누수는 어떻게 발생하나요?

랜덤 포레스트는 복잡한 변수 조합을 학습할 수 있기 때문에 데이터 누수에 주의해야 합니다.

예를 들어 고객이 다음 달 서비스를 해지할지 예측하면서 다음 달의 해지 신청 기록을 입력변수로 사용한다고 가정해 보겠습니다. 모형은 매우 높은 예측 성능을 보일 수 있지만 실제 예측 시점에서는 사용할 수 없는 정보를 활용한 것입니다.

따라서 학습에 사용하는 모든 변수는 실제 예측 시점에 확인할 수 있는 정보여야 합니다. 전처리 과정에서도 누수가 발생할 수 있습니다. 예를 들어 학습·평가 데이터를 나누기 전에 전체 데이터에서 결측값을 대체하거나 변수 선택을 수행하면 평가 데이터의 정보가 학습 과정에 반영될 수 있습니다.

이를 방지하려면 데이터 분할을 먼저 수행하고, 결측값 대체와 인코딩 등의 전처리 기준을 학습 데이터에서만 계산해야 합니다. 또한 동일 고객의 반복 기록이 존재한다면 고객 단위로 데이터를 분리하는 것이 적절할 수 있습니다.

SECTION 12

랜덤 포레스트의 예측 결과를 어떻게 해석하나요?

랜덤 포레스트는 단일 의사결정나무처럼 전체 예측 과정을 하나의 분기 구조로 설명하기는 어렵습니다.

하지만 변수 중요도, SHAP, 부분의존도(PDP), 개별조건부기댓값(ICE) 등 여러 방법을 활용하여 모델의 예측을 해석할 수 있습니다.

SHAP

SHAP은 각 변수가 특정 예측값에 얼마나 기여했는지 설명하는 방법입니다. 예를 들어 특정 고객의 예상 해지 확률이 높게 나타났다면 이용 기간, 계약 유형, 고객센터 문의 횟수 등이 예측값을 높이거나 낮추는 데 어느 정도 기여했는지 살펴볼 수 있습니다.

다만 SHAP 값은 모형 출력의 척도와 기준 예측값, 배경 데이터 등에 따라 해석이 달라질 수 있습니다.

부분의존도(PDP)

PDP는 특정 변수의 값을 변화시키면서 모형의 평균적인 예측이 어떻게 달라지는지 보여줍니다. 예를 들어 이용 기간이 3개월, 6개월, 12개월, 24개월로 증가할 때 평균적인 예측 해지 확률이 어떻게 변하는지 확인할 수 있습니다.

다만 PDP는 다른 변수와의 상관관계가 강할 때 현실적으로 드문 변수 조합까지 계산에 포함할 수 있으므로 해석에 주의해야 합니다.

개별조건부기댓값(ICE)

ICE는 특정 변수의 값 변화에 따른 예측 결과를 개별 관측값별로 보여주는 방법입니다. PDP가 전체적인 평균 관계를 보여준다면 ICE는 고객마다 예측 변화 패턴이 어떻게 다른지 살펴보는 데 도움이 됩니다.

이러한 방법은 랜덤 포레스트의 예측 구조를 이해하는 데 유용하지만, 변수의 값을 바꾸었을 때 실제 결과가 동일하게 변화한다는 인과적 의미는 아닙니다.

SECTION 13

랜덤 포레스트 결과는 어떻게 보고하나요?

랜덤 포레스트 결과를 보고할 때는 데이터의 크기와 변수 구성, 학습·평가 방법, 주요 하이퍼파라미터, 예측 성능, 변수 중요도 등을 함께 제시하는 것이 좋습니다.

앞서 살펴본 고객 이탈 예측 사례를 이용하면 다음과 같이 작성할 수 있습니다.

결과 보고 예시

고객의 다음 달 서비스 해지 여부를 예측하기 위해 랜덤 포레스트 분류모형을 구축하였다. 전체 5,000명의 고객 중 4,000명을 학습에 사용하고 1,000명을 최종 평가에 활용하였다. 나무 수와 최대 깊이 등의 하이퍼파라미터는 학습 데이터 내부의 교차검증을 통해 선택하였다. 최종 평가 결과 랜덤 포레스트의 정확도는 88%, ROC-AUC는 0.84, PR-AUC는 0.47로 나타났다. 같은 평가 데이터에서 단일 의사결정나무의 ROC-AUC는 0.73, PR-AUC는 0.32로 나타나, 이 사례에서는 랜덤 포레스트가 더 높은 예측 성능을 보였다.

실제 연구에서는 최종 선택한 나무 수, 최대 깊이, 최소 리프 표본 수, 분할 변수 수 등을 함께 보고하는 것이 좋습니다. 또한 어떤 변수가 예측에 중요했는지 설명할 경우에는 사용한 변수 중요도 계산 방법을 명시해야 합니다.

특히 클래스 불균형이 존재하는 데이터라면 관심 범주의 비율과 기준 성능을 함께 보고하면 평가 결과를 이해하는 데 도움이 됩니다.

SECTION 14

랜덤 포레스트는 어디에 활용할 수 있나요?

랜덤 포레스트는 여러 변수 사이의 비선형관계나 상호작용이 존재하는 예측 문제에서 폭넓게 활용됩니다.

마케팅 및 고객 분석

고객 이탈 여부, 구매 가능성, 재구매 금액, 고객 생애가치 등을 예측하는 데 사용할 수 있습니다.

금융 및 경제

대출 연체 가능성, 신용위험, 부정거래 탐지, 기업 재무성과 예측 등에 활용할 수 있습니다.

보건 및 의료 연구

여러 임상 지표나 검사 결과를 이용해 특정 건강 결과를 예측하는 연구에 활용할 수 있습니다. 다만 의료 현장에 실제로 적용하려면 외부 검증과 안전성 평가가 필요합니다.

교육 연구

학생의 학업 성취도, 중도 탈락 가능성, 교육 프로그램 수료 여부 등을 예측할 수 있습니다.

제조업 및 품질관리

설비 고장 가능성, 제품 불량 여부, 생산 품질, 유지보수 필요성 등을 예측하는 데 활용할 수 있습니다.

환경 및 기상 데이터 분석

다양한 환경 측정값과 기상 관련 변수를 이용하여 수치형 결과나 특정 상태를 예측할 수 있습니다. 이처럼 랜덤 포레스트는 범주형 결과를 예측하는 분류 문제뿐 아니라 연속형 수치를 예측하는 회귀 문제에도 사용할 수 있습니다.

✓마무리

랜덤 포레스트는 여러 나무의 판단을 결합해 예측을 안정화합니다.

랜덤 포레스트는 여러 의사결정나무를 학습하고 그 결과를 결합하는 앙상블 머신러닝 알고리즘입니다.


각 나무는 부트스트랩 표본을 이용해 학습하며, 분할 과정에서 일부 변수를 무작위로 선택합니다. 이러한 방식으로 나무 사이에 다양성을 만들고, 여러 예측을 평균내거나 결합하여 단일 나무의 불안정성을 완화합니다.

또한 OOB 평가를 통해 학습 데이터 내부에서 일반화 성능을 추정할 수 있으며, 변수 중요도나 SHAP 등의 방법을 이용해 예측에 기여한 요인을 살펴볼 수 있습니다.

하지만 랜덤 포레스트가 모든 데이터에서 가장 좋은 성능을 보이는 것은 아닙니다. 나무 수와 최대 깊이, 분할 변수 수 등을 적절하게 설정하고, 실제 사용 환경을 반영한 평가 데이터에서 성능을 확인해야 합니다.

특히 관심 사건의 비율이 낮은 분류 문제에서는 정확도만 확인하지 않고 정밀도, 재현율, PR-AUC 등을 함께 살펴보는 것이 중요합니다.

KEY TAKEAWAY

랜덤 포레스트의 핵심은 단순히 의사결정나무를 많이 만드는 것이 아니라, 서로 다른 나무들의 예측을 결합하여 새로운 데이터에서도 안정적이고 유용한 결과를 얻는 데 있습니다.