일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- DX컨설턴트
- KT에이블스쿨5기
- 자기개발
- KT에이블스쿨
- 판다스
- 파이썬기초
- IT인프라
- 인프라
- 딥러닝
- 머신러닝
- 정보화
- 데이터분석
- MachineLearning
- 아키텍처
- 교육
- 미니프로젝트
- 짧은생각
- deeplearning
- 데이터프레임
- 오답노트
- It
- 프로젝트
- 데이터
- 넘파이
- 데이터다듬기
- 데이터분석기초
- 데이터분석가
- 구조
- 데이터다루기
- 파이썬
- Today
- Total
꾸준히 성장하기
[D+44] 교육 | 머신러닝: 앙상블(Voting, Bagging, Boosting, Stacking) 본문
[D+44] 교육 | 머신러닝: 앙상블(Voting, Bagging, Boosting, Stacking)
data.dohii 2024. 4. 4. 20:06안녕하세요, 앙상블(Ensemble) 기법에 대해서 공부했습니다🔥
'통합은 힘이다'라는 말처럼, 여러 모델을 하나로 결합해 훨씬 강력한 예측력을 발휘하는 기법입니다.
이 기법을 깊이 파고들면서 보팅, 배깅, 부스팅, 그리고 스태킹이라는 네 가지 핵심 전략을 집중적으로 살펴보았습니다.
1. 보팅(Voting): 서로 다른 알고리즘
보팅은 서로 다른 알고리즘 기반의 여러 모델들이 예측한 결과를 통합하는 방법입니다.
하드 보팅은 가장 많은 모델이 도달한 결론을 최종 예측값으로 채택합니다.
소프트 보팅은 모든 모델의 예측 확률 평균을 내어 가장 높은 확률을 보인 값을 선택합니다. 간단히 말해, 다수결 또는 평균치를 통해 더 정교한 예측을 도모하는 것이죠.
2. 배깅(Bagging): 같은 알고리즘
배깅은 동일한 알고리즘의 여러 모델을 병렬로 학습시켜, 그 예측을 집계하는 방법입니다.
랜덤 포레스트(Random Forest)는 배깅의 대표적인 예입니다.
다수의 결정 트리를 조합하므로 과적합을 방지할 수 있습니다.
데이터의 일부를 무작위로 선택해 학습시키므로, 각 모델이 다양한 측면에서 데이터를 학습하게 됩니다.
# 랜덤 포레스트 예제 코드
from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier
from sklearn.metrics import mean_absolute_error, r2_score, confusion_matrix, classification_report
# 회귀 모델
model_reg = RandomForestRegressor(max_depth=5, n_estimators=100, random_state=1)
model_reg.fit(x_train, y_train)
y_pred_reg = model_reg.predict(x_test)
print(mean_absolute_error(y_test, y_pred_reg))
print(r2_score(y_test, y_pred_reg))
# 분류 모델
model_clf = RandomForestClassifier(max_depth=5, n_estimators=100, random_state=1)
model_clf.fit(x_train, y_train)
y_pred_clf = model_clf.predict(x_test)
print(confusion_matrix(y_test, y_pred_clf))
print(classification_report(y_test, y_pred_clf))
3. 부스팅(Boosting): 점진적 개선의 힘
부스팅은 이전 모델의 오류를 다음 모델이 보완하도록, 순차적으로 모델을 학습시키는 방식입니다.
배깅에 비해 성능이 좋지만, 속도가 느리고 과적합 발생 가능성이 있습니다.
XGBoost와 LightGBM은 이 전략을 사용하는 대표적인 알고리즘입니다.
# XGBoost 예제 코드
from xgboost import XGBRegressor, XGBClassifier
from sklearn.metrics import mean_absolute_error, r2_score, confusion_matrix, classification_report
# 회귀 모델
model_xgb_reg = XGBRegressor
model_xgb_reg.fit(x_train, y_train)
y_pred_xgb_reg = model_xgb_reg.predict(x_test)
print(mean_absolute_error(y_test, y_pred_xgb_reg))
print(r2_score(y_test, y_pred_xgb_reg))
# 분류 모델
model_xgb_clf = XGBClassifier(max_depth=5, n_estimators=100, random_state=1)
model_xgb_clf.fit(x_train, y_train)
y_pred_xgb_clf = model_xgb_clf.predict(x_test)
print(confusion_matrix(y_test, y_pred_xgb_clf))
print(classification_report(y_test, y_pred_xgb_clf))
4. 스태킹(Stacking)
여러 모델의 예측 값을 최종 모델의 학습 데이터로 사용하여 예측하는 방법입니다.
예를 들어, KNN, Logistic Regression, XGBoost 모델을 사용해 4종류 예측값을 구한 후 이 예측 값을 최종 모델인 Randomforest 학습 데이터로 사용하는 것입니다.
스태킹은 캐글(Kaggle) 같은 미세한 성능 차이로 승부를 결정하는 대회에서 사용됩니다.
앙상블 기법을 깊이 탐구하며, 모델의 성능을 높일 수 있는 방법을 배워보았습니다.
이 경험을 통해 더 깊이 있고 다양한 해결책을 모색할 수 있게 되었습니다.
내일은 앞서 배운 머신러닝을 바탕으로 미니프로젝트를 시작하는데 너무 기대가 됩니다😀
'KT 에이블스쿨 5기 > 교육' 카테고리의 다른 글
[D+51] 교육 | 머신러닝과 딥러닝 비교(with 지도학습, 비지도학습) (0) | 2024.04.11 |
---|---|
[D+46] 교육 | 머신러닝: 비지도학습 (0) | 2024.04.06 |
[D+43] 교육 | 머신러닝: Random Search, Grid Search (0) | 2024.04.03 |
[D+42] 교육 | 머신러닝: 하이퍼파라미터 튜닝 (0) | 2024.04.02 |
[D+41] 교육 | 머신러닝: Decision Tree와 Logistic Regression (0) | 2024.04.01 |