PYTHON/머신러닝
[PYTHON] 랜덤 포레스트(Random Forest)
G허니
2024. 4. 28. 21:28
랜덤 포레스트(Random Forest)는 머신러닝에서 강력한 앙상블 학습 기법 중 하나로, 의사 결정 트리(Decision Tree)를 기반으로 합니다. 여러 개의 의사 결정 트리를 생성하고 각각의 트리가 개별적으로 예측한 결과를 결합하여 보다 정확한 예측을 수행합니다. 랜덤 포레스트는 분류(Classification)와 회귀(Regression) 문제에 모두 사용될 수 있습니다.
알고리즘 동작 방식:
- 부트스트랩 샘플링: 먼저, 원본 데이터셋에서 중복을 허용하여 샘플링을 수행합니다. 이 과정을 통해 여러 개의 부트스트랩 샘플(Bootstrap Sample)을 생성합니다.
- 트리 생성: 각각의 부트스트랩 샘플을 사용하여 의사 결정 트리를 생성합니다. 이 때, 무작위로 선택된 특성 집합을 사용하여 트리를 분할합니다. 이는 트리 간의 다양성을 증가시키고 과적합을 방지하는 데 도움이 됩니다.
- 결합: 생성된 모든 의사 결정 트리들이 개별적으로 예측한 결과를 결합하여 최종 예측을 수행합니다. 분류 문제의 경우 다수결 투표(voting)를, 회귀 문제의 경우 평균을 사용하여 결합합니다.
주요 특징:
- 앙상블 기법: 랜덤 포레스트는 여러 개의 의사 결정 트리를 결합하여 보다 강력하고 안정적인 예측을 제공합니다.
- 다양성 증가: 각 트리는 부트스트랩 샘플과 무작위로 선택된 특성 집합을 사용하여 생성됩니다. 이를 통해 트리 간의 다양성을 증가시키고 일반화 성능을 향상시킵니다.
- 고차원 데이터 처리: 랜덤 포레스트는 고차원 데이터에 대해서도 잘 작동하며, 수백 개 또는 수천 개의 특성을 다루는 데에도 효과적입니다.
적용 분야:
- 의료 진단: 환자의 의료 기록을 기반으로 질병을 예측하거나 진단하는 데에 사용됩니다.
- 금융 분석: 주가 예측, 신용 평가 등의 금융 분야에서 활용됩니다.
- 생물 정보학: 유전자 발현 데이터를 분석하여 유전자 패턴을 파악하는 데에 사용될 수 있습니다.
모델링
from sklearn.ensemble import RandomForestClassifier
# 선언하기
model = RandomForestClassifier(max_depth=5, n_estimators=100)
# 학습하기
model.fit(x_train, y_train)
# 예측하기
y_pred = model.predict(x_test)
# 평가하기
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
# Feature 중요도 확인
plt.barh(y=list(x) ,width=model.feature_importances_)
plt.show()
랜덤 포레스트는 의사 결정 트리의 앙상블로, 다양성을 증가시키고 안정적인 예측을 제공하는 강력한 머신러닝 알고리즘입니다. 과적합을 방지하고 고차원 데이터를 다루는 데 효과적이며, 다양한 분야에서 활용되고 있습니다.