데이터로그😎
4-1. Voting 본문
앙상블의 한 종류인 보팅에 대해 글을 쓸 것. 앙상블의 종류에 대해서는 이전에 발행한 글을 참고.
2023.09.04 - [머신러닝/지도 학습_분류] - 4. Ensemble (앙상블)
보팅(Voting)
- 서로 다른 알고리즘을 가진 분류기 결합(Linear, KNN,SVM…)
- 하나의 dataset
- 하드보팅(다수결), 소프트 보팅(확률의 평균)
- 하드보팅: 다수결. 다수의 분류기가 결정한 예측값을 최종 보팅 결과값으로 선정
- 소프트보팅: 분류기들이 레이블 값 결정 확률을 모두 더해서 평균한 뒤, 이들 중 확률이 가장 높은 레이블 값을 최종 보팅 결과값으로 선정
파라미터
- estimators:
- 앙상블에 사용할 개별 모델들을 리스트의 형태로 입력
- 튜플형태로 입력: (모델이름, 모델 객체)
- [('LR',lr_clf),('KNN',knn_clf)]
- voting:
- hard
- soft
데이터 불러오기
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
import pandas as pd
# 데이터 불러오기
cancer = load_breast_cancer()
data_df = pd.DataFrame(cancer.data, columns=cancer.feature_names)
data_df['target'] = cancer.target
# train, test 데이터 쪼개기
X_train , X_test , y_train , y_test = train_test_split(
data_df.drop("target", axis=1),
data_df['target'],
random_state=42
)
voting classifier 학습
voting은 여러개의 분류기를 결합하므로, 여러개 알고리즘 import
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
lr_clf = LogisticRegression()
knn_clf = KNeighborsClassifier(n_neighbors=3, n_jobs =1)
estimators = [('LR',lr_clf),('KNN',knn_clf)]
vo_clf = VotingClassifier(
estimators = estimators,
voting='soft')
vo_clf.fit(X_train, y_train
voting model의 성능 평가
from sklearn.metrics import accuracy_score
pred = vo_clf.predict(X_test)
print('VotingClassifier의 정확도: {:.4f}'.format(accuracy_score(y_test, pred)))
>>>VotingClassifier의 정확도: 0.9650
개별 모델(LR, KNN) 성능평가
for es in vo_clf.estimators_:
pred = es.predict(X_test)
class_name = es.__class__.__name__
print(f'{class_name} 정확도: {accuracy_score(y_test, pred)}')
>>>LogisticRegression 정확도: 0.972027972027972
KNeighborsClassifier 정확도: 0.9300699300699301
- Voting 분류기(0.965)가 다른 각각의 분류기(0.97, 0.93)보다 무조건 성능이 좋은 것은 아님.
- 그러나 전반적으로 다른 머신러닝 알고리즘에 비해 뛰어난 예측성능.
- 앙상블에서는 과적합이 되기 쉽다는 결정트리의 단점을 극복하기 위해 수많은 분류기를 결합해서 다양한 상황에 학습하게 함.
- 즉, 결정 트리 알고리즘의 장점은 그대로 취하고 단점은 보완함으로써 편향-분산 트레이드 오프의 효과 극대화
'머신러닝 > 지도 학습' 카테고리의 다른 글
4-3. Boosting (부스팅) (0) | 2023.09.04 |
---|---|
4-2. Bagging (배깅) (0) | 2023.09.04 |
4. Ensemble (앙상블) (0) | 2023.09.04 |
3. Logistic Regression (0) | 2023.09.04 |
2. Decision Tree (1) | 2023.09.04 |