| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 데이터분석
- 내일배움캠프#til#파이썬#python#전처리
- vscode
- A/B테스트
- t검정
- 이상치 제거
- 통계학공부
- 제1종오류
- Ai
- 가설검정
- 머신러닝
- 내일배움캠프#til#sqld
- 카이제곱검정
- 딥러닝
- 다중검정
- 제2종오류
- #내일배움캠프 #사전캠프 #til #sql
- 책
- 라이브 세션
- 데이터
- 내일배움캠프#til#데이터 리터러시
- 통계학
- 통계
- 내일배움캠프#til#파이썬#python#통계학
- 차원축소
- 내일배움캠프#til#sqld#eda#데이터리터러시
- 내일배움캠프#til#sql
- 내일배움캠프#til#파이썬#python
- 이상탐지
- 통계101x데이터분석
- Today
- Total
Ming's Life
머신러닝(분류) 본문
1. 오늘 학습 키워드
- 머신러닝 기초
2. 오늘 학습 한 내용을 나만의 언어로 정리하기
1. 분류 모델 개요
☑️ 지도학습이란 ?
- 입력 데이터(특징, Feature)와 정답(Label)이 주어졌을 때, 모델이 정답을 예측하도록 학습하는 방식.
- 회귀(연속값 예측)와 분류(범주 예측)의 차이점?
☑️ 분류(Classification)의 정의
- 분류의 목적
- 데이터가 어느 범주(클래스)에 속하는지 예측.
- ex) 스팸 메일 분류(스팸/정상), 질병 여부(양성/음성), 제조 공정 품질(불량/정상) 등.
- 분류 문제를 해결하기 위해 자주 활용되는 알고리즘 : Logistic Regression, SVM
☑️ 분류 모델이 많이 쓰이는 이유
- 이진 분류(양성/음성, 합격/불합격, 정상/불량 등)는 직관적이고 다양한 산업에서 필요함.
- 데이터 분석에서 가장 먼저 접하는 모델 중 하나.
2. 주요 분류 모델
☑️ 로지스틱 회귀(Logistic Regression)
- 선형 회귀처럼 입력값의 선형 결합을 취하지만, 결과를 0~1 사이의 확률로 변환하기 위해 로지스틱 함수(시그모이드 함수)를 사용.

- 장점
- 계산이 빠르고 구현이 간단하다.
- 결과 해석이 용이(회귀 계수로 각 변수의 영향도 해석 가능).
- 단점
- 복잡한 비선형 패턴을 학습하기엔 한계가 있음.
☑️ 로지스틱 회귀 코드 예시
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
# 1. 데이터 로드
iris = load_iris()
X = iris.data # 특징(feature) 데이터
y = iris.target # 타깃(target) 데이터
# 2. 데이터 분할 (train : test = 8 : 2)
# stratify=y : 클래스 비율을 train, test가 유사하게끔 맞춤
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.2,
random_state=42,
stratify=y)
# 3. Logistic Regression
logistic_model = LogisticRegression(max_iter=200)
logistic_model.fit(X_train, y_train)
# 4. 예측
y_pred_logistic = logistic_model.predict(X_test)
# 5. 성능 평가
print("=== Logistic Regression ===")
print("Accuracy:", accuracy_score(y_test, y_pred_logistic))
print(classification_report(y_test, y_pred_logistic, target_names=iris.target_names))
☑️ 코드해설
- Logistic Regression
- 학습 데이터(X_train, y_train)를 이용해 로지스틱 회귀 모델을 학습
- max_iter(최대 반복 횟수)를 기본값(100)에서 조금 늘려 200으로 설정
- accuracy_score로 정확도(Accuracy) 계산
- classification_report로 클래스별 정밀도(precision), 재현율(recall), F1 점수, 지원된 샘플 수(support) 등을 확인
- target_names=iris.target_names를 통해 각 클래스의 이름(‘setosa’, ‘versicolor’, ‘virginica’)으로 보고서를 보기 쉽게 표시
☑️ SVM(Support Vector Machine)
- 데이터를 가장 잘(안전 여유공간을 크게) 구분하는 경계를 찾는 알고리즘 예를들면, 두 부류(ex: 고양이 vs 개)를 잘 구분해주는 경계를 찾는데, 두 부류가 최대한 멀리 떨어지도록(안전 여유공간이 넓도록) 찾는 방식"

