1. 보팅 방법 (voting methods)
하드 보팅(Hard Voting) | 소프트 보팅(Soft Voting) |
최빈값 | 평균값 |
예측한 결괏값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정 만약 레이블 값이 2개일 때, 레이블 1번 과 레이블 2번 중 다수의 레이블로 예측. |
분류기들의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 확률이 가장 높은 레이블 값을 최종 보팅 결괏값으로 선정. 일반적으로 이 방법을 사용함. 만약 레이블 값이 2개일 때, 레이블 값이 1번인 경우의 확률의 평균과 레이블 값이 2번인 경우의 확률의 평균 중 높은 평균의 레이블로 예측. |
일반적으로 하드 보팅보다는 소프트 보팅의 예측 성능이 좋아 더 많이 사용된다.
2. Result Aggregating
1) Majority voting
- 0과 1 중 다수인 것을 최종 결괏값으로 선정
2) Weighted voting (weight = OOB accuracy(train acc) of individual models)
- 결괏값이 1인 OOB 점수의 확률과 0인 OOB 점수의 확률 중 큰 값을 최종 결괏값으로 선정
3) Weighted voting (weight = predicted probability for each class)
- 0과 1로 예측하는 경우의 Probability를 n으로 나눈 것들 중 큰 값을 최종 결괏값으로 선정
+) Stacking
이전 방식들보다 더 좋은 성능을 내는 또 다른 방식이다. stack 이란 '쌓다'라는 의미이다. 예측값을 또 다른 입력으로 다시 받아 매핑하여 Meta-Classifier 를 만듦.
예측값 P1(x),P2(x),...,Pn(x)를 정답이 Pf가 되는 g(P1(x),P2(x),...,Pn(x)) 라는 Meta learner(Meta-Classifier/Meta-Regressor)를 만든다. (Training set이기 때문에 정답을 이미 알고있다.)
즉, 개별적인 모델도 인공신경망으로 만들고, 부트스트랩 개수만큼의 차원의 벡터를 입력으로 해서 실제 정답을 예측하는 메타러너를 또 한번 만드는 것이 Stacking이다.
3. 보팅 분류기 (Voting Classifier) - Code
# 로지스틱회귀, KNN 사용
lr_clf = LogisticRegression()
knn_clf = KNeighborsClassifier(n_neighbors=5)
# soft voting
vo_clf = VotingClassifier(estimators=[('LR',lr_clf), ('KNN',knn_clf)], voting='soft')
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.2, random_state = 10)
# VotingClassifier 학습/예측/평가
vo_clf.fit(X_train, y_train)
pred = vo_clf.predict(X_test)
# Voting 분류기 정확도
print('Voting 분류기 정확도: {0:.4f}'.format(accuracy_score(y_test, pred)))
# 개별 모델의 학습/예측/평가
classifiers = [lr_clf, knn_clf]
for classifier in classifiers :
classifier.fit(X_train, y_train)
pred = classifier.predict(X_test)
class_name = classifier.__class__.__name__
print('{0} 정확도: {1:.4f}'.format(class_name, accuracy_score(y_test,pred)))
▶결론
보팅 분류기의 정확도가 개별 분류기 정확도보다 높게 나왔지만, 항상 무조건 높게 나오는 것은 아님을 주의!
앙상블 방법이 전반적으로 좋은 예측 성능을 갖는 경우가 많을 뿐, 데이터의 특성과 분포 등 다양한 요건에 따라 오히려 기반 분류기 중 가장 좋은 분류기의 성능이 더 나은 경우가 나올 수도 있음.
보통 일반적인 상황에서는 분류모형이면 Majority 회귀모델이면 단순 평균으로 권장함.
'머신러닝 (Machine Learning) > 분류(Classification) 분석' 카테고리의 다른 글
앙상블 - Random Forest (0) | 2021.03.02 |
---|---|
앙상블 - 배깅(Bagging) (0) | 2021.03.01 |
앙상블(Ensemble) (0) | 2021.02.21 |
분류 관련 Youtube (0) | 2021.02.14 |
결정 트리의 과적합 (Overfitting) 시각화로 이해하기 (0) | 2021.02.14 |