배깅
- 중복을 허용한 랜덤 샘플링으로 만든 훈련 세트(부트스트랩)를 사용하여 각 내부 모델을 다르게 학습시킴
- 분류기가 predict_proba() 메소드를 지원하는 경우 확률값을 평균하여 예측을 수행한다. (소프트보팅 차용)
- 없는 경우 가장 빈도가 높은 클래스 레이블이 예측 결과가 된다. (하드보팅 차용)
사용예제
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
# 데이터 로드
cancer = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state=66)
- 유방암 데이터를 불러오고 학습데이터와 테스트데이터로 나눈다.
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import BaggingClassifier
# oob_score : 부스트래핑에 포함되지 않는 샘플을 기반으로 훈련된 모델을 평가
model = BaggingClassifier(LogisticRegression(solver='liblinear'), n_estimators=100,oob_score=True,n_jobs=1,random_state=42)
model.fit(X_train, y_train)
# 평가
print("훈련 세트 정확도 : {:.3f}".format(model.score(X_train, y_train)))
print("테스트 세트 정확도 : {:.3f}".format(model.score(X_test, y_test)))
print("OOB 샘플의 정확도 : {:.3f}".format(model.oob_score_))
==결과==
훈련 세트 정확도 : 0.953
테스트 세트 정확도 : 0.951
OOB 샘플의 정확도 : 0.946
- LogisticRegression을 내부 모델로 가지는 배깅분류기를 만든다. (최적화에 사용할 알고리즘(solver)는 liblinear)
- n_estimators가 100개이므로 모델은 100개 포함되어 있다.
- n_jobs 값을 증가시키면 내부적으로 멀티 프로세스를 사용하여 작업을 수행한다.
'🛠 기타 > Data & AI' 카테고리의 다른 글
이미지 보강 (ImageDataGenerator) (0) | 2020.08.14 |
---|---|
합성곱 신경망(CNN) - 기본구조 구현 (0) | 2020.08.14 |
[scikit-learn 라이브러리] RandomForestClassifier (랜덤 포레스트 분류) (1) | 2020.08.12 |
[scikit-learn 라이브러리] VotingClassifier (보팅 분류기) (0) | 2020.08.12 |
앙상블 학습 (0) | 2020.08.12 |