- 장점
- 차원이 높은 데이터에서도 좋은 성능을 보일 수 있음.
- 결정 경계를 명확하게 찾는 경우, 예측 성능이 우수함.
- 결정경계란? → SVM이 찾은 최적의 분류선(또는 초평면)
- ex) 한쪽 편을 '고양이'로, 다른 한편을 '개'로 구분해주는 기준선
- 단점
- 파라미터(C, 커널 종류 등)를 적절히 찾아야 하므로 튜닝 비용이 큼.
- 대규모 데이터 세트에 대해서는 학습 속도가 느릴 수 있음.
☑️ SVM 코드 예시
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, classification_report
# 1. 데이터 로드
iris = load_iris()
X = iris.data # 특징(feature) 데이터
y = iris.target # 타깃(target) 데이터
print(X.shape)
print(y.shape)
# 2. 데이터 분할 (train : test = 8 : 2)
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.2,
random_state=42,
stratify=y)
# 3. SVM(Support Vector Machine)
# C, gamma 등의 하이퍼파라미터를 설정해서 더 최적화할 수도 있습니다.
svm_model = SVC()
svm_model.fit(X_train, y_train)
# 4. 예측
y_pred_svm = svm_model.predict(X_test)
# 5. 성능 평가
# Accuracy(정확도)와 정밀 평가(classification_report)를 이용해 비교해봅니다.
print("=== SVM ===")
print("Accuracy:", accuracy_score(y_test, y_pred_svm))
print(classification_report(y_test, y_pred_svm, target_names=iris.target_names))
☑️ 코드 해설
- SVM
- SVC()는 기본적으로 커널(kernel)을 ‘rbf’로 사용
- 다른 하이퍼파라미터(C, gamma 등)를 조정해서 성능 개선을 시도할 수 있음
- accuracy_score로 정확도(Accuracy) 계산
- classification_report로 클래스별 정밀도(precision), 재현율(recall), F1 점수, 지원된 샘플 수(support) 등을 확인
- target_names=iris.target_names를 통해 각 클래스의 이름(‘setosa’, ‘versicolor’, ‘virginica’)으로 보고서를 보기 쉽게 표시
☑️ 추가로 할면 좋은 모델
1. K-NN(K-최근접 이웃)
: 간단하지만 대규모 데이터에서 계산량이 큼.

2. 나이브 베이즈(Naive Bayes)
: 통계적 가정(독립성)에 기반하므로 계산이 빠름, 스팸 필터 등에서 자주 사용.

3. 신경망(MLP) 또는 딥러닝 모델
: 복잡도는 높지만 대규모 데이터에서 강점.

3. 분류 모델의 산업별 적용 사례
☑️ 금융(FinTech)
1. 사기 거래 탐지(Fraud Detection)
: 거래 패턴이 정상 고객과 다른 이상 패턴을 보이는지 분류 모델로 판단.
2. 대출 상환 가능성 예측
: 대출 신청 고객의 과거 신용 기록, 소득, 직업, 기타 특성 등을 종합해 상환이 가능한지 여부 분류.
3. 적용 모델
: 로지스틱 회귀, 랜덤 포레스트, XGBoost, 딥러닝 등 자주 사용.
☑️ 헬스케어
1. 질병 진단
: 양성(Positive)/음성(Negative) 여부 분류. ex) 암 진단, 당뇨병 예측 등.
2. 임상 데이터(혈액 검사 수치, 환자 진료 기록)와 의료 영상을 기반으로 머신러닝 모델을 훈련.
3. 적용 모델
: 로지스틱 회귀, SVM, 최근에는 딥러닝도 활발히 연구.
☑️ 마케팅
1. 고객 이탈 예측
: 고객이 서비스를 해지할 가능성이 있는지 분류.
2. 캠페인 반응 예측
: 이메일 또는 광고 캠페인에 대한 반응(열람/미열람, 구매/미구매) 여부 예측.
3. 적용 모델
: 로지스틱 회귀, 랜덤 포레스트, 나이브 베이즈 등.
☑️ 제조업
1. 불량 검출
: 공정에서 생산된 부품이 불량인지 아닌지 분류.
2. 장비 이상 탐지
: 센서 데이터(온도, 진동, 압력 등)를 기반으로 이상 여부 분류.
3. 적용 모델
: 랜덤 포레스트, SVM, 앙상블 모델, 딥러닝이 주로 활용됨.
4. 모델 평가 방법
☑️ Cross Entropy, Hinge Loss
- 분류(Classification) 모델에 사용되는 손실함수
1️⃣ Binary Cross Entropy / Cross Entropy
- Binary Cross Entropy 2진 분류에서 자주 사용
- 일반적으로 다중 분류에서 Cross Entropy를 사용
- 예측 확률이 실제 레이블과 얼마나 차이가 있는지 측정
2️⃣ Hinge Loss
- SVM(Support Vector Machine)에서 많이 사용
- 마진을 고려하여 오분류된 샘플에 페널티를 부여
☑️ 혼동 행렬(Confusion Matrix)
- 실제 클래스와 예측 클래스의 관계를 행렬 형태로 나타낸 것.
- True Positive(TP), False Positive(FP), False Negative(FN), True Negative(TN)
- 분류 모델 해석의 기초이므로, 용어와 의미를 잘 숙지해야 함.

