RandomForestRegressor
수많은 의사결정나무를 모아 숲을 구성하는 '랜덤 포레스트'
(각각의 의사결정나무의 특징들을 무작위로 선정하기에 '랜덤' 이 붙음)
- 앙상블 학습 기반의 회귀 모델로, 여러 개의 결정 트리(Decision Tree)를 사용하여 예측을 수행하는 모델
- 앙상블 학습은 여러 개의 모델을 조합하여 더 강력하고 안정적인 예측 모델을 만드는 기법이다 👉 더 높은 예측 성능 & 일반화 능력
- 랜덤 포레스트는 배깅(Bagging)이라는 앙상블 방법을 기반으로 한다
🔍 배깅이란?
- 훈련 데이터를 임의로 추출하여 복원 추출을 통해 부분집합을 생성하고,
- 각각의 부분집합에서 독립적으로 모델을 학습시킴
- 이때, 복원추출방법은 중복을 허용하기 때문에 단일 데이터가 여러번 선택될 수도 있다
특징과 장점
각 데이터셋에 대해 Decision Tree를 독립적으로 구축하고, 이렇게 구축된 다수의 결정 트리를 조합하여 최종 예측 결과를 산출
이 모델은 다중 피처들의 상호작용을 고려하고, 피처의 중요도를 제공하여 변수 선택이나 피처 엔지니어링에 유용하게 사용될 수 있음
또한, 과적합에 강하고 예측 성능이 뛰어남(👍)
RandomForest 모델 사용 순서
- 모델을 사용하기 위해 RandomForestRegressor 모듈을 불러오기
- RandomForestRegressor 클래스의 인스턴스를 생성하여 model 변수에 할당
- 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) : 실제 값과 예측 값 사이의 제곱 오차를 계산하여 평균을 취한 값
회귀 문제에서 모델의 예측 성능을 평가하는 지표로 널리 사용되는데, 오차의 크기를 고려하여 모델의 예측 성능을 평가
- y_valid는 검증 데이터셋의 타겟 변수이며, 실제 값과 예측 값의 비교를 위해 사용
- val_predict는 모델이 검증 데이터셋에 대한 예측을 수행한 값
- squared=True: 평균 제곱 오차를 계산할 때 제곱 오차를 사용할지 여부를 나타내는 매개변수
True로 설정하면 평균 제곱 오차를 계산
함수 호출 결과, 실제 값과 예측 값 사이의 평균 제곱 오차가 반환됨
▶︎ 평균 제곱 오차는 값이 작을수록 모델의 예측이 실제 값과 가까운 것을 의미
728x90
'Machine Learning > scikit-learn' 카테고리의 다른 글
[교차 검증] K-폴드 교차 검증 (0) | 2023.08.17 |
---|---|
[데이터 전처리] MinMaxScaler를 이용한 데이터 정규화 예제 (0) | 2023.08.17 |
[하이퍼 파라미터] hyper parameter란? (0) | 2023.08.17 |
[회귀] LinearRegression (선형 회귀 모델) & 회귀 평가 지표 (0) | 2023.08.15 |
[데이터 분할] 학습 세트와 검증 세트 분할 : train_test_split() (0) | 2023.08.14 |