여러 머신러닝 모델을 연결하여 더 강력한 모델을 만드는 기법
일반화 성능을 높이는 것이 핵심
모델의 오류는 주로 Bias와 Variance로 이루어지므로 이를 최소화할 수 있는 방안을 찾음
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
lr = LogisticRegression(solver='liblinear')
knn = KNeighborsClassifier(n_neighbors=8)
voting_clf = VotingClassifier(estimators=[('LR', lr), ['knn',knn], vointg= 'hard'])
voting_clf.fit(X_train, y_train)
voting_clf = VotingClassifier(estimators=[('LR',lr),['knn',knn], voting= 'soft'])
voting_clf.fit(X_train, y_train)
bootstrap aggregating의 약자
bootstrap은 우선 복원 추출로 여러 개의 비슷한 데이터를 만든다
복원 추출이므로 하나의 데이터셋에는 같은 샘플이 여러 개 들어있을 수 있음
통합은 평균(예측의 경우) 또는 투표(분류의 경우)를 이용
배깅은 통합하는 모델 각각에 동등한 가중치를 적용
각 표본이 유사하여 예측력이 떨어질 수 있다
# Decision Tree
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier()
tree.fit(X_train,y_train)
# Bagging
from sklearn.ensemble import BaggingClassifier
bag = BaggingClassifier(DecisionTreeClassifier(), n_estimators=10)
bag.fit(X_train, y_train)
랜덤포레스트는 기본적으로 배깅과 유사한 절차를 거치나, 표본을 더 다양하게 만든다
표본마다 독립변수 일부만 랜덤하게 추출하여 서로 다른 모델을 만들기 때문에 일반적으로 예측력이 더 좋아짐
장점
단점
from sklearn.ensemble import RandomForestClassifier
forest = RandomClassifier(n_estimators=10)
forest.fit(X_train,y_train)
AdaBoostRegressor
사용from sklearn.ensemble import AdaBoostClassifier
ab = AdaBoostClassifier(n_estimators=10)
ab.fit(X_train, y_train)
GradientBoostingRegressor
사용from sklearn.ensemble import GradientBoostingClassifier
gb = GradientBoostingClassifier(n_estimators=10)
gb.fit(X_train,y_train)
from xgboost import XGBClassifier
xgb = XGBClassifier(n_estimators=10)
xgb.fit(X_train, y_train)
from lightbgm import LGBMClassifier
lightgbm = LGBMClassifier(n_estimators=10)
lightgbm.fit(X_train, y_train)