🎯 지도학습 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)
✅ 지도학습은 정답(라벨)이 있는 데이터를 학습하여 정확한 예측을 목표
✅ 비지도학습은 정답 없이 데이터를 분석하여 패턴이나 그룹을 찾음
💡 머신러닝을 배우려면?
- 처음 시작할 때는 지도학습이 쉬움
- 데이터가 많지만 정답이 없을 경우 비지도학습 사용