☑️ Precision, Recall, F1-score
- Precision(정밀도): 예측을 Positive라고 한 사례 중, 실제로 Positive인 비율.
- “예측 정확도” 관점에서 중요. (예: 스팸 예측)
- Recall(재현율): 실제 Positive 사례 중, 모델이 Positive로 맞춘 비율.
- “놓치지 않는 것”이 중요한 경우(예: 질병 진단) 강조.
- F1-score: Precision과 Recall의 조화평균.
- 두 지표가 모두 중요한 경우를 종합적으로 평가하기 좋음.
☑️ ROC 곡선과 AUC(Area Under the Curve)
- ROC 곡선
- 임계값(Threshold)을 변화시키며, TPR(True Positive Rate)과 FPR(False Positive Rate)의 변화를 시각화한 곡선
- TPR(True Positive Rate)
- 다른 말로 재현율(Recall) 또는 민감도(Sensitivity)
- 실제 양성(Positive) 샘플 중 모델이 양성이라고 예측한 비율
- 0~1 사이의 값을 가지며 1에 가까울 수록 좋음
- TPR(True Positive Rate)
- 임계값(Threshold)을 변화시키며, TPR(True Positive Rate)과 FPR(False Positive Rate)의 변화를 시각화한 곡선

- FPR(False Positive Rate)
- 실제 음성(Negative) 샘플 중 모델이 양성이라고 잘못 예측한 비율
- 0~1 사이의 값을 가지며 0에 가까울 수록 좋음

- TPR과 FPR은 트레이드 오프 관계 (한 쪽이 좋을 수록 한 쪽이 좋지 않음)
- 이 지표도 클래스 불균형 상황에서 사용
- 임계값을 조정해서 생기는 성능 변화 전체를 보여주기 때문에 단순히 성능 하나만 얘기하는 위의 지표들과는 다름
- AUC
- ROC 곡선 아래 면적. 1에 가까울수록 모델이 우수함.
- 불균형 데이터(Positive가 매우 적거나 많은 경우)에서도 모델 성능 비교에 유용.

☑️ 코드 예시
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, roc_auc_score
# 1. 데이터 로드 (유방암 데이터셋: 이진 분류)
data = load_breast_cancer()
X = data.data
y = data.target
# 2. 학습/테스트 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.2,
random_state=42,
stratify=y)
# 3. 모델 생성 및 학습
model = LogisticRegression(max_iter=500) # 반복횟수를 충분히 늘려줌
model.fit(X_train, y_train)
# 4. 예측(특히 ROC-AUC 계산을 위해 확률값이 필요하므로 predict_proba 사용)
y_proba = model.predict_proba(X_test)[:, 1]
# predict_proba의 결과 shape는 (샘플 수, 클래스 수).
# 여기서는 양성 클래스(1)에 대한 확률만 사용
# 5. ROC 곡선 계산
fpr, tpr, thresholds = roc_curve(y_test, y_proba)
# fpr: False Positive Rate
# tpr: True Positive Rate (재현율과 동일)
# thresholds: 임계값(이 값을 기준으로 양성/음성 분류가 달라짐)
# 6. AUC 계산
auc_score = roc_auc_score(y_test, y_proba)
# 7. ROC 곡선 시각화
plt.figure()
plt.plot(fpr, tpr, label=f'Logistic (AUC = {auc_score:.3f})')
plt.plot([0, 1], [0, 1], linestyle='--') # 랜덤 분류선
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.show()
print("ROC-AUC Score:", auc_score)
☑️ 코드 해설
- ROC-AUC 계산을 위한 예측 확률
- ROC 곡선과 AUC는 분류 결과 자체(0/1)보다 ‘양성 클래스(1)일 확률’ 이 필요합니다.
- predict_proba : 각 클래스(0, 1)에 속할 확률을 예측해주는 메소드
- ROC 곡선 계산
- 분류 임계값(threshold)을 다양하게 바꿔가며 FPR, TPR을 계산해줍니다.
- fpr : 거짓 양성 비율 = FP / (FP + TN)
- tpr : 참 양성 비율(재현율) = TP / (TP + FN)
💡실전 팁!
1. 데이터가 불균형할 경우(ex : 사기 거래 탐지, 질병 예측 등) Accuracy(정확도)만으로는 모델을 평가하기 어려움 → Precision, Recall, F1-score, ROC-AUC 등 지표를 함께 봐야 함.
2. 현업 목표에 따라 어떤 지표를 중시할지 결정(ex : 암 진단은 Recall 중요, 스팸 필터는 Precision 중요 등).
총 정리
1. 분류 모델의 개념과 활용 분야를 살펴보았다.
2. 로지스틱 회귀, 랜덤 포레스트, SVM 등 대표적 분류 모델의 원리와 장단점을 이해.
3. 모델 평가 지표(Precision, Recall, F1-score, ROC-AUC)를 적절히 활용해야 실무에 적용할 때 올바른 판단을 내릴 수 있음.
'머신러닝' 카테고리의 다른 글
| 머신러닝(클러스터링) (2) | 2025.07.08 |
|---|---|
| 머신러닝(앙상블 기법) (0) | 2025.07.07 |
| 머신러닝(회귀) (2) | 2025.07.03 |
| 머신러닝(데이터 전처리) (2) | 2025.07.02 |
| 머신러닝(머신러닝이란 ?) (0) | 2025.07.01 |