Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 그로스해킹
- sklearn
- 데이터분석
- aarrr
- 한장으로끝내는비즈니스모델100
- pmf
- CAC
- 서말리포켓
- 비즈니스모델
- 활성화
- 인게이지먼트
- 핀테크
- 퍼널분석
- 리텐션
- 선정산서비스
- retention
- allra
- 바로팜
- mysql설치 #mysql #mysqluser #mysqlworkbench
- 셀프스토리지
- 올라
- activation
- 역설구조
- model_selection
- BM분석
- 머신러닝
- 코호트
- 팔방이익구조
- fundbox
- 전환율
Archives
- Today
- Total
데이터로그😎
[지도학습] 4-1. Voting 본문
앙상블의 한 종류인 보팅에 대해 글을 쓸 것. 앙상블의 종류에 대해서는 이전에 발행한 글을 참고.
2023.09.04 - [머신러닝/지도 학습_분류] - 4. Ensemble (앙상블)
4. Ensemble (앙상블)
여러개 분류기(Classifier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법 Ensemble의 목표: 다양한 분류기의 예측결과를 결합함으로써 단일 분류기보다 신뢰성이 높은
fine-1004.tistory.com
보팅(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. 기타 공부 > #4.2. 머신러닝' 카테고리의 다른 글
[지도학습] 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 |