일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- reinforcement learning
- 신경망
- 강화 학습
- 데이터 전처리
- 분류
- 인공지능
- 최적화
- Q-Learning
- 활성화 함수
- rnn
- 머신 러닝
- 교차 검증
- Deep learning
- 강화학습
- LSTM
- GRU
- 회귀
- 자연어 처리
- 딥러닝
- AI
- 지도 학습
- CNN
- 과적합
- 인공 신경망
- q-러닝
- 손실 함수
- python
- Machine Learning
- 머신러닝
- 정규화
- Today
- Total
move84
머신러닝 분류 문제에서 클래스(Class)의 의미 본문
머신러닝, 특히 분류 문제에서 클래스는 데이터 샘플이 속할 수 있는 범주 또는 그룹을 의미한다. 이 글에서는 클래스의 개념을 명확히 이해하고, 분류 문제에서 클래스가 어떻게 활용되는지 설명한다. 다양한 예시를 통해 초보자도 쉽게 이해할 수 있도록 구성했다.
📌 클래스(Class)의 정의
클래스는 분류 문제에서 예측하고자 하는 대상의 종류 또는 범주를 나타낸다. 예를 들어, 스팸 메일 분류 문제에서 클래스는 스팸(spam)과 정상 메일(ham)의 두 가지로 나뉜다. 이미지 분류 문제에서는 고양이, 개, 새 등의 이미지가 각각 하나의 클래스가 된다. 클래스는 머신러닝 모델이 학습하고 예측해야 할 목표 변수의 값이라고 할 수 있다.
📊 이진 분류(Binary Classification)와 다중 분류(Multiclass Classification)
분류 문제는 클래스의 수에 따라 이진 분류와 다중 분류로 나눌 수 있다. 이진 분류는 클래스가 두 개인 경우로, 앞서 언급한 스팸 메일 분류가 대표적인 예이다. 반면, 다중 분류는 클래스가 세 개 이상인 경우로, 손글씨 숫자 인식(MNIST)이나 여러 종류의 과일 이미지를 분류하는 문제가 해당된다.
📚 클래스 불균형(Class Imbalance)
클래스 불균형은 특정 클래스의 데이터가 다른 클래스에 비해 현저히 적거나 많은 경우를 의미한다. 예를 들어, 질병 진단 문제에서 환자 수가 정상인에 비해 매우 적다면 클래스 불균형 문제가 발생할 수 있다. 이러한 불균형은 모델의 성능에 부정적인 영향을 미칠 수 있으므로 적절한 해결 방법을 찾아야 한다. 클래스 불균형을 해결하기 위한 방법으로는 오버샘플링(Oversampling), 언더샘플링(Undersampling), 가중치 조정(Weighting) 등이 있다.
# 클래스 불균형 예시
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
# 불균형한 데이터 생성
np.random.seed(0)
n_samples = 1000
ratio = 0.05 # 소수 클래스의 비율
n_minority = int(n_samples * ratio)
n_majority = n_samples - n_minority
# 클래스 1 (소수 클래스)
X_minority = np.random.rand(n_minority, 2)
y_minority = np.ones(n_minority)
# 클래스 0 (다수 클래스)
X_majority = np.random.rand(n_majority, 2) + 1
y_majority = np.zeros(n_majority)
# 데이터 결합
X = np.vstack((X_minority, X_majority))
y = np.concatenate((y_minority, y_majority))
# 데이터프레임 생성
df = pd.DataFrame(X, columns=['feature_1', 'feature_2'])
df['target'] = y
print(df['target'].value_counts())
# 학습 및 테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 로지스틱 회귀 모델 학습
model = LogisticRegression()
model.fit(X_train, y_train)
# 예측 및 평가
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
위 코드는 클래스 불균형 데이터를 생성하고, 로지스틱 회귀 모델을 학습하여 예측 결과를 보여준다. 불균형한 데이터로 인해 모델의 성능이 저하될 수 있음을 확인할 수 있다.
🎯 클래스 활용 예시
- 스팸 메일 분류(Spam Email Classification):
- 클래스: 스팸(Spam), 정상 메일(Ham)
- 목표: 주어진 메일이 스팸인지 정상 메일인지 정확하게 분류하는 것.
- 이미지 분류(Image Classification):
- 클래스: 고양이(Cat), 개(Dog), 새(Bird)
- 목표: 주어진 이미지가 어떤 동물인지 정확하게 식별하는 것.
- 질병 진단(Disease Diagnosis):
- 클래스: 양성(Positive), 음성(Negative)
- 목표: 환자의 검사 결과를 바탕으로 질병 유무를 정확하게 판단하는 것.
- 고객 세분화(Customer Segmentation):
- 클래스: VIP 고객, 일반 고객, 잠재 고객
- 목표: 고객 데이터를 분석하여 각 고객을 적절한 그룹으로 분류하고, 맞춤형 마케팅 전략을 수립하는 것.
✨ 클래스 예측 성능 향상 방법
- 데이터 증강(Data Augmentation):
- 데이터가 부족한 클래스의 데이터를 인위적으로 늘리는 방법. 이미지 데이터의 경우 회전, 확대/축소, 좌우 반전 등의 변환을 통해 데이터를 증강할 수 있다.
- 앙상블 방법(Ensemble Method):
- 여러 개의 모델을 결합하여 예측 성능을 향상시키는 방법. Random Forest, Gradient Boosting 등이 대표적인 앙상블 방법이다.
- 특성 선택(Feature Selection):
- 모델 학습에 중요한 특성만 선택하여 사용하는 방법. 불필요한 특성을 제거하여 모델의 복잡도를 줄이고, 성능을 향상시킬 수 있다.
- 비용 민감 학습(Cost-Sensitive Learning):
- 각 클래스에 대해 서로 다른 오분류 비용을 적용하여 모델을 학습시키는 방법. 예를 들어, 특정 질병을 놓치는 경우의 비용이 정상인을 질병 환자로 오진하는 경우보다 더 크다면, 해당 질병 클래스에 더 높은 비용을 부여할 수 있다.
📝 핵심 용어 정리
- 클래스(Class): 데이터 샘플이 속할 수 있는 범주 또는 그룹 (Category or Group)
- 이진 분류(Binary Classification): 클래스가 두 개인 분류 문제 (Two-Class Classification)
- 다중 분류(Multiclass Classification): 클래스가 세 개 이상인 분류 문제 (Multiple-Class Classification)
- 클래스 불균형(Class Imbalance): 특정 클래스의 데이터가 다른 클래스에 비해 현저히 적거나 많은 경우 (Unequal Distribution of Classes)
- 오버샘플링(Oversampling): 소수 클래스의 데이터 수를 늘리는 방법 (Increasing Minority Class Samples)
- 언더샘플링(Undersampling): 다수 클래스의 데이터 수를 줄이는 방법 (Decreasing Majority Class Samples)
'머신러닝' 카테고리의 다른 글
머신러닝에서의 분산(Variance)과 표준편차(Standard Deviation) 이해 (0) | 2025.04.16 |
---|---|
머신러닝에서의 데이터 정규 분포의 의미 (0) | 2025.04.16 |
머신러닝: 특징 공간(Feature Space)의 개념 (0) | 2025.04.16 |
머신러닝에서의 데이터 유형 이해: 정형, 비정형, 반정형 (0) | 2025.04.16 |
머신러닝 역사와 발전 과정 (0) | 2025.04.16 |