Machine Learning - 투표기반 분류 모델 (Voting Classifiers) - Ensemble 앙상블
투류 분류기 (Voting Classifier)란
투표 분류기는 다양한 기본 모델 또는 추정기를 훈련시키고 각 기본 추정기의 결과를 집계하는 것을 기반으로 예측하는 기계 학습 추정기입니다. 집계 기준은 각 추정기 출력에 대한 투표의 결합된 결정이 될 수 있습니다.
분류 모델의 두 가지 유형 (직접 투표, 간접 투표)
분류 문제에는 두 가지 유형의 투표가 있습니다. 직접 투표 (Hard Voting)와 간접 투표 (Soft Voting)가 있습니다. 직접 투표 (Hard Voting)는 가장 높은 투표 수로 예측을 선택하는 것을 수반하는 반면 간접 투표 (Soft Voting)는 각 모형의 각 예측의 확률을 결합하여 가장 높은 총 확률을 갖는 예측을 선택하는 것을 수반합니다.
직접 투표 (Hard Voting)
직접 투표 (Hard voting)에 의한 분류는 Winner Take All (승자 독식) 시스템과 같습니다. 분류기에 의해 생성된 여러 출력 중 대다수는 모델의 최종 결과로 선택됩니다.
간접 투표 (Soft Voting)
대조적으로, 간접 투표 (Soft voting)는 모든 분류모델의 결과를 고려하는 투표 과정입니다. 간접 투표 (Soft voting)는 클래스 레이블에 대한 예측 확률을 합하고 합 확률이 가장 큰 최종 분류를 반환합니다.
Tutorial
1
2
3
4
5
6
7
8
|
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_moons
import matplotlibe.pyplot as plt
moons = make_moons(n_samples=5000, noise=0.1)
X, y = moons[0], moons[1]
plt.scatter(X[:, 0], X[:, 1], color=yellow)
|
cs |
sci-kit learn의 "moons" 데이터를 불러서 투표 기반 분류기를 테스트 해봅시다. 실제로 투표 기반 분류기의 성능이 나은지, 어떠한 첨가가 없는 raw 모델의 성능이 좋은지.
SVM, 랜덤 포레스트, KNN 분류기의 분류 정확도 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
svm_clf = SVC(kernel="rbf", probability=True)
svm_clf.fit(X_train, y_train)
rnd_clf = RandomForestClassifier(n_estimator=100, n_jobs=-1)
rnd_clf.fit(X_train, y_train)
knn_clf = KNeighborsClassifier()
knn_clf.fit(X_train, y_train)
print(svm_clf.score(X_test, y_test))
print(rnd_clf.score(X_test, y_test))
print(knn_clf.score(X_test, y_test))
|
cs |
SVM 정확도: 0.909
랜덤 포레스트 정확도: 0.906
KNN 정확도: 0.901
직접 투표 분류기의 정확도 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from sklearn.ensemble import VotingClassifier
# SVM, RF, KNN을 기반으로 "직접 (hard) 투표" 분류기 생성
voting_clf = VotingClassifier([
("svm_clf", svm_clf),
("rnd_clf", rnd_clf),
("knn_clf", knn_clf)
], voting="hard")
# 직접 투표 분류기 학습
voting_clf.fit(X_train, y_train)
voting_clf.score(X_test, y_test)
|
cs |
SVM, RF, KNN을 기반 직접 투표 분류기의 정확도: 0.908
간접 투표 분류기의 정확도 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from sklearn.ensemble import VotingClassifier
# SVM, RF, KNN을 기반으로 "간접 (soft) 투표" 분류기 생성
voting_clf = VotingClassifier([
("svm_clf", svm_clf),
("rnd_clf", rnd_clf),
("knn_clf", knn_clf)
], voting="soft")
# 직접 투표 분류기 학습
voting_clf.fit(X_train, y_train)
voting_clf.score(X_test, y_test)
|
cs |
SVM, RF, KNN을 기반 간접 투표 분류기의 정확도: 0.909
'공부 > 인공지능' 카테고리의 다른 글
GPT 4o vs GPT 4 무엇이 더 낫나요? (비용, 가격, 속도, 퍼포먼스, 텍스트 성능, 코드 성능, 이미지 성능 등) (4) | 2024.05.18 |
---|---|
AI 기술로 인한 마케팅 산업의 변화 (2) | 2024.02.18 |
Can New Technologies Help Students? (0) | 2021.03.10 |
H20 Driverless AI (코딩 없이 인공지능! 머신러닝!) (1) | 2021.02.15 |
Job Skills extraction with LSTM and Word Embeddings (0) | 2021.01.14 |
댓글