머신러닝 (Machine Learning)/분류(Classification) 분석

앙상블 - 보팅(Voting)

DS지니 2021. 2. 21. 22:08
728x90
반응형

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 회귀모델이면 단순 평균으로 권장함.

728x90
반응형