일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 교차 검증
- reinforcement learning
- 자연어 처리
- 지도 학습
- 활성화 함수
- python
- AI
- 강화학습
- 차원 축소
- 딥러닝
- Machine Learning
- 인공지능
- 손실 함수
- Deep learning
- GRU
- 머신러닝
- 회귀
- 과적합
- LSTM
- Q-Learning
- 머신 러닝
- q-러닝
- 신경망
- 최적화
- 강화 학습
- CNN
- 인공 신경망
- rnn
- 데이터 전처리
- 정규화
- Today
- Total
move84
머신러닝 기초 - 보팅 분류기: 하드 보팅 vs 소프트 보팅 본문
🤖 머신러닝(Machine Learning)은 데이터를 기반으로 학습하고 예측하는 기술이다. 머신러닝 모델(Machine Learning model)은 다양한 방식으로 데이터를 분석하고, 그 결과를 활용하여 새로운 데이터에 대한 예측을 수행한다. 이 중 보팅 분류기(Voting Classifier)는 여러 개의 개별 모델(individual models)의 예측을 결합하여 최종 예측을 수행하는 앙상블 학습(Ensemble Learning) 기법 중 하나이다.
🗳️ 보팅 분류기는 여러 모델의 예측을 '투표'를 통해 결합한다. 각 모델의 예측 결과를 집계하여 최종 예측을 결정하는 방식은 크게 두 가지로 나뉜다: 하드 보팅(Hard Voting)과 소프트 보팅(Soft Voting).
하드 보팅 (Hard Voting): 각 모델이 예측한 클래스(class)를 그대로 사용하여 다수결 투표를 진행한다. 즉, 가장 많은 모델이 선택한 클래스를 최종 예측으로 결정한다.
- 예시: 3개의 모델이 있다고 가정한다. 모델 1과 모델 2가 'A' 클래스를 예측하고, 모델 3이 'B' 클래스를 예측했다면, 하드 보팅은 'A' 클래스를 최종 예측으로 선택한다.
소프트 보팅 (Soft Voting): 각 모델이 예측한 클래스에 대한 확률(probability)을 사용하여 가중 평균(weighted average)을 계산한다. 이 확률을 기반으로 가장 높은 평균 확률을 가진 클래스를 최종 예측으로 선택한다.
- 예시: 3개의 모델이 'A' 클래스를 예측할 확률이 각각 0.7, 0.6, 0.2이고, 'B' 클래스를 예측할 확률이 각각 0.3, 0.4, 0.8이라고 가정한다. 소프트 보팅은 각 클래스의 평균 확률을 계산한다: 'A' 클래스: (0.7 + 0.6 + 0.2) / 3 = 0.5, 'B' 클래스: (0.3 + 0.4 + 0.8) / 3 = 0.5. 이 경우, 두 클래스의 평균 확률이 같으므로 최종 예측은 모델의 구성에 따라 달라질 수 있다. (예: 하드 보팅처럼 다수결로 결정하거나, 특정 모델의 가중치를 높여 결정)
💻 파이썬(Python)을 사용하여 하드 보팅과 소프트 보팅을 구현하는 간단한 예시를 살펴보자. Scikit-learn 라이브러리를 사용한다.
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import VotingClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.metrics import accuracy_score
# 데이터 생성
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 개별 모델 정의
clf1 = LogisticRegression(random_state=1)
clf2 = GaussianNB()
# 하드 보팅 분류기
hard_voting_clf = VotingClassifier(estimators=[('lr', clf1), ('gnb', clf2)], voting='hard')
hard_voting_clf.fit(X_train, y_train)
y_pred_hard = hard_voting_clf.predict(X_test)
accuracy_hard = accuracy_score(y_test, y_pred_hard)
print(f"Hard Voting Accuracy: {accuracy_hard:.4f}")
# 소프트 보팅 분류기
soft_voting_clf = VotingClassifier(estimators=[('lr', clf1), ('gnb', clf2)], voting='soft')
soft_voting_clf.fit(X_train, y_train)
y_pred_soft = soft_voting_clf.predict(X_test)
accuracy_soft = accuracy_score(y_test, y_pred_soft)
print(f"Soft Voting Accuracy: {accuracy_soft:.4f}")
코드 설명:
- 데이터 생성:
make_classification
함수를 사용하여 예제 데이터를 생성한다. - 개별 모델 정의: 로지스틱 회귀(Logistic Regression)와 가우시안 나이브 베이즈(Gaussian Naive Bayes) 모델을 생성한다.
- 하드 보팅 분류기:
VotingClassifier
를 사용하여 하드 보팅 분류기를 생성하고 학습시킨다.voting='hard'
옵션을 사용하여 하드 보팅을 지정한다. - 소프트 보팅 분류기:
VotingClassifier
를 사용하여 소프트 보팅 분류기를 생성하고 학습시킨다.voting='soft'
옵션을 사용하여 소프트 보팅을 지정한다. - 평가: 각 분류기의 정확도(accuracy)를 계산하고 출력한다.
🧠 하드 보팅과 소프트 보팅의 선택은 문제의 특성과 모델의 성능에 따라 달라진다.
- 하드 보팅은 간단하고 직관적이지만, 각 모델의 예측 결과에 대한 불확실성을 반영하지 못한다.
- 소프트 보팅은 각 모델의 예측 확률을 사용하므로, 모델의 신뢰도를 고려하여 예측할 수 있다. 일반적으로 소프트 보팅이 하드 보팅보다 더 좋은 성능을 보이는 경우가 많다.
💡 보팅 분류기는 다음과 같은 장점을 가진다.
- 성능 향상: 여러 모델의 예측을 결합하여 개별 모델보다 더 좋은 성능을 얻을 수 있다.
- 견고성 향상: 개별 모델의 오류를 상쇄하여 예측의 안정성을 높일 수 있다.
- 다양성 확보: 다양한 모델을 사용하여 데이터의 다양한 측면을 학습할 수 있다.
🔑 핵심 용어 정리
- 머신러닝 (Machine Learning): 데이터를 기반으로 학습하고 예측하는 기술
- 머신러닝 모델 (Machine Learning model): 데이터를 분석하고 예측을 수행하는 알고리즘
- 보팅 분류기 (Voting Classifier): 여러 모델의 예측을 결합하여 최종 예측을 수행하는 앙상블 학습 기법
- 개별 모델 (Individual models): 보팅 분류기에 사용되는 각 모델
- 앙상블 학습 (Ensemble Learning): 여러 모델을 결합하여 더 나은 예측을 수행하는 기법
- 하드 보팅 (Hard Voting): 다수결 투표를 통해 최종 예측을 결정하는 방식
- 소프트 보팅 (Soft Voting): 예측 확률을 사용하여 가중 평균을 계산하고 최종 예측을 결정하는 방식
- 클래스 (Class): 분류 문제에서 예측하고자 하는 범주
- 확률 (Probability): 모델이 특정 클래스를 예측할 가능성
- 가중 평균 (Weighted average): 각 값에 가중치를 곱하여 평균을 계산하는 방식
- 정확도 (Accuracy): 모델의 예측이 얼마나 정확한지 나타내는 지표
- 로지스틱 회귀 (Logistic Regression): 분류 문제에 사용되는 알고리즘
- 가우시안 나이브 베이즈 (Gaussian Naive Bayes): 분류 문제에 사용되는 확률 기반 알고리즘
관련 키워드:
- 앙상블 학습
- 모델 융합
- 분류 문제
- 머신러닝 알고리즘
'머신러닝' 카테고리의 다른 글
머신 러닝 기초 - 시계열 예측 기본 원리 (0) | 2025.03.03 |
---|---|
기계 학습 기초 - ARIMA 모델 이해하기 (0) | 2025.03.03 |
머신러닝 기본: 머신러닝에서 스태킹 모델 사용하기 (0) | 2025.03.02 |
앙상블 학습(Ensemble Methods) 개요 (0) | 2025.03.02 |
머신러닝 모델 선택 기법 이해하기 (0) | 2025.03.02 |