🎯 지도학습 vs 비지도학습 (Supervised vs Unsupervised Learning)
머신러닝은 학습 방식에 따라 크게 지도학습(Supervised Learning) 과 비지도학습(Unsupervised Learning) 으로 나뉩니다.
1️⃣ 지도학습 (Supervised Learning)
📌 개념:
- 정답(라벨, Label)이 있는 데이터를 학습하는 방식
- 입력 데이터(Features)와 정답(Output)이 주어짐
- 새로운 입력 데이터가 주어졌을 때 정답을 예측
✅ 예제:
📍 이메일 스팸 필터링 (Email Spam Filtering)
- 데이터: 이메일 제목, 본문 내용
- 정답(라벨): “스팸(Spam)” 또는 “정상(Ham)”
- 학습 후 새로운 이메일이 들어오면 스팸 여부 예측
📍 손글씨 숫자 인식 (Handwritten Digit Recognition)
- 데이터: 숫자 이미지 (0~9)
- 정답(라벨): 해당 숫자 (예: 3, 5, 7 등)
- 학습 후 새로운 숫자 이미지 입력 시 예측
🎯 지도학습의 주요 알고리즘
| 알고리즘 | 설명 | 예제 |
|---|---|---|
| 선형 회귀 (Linear Regression) | 입력 값과 출력 값의 관계를 직선으로 표현 | 집값 예측, 날씨 예측 |
| 로지스틱 회귀 (Logistic Regression) | 데이터를 두 가지(또는 여러 개) 범주로 분류 | 스팸 메일 분류, 질병 진단 |
| 결정 트리 (Decision Tree) | 질문을 따라가며 데이터를 분류 | 고객 이탈 예측, 대출 승인 예측 |
| 랜덤 포레스트 (Random Forest) | 여러 개의 결정 트리를 조합 | 신용 카드 사기 탐지 |
| 서포트 벡터 머신 (SVM) | 데이터를 최적의 경계로 분류 | 얼굴 인식 |
| 신경망 (Neural Networks) | 인간 두뇌를 모방한 모델 | 음성 인식, 이미지 분류 |
📝 지도학습 코드 예제 (스팸 메일 분류)
👉 이메일 데이터를 이용해 “스팸”인지 “정상”인지 분류
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
# 샘플 데이터 (이메일 본문)
emails = ["Cheap loans available now", "Win a lottery today", "Meeting at 3 PM", "Important project update", "Get free gift cards"]
labels = [1, 1, 0, 0, 1] # 1: 스팸, 0: 정상
# 텍스트 데이터를 숫자로 변환
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(emails)
# 학습 데이터와 테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=42)
# 나이브 베이즈 분류기 학습
model = MultinomialNB()
model.fit(X_train, y_train)
# 테스트 데이터 예측
predictions = model.predict(X_test)
# 정확도 평가
print(f"정확도: {accuracy_score(y_test, predictions) * 100:.2f}%")
✅ 결과:
- 스팸 메일을 자동으로 분류하는 모델
- 이메일 본문을 벡터화하여 머신러닝 모델에 입력
- 테스트 데이터에서 정확도 평가
2️⃣ 비지도학습 (Unsupervised Learning)
📌 개념:
- 정답(라벨)이 없는 데이터를 학습하는 방식
- 데이터에서 패턴이나 구조를 찾음
- 데이터를 자동으로 그룹화하거나 관계를 분석
✅ 예제:
📍 고객 그룹화 (Customer Segmentation)
- 데이터: 고객 구매 내역, 방문 패턴
- 정답 없음 → AI가 비슷한 고객끼리 자동으로 그룹화
- 마케팅 전략 수립에 활용
📍 이상 탐지 (Anomaly Detection)
- 데이터: 신용카드 거래 내역
- 정답 없음 → AI가 정상 거래와 비정상 거래를 구분
- 금융 사기 탐지에 활용
🎯 비지도학습의 주요 알고리즘
| 알고리즘 | 설명 | 예제 |
|---|---|---|
| K-평균 군집화 (K-Means Clustering) | 데이터를 K개의 그룹으로 나눔 | 고객 세분화, 이미지 압축 |
| 계층적 군집화 (Hierarchical Clustering) | 데이터의 유사도에 따라 계층적 트리 생성 | 유전자 데이터 분석 |
| 주성분 분석 (PCA, Principal Component Analysis) | 데이터 차원을 줄여서 시각화 | 이미지 압축, 노이즈 제거 |
| 연관 규칙 학습 (Association Rule Learning) | 데이터 간의 연관성을 찾음 | 장바구니 분석 (예: 빵을 사면 우유도 산다) |
📝 비지도학습 코드 예제 (고객 그룹화)
👉 고객 데이터를 3개의 그룹으로 나누는 K-평균 군집화
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 샘플 데이터 (연령, 월평균 구매 금액)
X = np.array([[25, 300], [30, 450], [35, 500], [40, 700], [23, 200], [50, 900], [60, 1000]])
# K-평균 군집화 (3개 그룹)
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
# 결과 시각화
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.xlabel("연령 (Age)")
plt.ylabel("월 평균 구매 금액 (Monthly Purchase Amount)")
plt.title("고객 그룹화 (Customer Segmentation)")
plt.show()
✅ 결과:
- 고객을 3개 그룹으로 자동 분류
- 연령과 구매 금액을 기반으로 비슷한 특성의 고객끼리 군집화
3️⃣ 지도학습 vs 비지도학습 비교
| 비교 항목 | 지도학습 (Supervised) | 비지도학습 (Unsupervised) |
|---|---|---|
| 데이터 | 정답(라벨) 있음 | 정답 없음 |
| 목표 | 입력 데이터를 정답과 매칭 | 데이터의 패턴, 그룹 발견 |
| 예제 | 이메일 스팸 필터, 얼굴 인식 | 고객 그룹화, 이상 탐지 |
| 대표 알고리즘 | 선형 회귀, 랜덤 포레스트, 신경망 | K-평균 군집화, PCA |
4️⃣ 결론 (Conclusion)
✅ 지도학습은 정답(라벨)이 있는 데이터를 학습하여 정확한 예측을 목표
✅ 비지도학습은 정답 없이 데이터를 분석하여 패턴이나 그룹을 찾음
💡 머신러닝을 배우려면?
- 처음 시작할 때는 지도학습이 쉬움
- 데이터가 많지만 정답이 없을 경우 비지도학습 사용
