본문 바로가기
Machine Learning/scikit-learn

[앙상블] RandomForestRegressor(랜덤포레스트)

by ISLA! 2023. 8. 14.

 

RandomForestRegressor

 

수많은 의사결정나무를 모아 숲을 구성하는 '랜덤 포레스트'
(각각의 의사결정나무의 특징들을 무작위로 선정하기에 '랜덤' 이 붙음)

  • 앙상블 학습 기반의 회귀 모델로, 여러 개의 결정 트리(Decision Tree)를 사용하여 예측을 수행하는 모델
  • 앙상블 학습은 여러 개의 모델을 조합하여 더 강력하고 안정적인 예측 모델을 만드는 기법이다 👉 더 높은 예측 성능 & 일반화 능력
  • 랜덤 포레스트는 배깅(Bagging)이라는 앙상블 방법을 기반으로 한다
🔍 배깅이란?
- 훈련 데이터를 임의로 추출하여 복원 추출을 통해 부분집합을 생성하고,
- 각각의 부분집합에서 독립적으로 모델을 학습시킴
- 이때, 복원추출방법은 중복을 허용하기 때문에 단일 데이터가 여러번 선택될 수도 있다

 

특징과 장점

각 데이터셋에 대해 Decision Tree를 독립적으로 구축하고, 이렇게 구축된 다수의 결정 트리를 조합하여 최종 예측 결과를 산출
이 모델은 다중 피처들의 상호작용을 고려하고, 피처의 중요도를 제공하여 변수 선택이나 피처 엔지니어링에 유용하게 사용될 수 있음
또한, 과적합에 강하고 예측 성능이 뛰어남(👍)

 

RandomForest 모델 사용 순서

  1. 모델을 사용하기 위해 RandomForestRegressor 모듈을 불러오기
  2. RandomForestRegressor 클래스의 인스턴스를 생성하여 model 변수에 할당
  3. model 객체의 fit() 메서드를 호출하여 모델을 학습

▶︎ 이 과정을 통해 입력 변수와 대상 변수 간의 관계를 학습하여 새로운 입력에 대한 대상 값을 예측할 수 있음

# RandomForestRegressor 모듈을 불러오기
from sklearn.ensemble import RandomForestRegressor
​
# 불러온 모듈을 model 변수에 할당
model = RandomForestRegressor(random_state = 42)
​
# 학습을 진행
model.fit(x_train, y_train)

 

피처(Feature) 중요도 확인

  • RandomForestRegressor 모델은 피처의 중요도를 계산하여 각 피처의 기여도를 확인할 수 있다
  • 피처가 모델의 예측에 얼마나 중요한 역할을 하는지를 나타내며, 값이 클수록 해당 피처가 모델의 예측에 큰 영향을 미친다는 것을 의미
  • 중요도 값은 0에서 1 사이의 범위에 있으며, 전체 피처의 중요도 값의 합은 1
  • 코드 예시 및 결과
importances = model.feature_importances_
names = model.feature_names_in_

print(importances)
print(names)

🧐 피처의 중요도가 왜 중요할까?
* 피처의 중요도를 알고 있다면, 예측 결과에 영향을 미치는 주요한 피처를 식별하고 모델을 개선하는 데 도움이 된다

 

의사결정나무 속성 확인

estimator_list = model.estimators_

👉 랜덤 포레스트 모델의 estimators_ 속성을 사용하여 랜덤 포레스트 모델에 사용된 각각의 의사결정나무를 확인할 수 있음!

👉 개별 의사결정나무를 확인함으로써 분류 규칙을 분석하거나, 예측 결과를 설명할 수 있음

 

피처(Feature) 중요도 시각화

sns.barplot(x = names , y = importances)
plt.show()

 

 

검증 점수 확인

1. 검증데이터에 대한 예측값 확인

val_predict = model.predict(x_valid)

2. mean_squared_error()를 사용해서 모델 성능 평가

from sklearn.metrics import mean_squared_error

mean_squared_error(y_valid, val_predict, squared=True)
>> 1.9672...

평균 제곱 오차(Mean Squared Error, MSE) : 실제 값과 예측 값 사이의 제곱 오차를 계산하여 평균을 취한 값
회귀 문제에서 모델의 예측 성능을 평가하는 지표로 널리 사용되는데, 오차의 크기를 고려하여 모델의 예측 성능을 평가

  1. y_valid는 검증 데이터셋의 타겟 변수이며, 실제 값과 예측 값의 비교를 위해 사용
  2. val_predict는 모델이 검증 데이터셋에 대한 예측을 수행한 값
  3. squared=True: 평균 제곱 오차를 계산할 때 제곱 오차를 사용할지 여부를 나타내는 매개변수
    True로 설정하면 평균 제곱 오차를 계산

함수 호출 결과, 실제 값과 예측 값 사이의 평균 제곱 오차가 반환됨
▶︎ 평균 제곱 오차는 값이 작을수록 모델의 예측이 실제 값과 가까운 것을 의미

 

 

728x90