| 하드 보팅 | 소프트 보팅 |
|---|---|
| 다수결 원칙으로, 예측한 결과값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결과값으로 선정하는 것 | 분류기들의 레이블 값 결정 확률의 평균값들 중 확률이 가장 높은 레이블 값을 최종 보팅 결과 값으로 선정하는 것 |

| 범주형 데이터 | 연속형 데이터 |
|---|---|
| 투표 방식으로 결과 집계 | 평균으로 결과 집계 |
💡대표 알고리즘 : Random Forest
| 보팅 | 배깅 |
|---|---|
| 각각 다른 알고리즘을 이용한 분류기를 결합하는 것 | 같은 알고리즘을 이용한 분류기가 데이터 샘플링을 각자 다르게 가져가며 학습을 수행하여 보팅을 수행하는 것 |

💡 Forest의 의미
나무가 모여 숲을 이루듯 Decision Tree가 여러 개 모여 Forest가 됨
| ① | ② |
|---|---|
| 랜덤하게 데이터 샘플링 | 개별 모델이 트리를 구성할 때 분할 기준이 되는 Feature를 랜덤하게 선정 |
![]() | 무작위로 뽑은 n개의 Feature들 중에서 가장 정보이득이 큰 Feature를 기준으로 트리 분할 → 개별 모델마다 다른 구조의 트리를 구성할 것임 |
주요 하이퍼파라미터
💡대표 알고리즘 : XGBoost, LightGBM
| AdaBoost | Gradient Boosting |
|---|---|
| - 오류 데이터에 가중치를 부여하면서 부스팅 수행 | - 경사하강법으로 가중치 업데이트 - 이전 합성 분류기의 데이터 별 오류를 예측하는 새로운 약한 분류기를 학습 |
💡경사하강법 : 반복 수행을 통해 오류를 최소화할 수 있도록 가중치의 업데이트 값을 도출하는 기법
| 원리 | 정리 |
|---|---|
![]() | ![]() |
주요 하이퍼파라미터
# lightgbm 설치
#!pip install lightgbm
#불러오기
from lightgbm import LGBMClassifier
# 선언하기
model = LGBMClassifier(max_depth=5, random_state=1, verbose=-1)
# 학습하기
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))
ex) KNN, Logistic Regression, XGBoost 모델로 4종류 예측값을 구하고
이 예측값을 최종 모델인 Randomforest 학습 데이터로 사용하는 것
• 알고리즘 함수: sklearn.ensemble.RandomForestRegressor
• 성능평가 함수: sklearn.metrics.mean_absolute_error, sklearn.metrics.r2_score 등
# 불러오기
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error, r2_score
# 선언하기
model = RandomForestRegressor(max_depth=5, n_estimators=100, random_state=1)
# 학습하기
model.fit(x_train, y_train)
# 예측하기
y_pred = model.predict(x_test)
# 평가하기
print(mean_absolute_error(y_test, y_pred))
print(r2_score(y_test, y_pred))
• 알고리즘 함수: xgboost.XGBRegressor
• 성능평가 함수: sklearn.metrics.mean_absolute_error, sklearn.metrics.r2_score 등
# xgboost 설치
#!pip install xgboost
# 불러오기
from xgboost import XGBRegressor
from sklearn.metrics import mean_absolute_error, r2_score
# 선언하기
model = XGBRegressor(max_depth=5, n_estimators=100, random_state=1)
.
.
.
• 알고리즘 함수: sklearn.ensemble.RandomForestClassifier
• 성능평가 함수: sklearn.metrics.confusion_matrix, sklearn.metrics.classification_report 등
• 알고리즘 함수: xgboost.XGBRegressor
• 성능평가 함수: sklearn.metrics.mean_absolute_error, sklearn.metrics.r2_score 등
.
.
#평가하기
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
# Feature 중요도 확인
model.feature_importances_
# 시각화
plt.barh(list(x), model.feature_importances_)
plt.show()