
분류(Classification)는 머신러닝에서 입력 데이터를 사전에 정의된 클래스(label) 중 하나로 분류하는 문제입니다.
| 문제 | 입력 데이터 예 | 출력 라벨 (클래스) |
|---|---|---|
| 이메일 분류 | 이메일 본문 텍스트 | 스팸 or 일반 |
| 암 진단 | 유방암 관련 수치 | 양성 or 음성 |
| 손글씨 숫자 인식 | 이미지 픽셀값 | 0~9 중 하나 |
| 뉴스 기사 분류 | 기사 텍스트 | 정치, 경제, 연예, 스포츠 등 |
| 고객 이탈 예측 | 나이, 계약 기간 등 | 이탈 or 유지 |
분류는 지도학습(Supervised Learning)의 대표적인 형태입니다.
즉, 입력(X)과 출력(Y)의 짝이 있는 학습을 의미해요.
| 알고리즘 | 설명 | 장점 |
|---|---|---|
| 로지스틱 회귀 | 확률 기반 이진/다중 분류 | 빠르고 해석 쉬움 |
| 결정 트리 | 조건 분기 구조 | 시각화 가능 |
| KNN | 가장 가까운 이웃 기반 | 간단하고 직관적 |
| SVM | 결정 경계 최대화 | 고차원 분류에 강함 |
| 나이브 베이즈 | 조건부 확률 기반 | 빠르고 가벼움 |
| 랜덤 포레스트 | 트리 앙상블 | 높은 정확도 |
| 신경망(CNN, RNN 등) | 복잡한 패턴 분류 | 이미지, 텍스트에 강함 |
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print("정확도:", accuracy_score(y_test, y_pred))
| 지표 | 설명 |
|---|---|
| Accuracy | 전체 중 맞춘 비율 |
| Precision | 양성 예측 중 실제 양성 비율 |
| Recall | 실제 양성 중 맞춘 비율 |
| F1 Score | 정밀도와 재현율의 조화 평균 |
| ROC-AUC | 이진 분류에서의 전체 성능 평가 지표 |
| Confusion Matrix | 예측/실제 조합을 시각적으로 표시 |
| 항목 | 분류 | 회귀 |
|---|---|---|
| 출력 값 | 범주형 (클래스) | 연속형 수치 |
| 예 | 고양이 vs 개, 긍정 vs 부정 | 집값, 온도 예측 |
| 평가 지표 | Accuracy, F1 등 | MSE, RMSE, R2 등 |
| 주요 함수 | 시그모이드, 소프트맥스 | 항등 함수 |
| 개념 | 설명 |
|---|---|
| 분류 | 범주형 결과 예측 문제 |
| 이진 분류 | 두 클래스 중 하나 예측 |
| 다중 분류 | 세 개 이상 클래스 중 하나 |
| 다중 레이블 | 여러 클래스에 동시에 속함 |
| 주요 알고리즘 | 로지스틱 회귀, SVM, 트리, 신경망 |
| 평가 지표 | 정확도, 정밀도, 재현율, F1 등 |
분류는 머신러닝의 가장 널리 쓰이는 기본 문제 유형 중 하나입니다.
텍스트 분석, 이미지 인식, 바이너리 판단 등 거의 모든 분야에서 활용됩니다!
분류(Classification)는 머신러닝에서 가장 기본적이면서도 강력한 도구입니다.
실생활에 가장 많이 적용되는 분야이기도 하며, 알고리즘 선택과 평가 지표 이해가 중요합니다.
감사합니다.
바이브코딩부터 머신러닝까지 인공지능에 조금 더 알아가는 코딩 입문자 드림