Open vmtmxmf5 opened 3 years ago
voting 독립적인 분류기들이 서로 다른 오차를 줄인다 bagging 부트스트랩을 사용해 모델간의 상관관계를 줄여 분산을 감소시킨다
rf = RandomForestClassifier()
lr = LogisticRegression()
svc = SVC(probability=True)
voting_clf = VotingClassifier(
estimators=[('lr', lr),
('rf', rf),
('svc', svc)],
voting='soft'
)
앙상블 모델
데이터 로드
평가지표
voting : 투표를 통해 결과를 도출
"(y - y_hat)"이 가장 작은 값을 뽑은 모델의 "(y - y_hat)"만 모아서 새로운 mse 계산
다른 알고리즘을 조합해서 사용
반드시 Tuple 형태로 만들어야 함
voting={'hard', 'soft'}
hard voting은 [1, 1, 1, 0, 0]으로 예측이 되면 다수 클래스인 1을 채택(결과)
soft voting 모델마다 각 클래스가 나올 확률의 값을 계산해서, 각 y_hat마다 모델들의 특정 클래스가 나올 평균 확률을 비교해서 클래스를 정한다.
각각의 확률들은 독립적인 모델들의 확률이기 때문에 평균을 낸 값들을 더해도 반드시 1이 된다
bagging : 샘플 중복 생성을 통해 결과 도출
같은 알고리즘 내에서 다른 샘플 조합을 사용
scaling 필요없고 bootstrapping도 있으므로 nan값 예측에 써도 된다
boosting : 이전 오차를 보완하면서 가중치를 부여함
outlier에 민감하다. 왜? 오분류를 보완하기 위해 가중치를 부여하기 때문에
overfitting 걱정은 ㄴㄴ. 복잡도가 일정 정도 올라가다가 거의 수렴해버림
AdaBoost : 적응형 부스팅. learning rate 자동조절.
y가 패턴 없이 분포해있을 때 안전한 모델링 방법
GradientBoost : 점점 강해지는 부스팅
LightGBM
XGBoost : GBM보다 빠르고 성능 향상, 평가방식에 e를 수식에 넣음
stacking : 여러 모델을 기반으로 예측된 결과를 통해 meta모델이 다시 한번 예측
개별 모델이 예측한 데이터를 기반으로 final_estimator가 종합해서 예측을 수행한다
overfitting 가능성이 있다
Weighted Blending (모델이 아님, 하이퍼파라미터임)
각 모델의 y_hat 에 가중치를 곱해서 최종 output을 계산한다
= 모델에 가중치를 조정 := elastic net
=> 모든 가중치의 합은 1.0