오늘의 노래 추천 🦁
- 아티스트
- Red Velvet (레드벨벳)
- 앨범
- The Red Summer - Summer Mini Album
- 발매일
- 1970.01.01
정말 동물원 or safari 느낌이 나는 첫 귀에도 듣기 좋은 곡
DAY 4
[ Ensemble model ]
앙상블
여러 개의 ML model 을 연결해 더 강력한 model 을 만드는 기법
* 분류와 회귀에 모두 사용 가능
3가지 Ensemble 기법 ㅡ> " Voting, Bagging, Boosting "
[ Voting ]
Ensemble Voting 방식
서로 다른 모델을 결합해 투표를 통해 최종 예측 결과를 결정
Hard Voting VS Soft Voting
voting의 종류
ㅡ> 더 학습률이 높고 최적화됨
[ Bagging ]
Ensemble Bagging 방식
'같은 알고리즘' 으로 여러개의 모델을 만들어 투표를 통해 최종 예측 결과를 결정
ex ) random forest
[ Boosting ]
Ensemble Boosting 방식
성능이 낮은 여러 모델 이용
1. 첫 모델이 예측하면 결과에 따라 오차 데이터에 '가중치' 부여
2. 가중치가 다음 모델에 영향을 주고 오차 데이터에 집중해
ㅡ> 개선된 분류 규칙을 만드는 것 반복, 성능 향상된 모델을 만듬
ex ) AdaBoost, GradientBoost, XGBoost
voting과 Bagging은 병렬 구조로 독립적인 반면
Boosting은 이전 모델의 오차를 고려해 순차 처리하는 연속 앙상블임
[ RandomForest 유방암 데이터 실습 ]
유방암 데이터를 이용해 100개의 트리로 구성된 RandomForest 모델로 학습,
특징 중요도를 구하고 bar 차트로 표현
ㅡ RandomForest ㅡ
여러 개의 결정 트리 분류 모델이 각자의 데이터를 샘플링 해 개별적으로 학습
ㅡ> 모든 분류기가 soft voting 을 통해 예측 수행
서로 다른 방향의 과대적합 모델들을 만들어 평균을 내고 일반화
* 분류와 회귀 모두 사용 가능
RandomForestClassifier ( n_estimators, random_state )
* random_state = 100 으로 설정
ㅡ 드라이브 마운팅 후 data 불러오기 ㅡ
pd.read_csv
ㅡ 불필요한 column 삭제 ㅡ
drop ( axis=1 )
ㅡ 답지 데이터 mapping ㅡ
map ()
ㅡ 답지 데이터 시각화 ㅡ
plt.hist ()
ㅡ Decision Tree model 생성 ㅡ
DecisionTreeClassifier
ㅡ knn, LR, voting 모델 import ㅡ
VotingClassifier, KNeighborsClassifier, LogisticRegression
VotingClassifier 은 분류/회귀에서 분류 모델 사용
ㅡ knn, lr 개별 모델 생성 ㅡ
KNeighborsClassifier, LogisticRegression
max_iter ㅡ> 학습 과정에서 사용할 최대 반복 횟수 ( 기본 100 )
각각 n_neighbors, max_iter 값 설정
ㅡ Voting 앙상블 모델 생성 ㅡ
VotingClassifier
estimators : 사용할 개별 모델들을 리스트 형식으로 정의
Voting 방식은 soft 로 지정
ㅡ 앙상블/개별 모델 학습, 예측 ㅡ
fit (), predict ()
ㅡ 각 모델 별 score 출력 ㅡ
accuracy_score ()
ㅡ RandomForest parameter ㅡ
n_estimators : tree 개수 ( 기본 100 )
max_features : DT 최종 결과 개수
그 외 max_depth, min_samples_split, min_samples_leaf 등
ㅡ RandomForest 모델 생성 및 학습 ㅡ
RandomForestClassifier
ㅡ RandomForest 정확도 출력 ㅡ
accuracy_score ()
GridSearchCV
ㅡ RandomForest hyper parameter tuning ㅡ
파라미터 튜닝
ㅡ params 파라미터 설정 ㅡ
GridSearCV, params
n_estimators 기본값 100, n_jobs=-1 모든 cpu 코어를 통해 학습
ㅡ 모델 생성, 학습, 평가 ㅡ
GridSearCV, fit
ㅡ 결과 출력 ㅡ
cv_results_
cv_results_를 DataFrame 형태로 저장하고 정보를 정렬해 필요한 값 출력
[ Adaboost 유방암 데이터 실습 ]
유방암 데이터를 이용해 100개의 트리로 구성된 Adaboost 모델로 학습,
특징 중요도를 구하고 bar 차트로 표현
ㅡ AdaBoost ㅡ
Decision Tree 기반 모델로 각 트리들이 독립적으로 존재함
ㅡ> 제 해결
들어 평일반화
* 분류와 회귀 모두 사용 가능
Decision Tree 기반의 모델 ㅡ> 각 트리들이 독립적으로 존재
ㅡ AdaBoosting ㅡ
Ensemble Boosting
ㅡ library import, AdaBoost model 생성 ㅡ
AdaBoostClassifier
learning_rate ( 학습률 ) 은 보통 0.1, 0.2 n_estimators 는 기본값 50
ㅡ Cross Validadtion 교차 검증 ㅡ
cross_val_score
ㅡ 모델 학습, 예측, 평가 ㅡ
fit, predict, accuracy_score
ㅡ AdaBoost 특성 중요도 출력 ㅡ
feature_importances_
feature_importances_ 를 이용해 특성 중요도를 구하고 DataFrame 형태로 변환 후 정렬해 출력
[ GBM 유방암 데이터 실습 ]
유방암 데이터를 이용해 100개의 트리로 구성된 GBM 모델로 학습,
특징 중요도를 구하고 bar 차트로 표현
ㅡ GBM ㅡ
여러개의 Decision Tree 를 묶어 강력한 모델을 만드는 Ensemble 기법
ㅡ> AdaBoost 와 유사하지만 AdaBoost 와 달리 강력한 사전 가지치기 사용
RandomForest 보다 성능이 뛰어난 경우가 많지만,
학습시간이 오래걸리고 parameter tuning 에 많은 노력 필요
* 분류와 회귀 모두 사용 가능
library import 이후 GBM 분류 모델 생성 함수를 호출해 객체를 생성하고
소괄호에 매개변수와 hyper parameter를 설정
n_estimators 트리 model의 개수, learning_rate 학습률 ( 가중치 갱신의 변동폭 조정 )
ㅡ GBM ㅡ
Ensemble Boosting
ㅡ GBM 모델 import 후 생성 ㅡ
GradientBoostingClassifier
ㅡ Cross Validation 교차 검증 ㅡ
cross_val_score ()
ㅡ 모델 학습, 예측, 평가 ㅡ
fit, predict, accuracy_score
ㅡ GBM 특성 중요도 출력 ㅡ
feature_importances_
feature_importances_ 를 이용해 특성 중요도를 구하고 DataFrame 형태로 변환 후 정렬해 출력
[ XGBoost 유방암 데이터 실습 ]
유방암 데이터를 이용해 100개의 트리로 구성된 XGBoost모델로 학습,
특징 중요도를 구하고 bar 차트로 표현
ㅡ XGBoost ㅡ
가장 각광받는 앙상블 모델 알고리즘 중 하나
GBM 을 기반으로 하지만 GBM 에서 제공하지 않는
"Early Stopping" 기능과 과대적합 방지를 위한 규제가 포함
ㅡ> GBM 의 단점인 느린 학습 시간과 과대적합 문제 해결
서로 다른 방향의 과대적합 모델들을 만들어 평균을 내고 일반화
* 분류와 회귀 모두 사용 가능
** sklearn 에서 제공하지 않음
ㅡ XGBoost ㅡ
Ensemble Boosting
ㅡ XGBoost 모델 import 후 생성 ㅡ
XGBClassifier
sklearn 에서 제공하지 않기 때문에
!pip install xgboost 를 이용해 설치 필요
ㅡ Cross Validation 교차 검증 ㅡ
cross_val_score ()
ㅡ 모델 학습, 예측, 평가 ㅡ
fit, predict, accuracy_score
[ XGBoost Early Stopping 조기중단 ]
유방암 데이터를 이용해 100개의 트리로 구성된 XGBoost모델로 학습,
특징 중요도를 구하고 bar 차트로 표현
ㅡ XGBoost early Stoppingㅡ
Ensemble Boosting
train 데이터를 split 해서 validation data 생성
ex) X_train ㅡ> X_tra, X_val
ㅡ train 데이터 split ㅡ
train_test_split
train 데이터를 split 해서 validation 데이터를 만듬
ㅡ xgb 모델 생성 ㅡ
XGBClassifier
ㅡ 평가를 수행할 data set 만들기 ㅡ
eval_set
[ ( train 문제, train 답지 ), ( val 문제, val 답지 ) ]
ㅡ early stopping 모델 학습 ㅡ
fit, parameter
조기 종료 parameter ㅡ> early_stopping_rounds, early_metric, early_set
분류 모델의 평가 지표 ㅡ> logloss, error, auc, aucpr
fit ( x, y, 데이터 셋, early stopping parameter )
소괄호에 파라미터값을 지정해줘야함
logloss, 손실값이 감소하다 어느순간 증가하는 것을 볼 수 있음
ㅡ 모델 예측 ㅡ
predict_proba ()
[ 최종 accuracy 결과 ]
Ensemble Boosting

BYE