개발 창고/AI

지도학습 실습: 분류(Classification)와 회귀(Regression)

Royzero 2025. 8. 16. 00:02
반응형

1. 지도학습이란?

지도학습(Supervised Learning)은 입력 데이터(Input)정답(Label) 이 함께 주어져,
모델이 이를 학습한 뒤 새로운 입력에 대한 정답을 예측하는 학습 방식입니다.


1.1 분류 vs 회귀

구분 설명 출력값 예시 활용 사례

분류 데이터가 속할 범주(Category)를 예측 스팸/정상, 품종명, 등급 스팸메일 탐지, 질병 진단
회귀 연속적인 숫자 값을 예측 가격, 온도, 확률 주가 예측, 판매량 예측

2. 분류(Classification)

2.1 개념

  • 데이터를 여러 범주(Class) 중 하나로 분류
  • 예: ‘이 메일은 스팸인가, 아닌가?’

2.2 주요 알고리즘

  • 로지스틱 회귀(Logistic Regression)
  • 의사결정나무(Decision Tree)
  • 서포트 벡터 머신(SVM)
  • 랜덤 포레스트(Random Forest)

3. 회귀(Regression)

3.1 개념

  • 입력 변수와 연속적인 출력 값 간의 관계를 찾아 예측
  • 예: ‘아파트의 평형, 위치, 연식으로 가격 예측’

3.2 주요 알고리즘

  • 선형 회귀(Linear Regression)
  • 릿지 회귀(Ridge Regression)
  • 라쏘 회귀(Lasso Regression)
  • 의사결정나무 회귀(Decision Tree Regression)

4. 지도학습 개발 과정

  1. 데이터 준비: 입력(X), 정답(y) 구분
  2. 학습/검증 데이터 분리
  3. 모델 선택 및 학습
  4. 예측 및 평가
  5. 성능 향상: 하이퍼파라미터 튜닝

5. 실습 – 분류(Classification) 예제

이번 실습에서는 Iris 꽃 품종 분류를 구현합니다.

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

# 데이터 로드
iris = load_iris()
X, y = iris.data, iris.target

# 학습/테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# 모델 학습
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 평가
print("정확도:", f"{accuracy_score(y_test, y_pred)*100:.2f}%")
print(classification_report(y_test, y_pred, target_names=iris.target_names))

6. 실습 – 회귀(Regression) 예제

이번에는 보스턴 주택 가격 예측(scikit-learn의 California housing 데이터셋 활용) 예제입니다.

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import numpy as np

# 데이터 로드
housing = fetch_california_housing()
X, y = housing.data, housing.target

# 학습/테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# 모델 학습
reg = LinearRegression()
reg.fit(X_train, y_train)

# 예측
y_pred = reg.predict(X_test)

# 평가
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)

print(f"RMSE: {rmse:.3f}")
print(f"R² Score: {r2:.3f}")

7. 평가 지표

분류

  • 정확도(Accuracy): 전체 예측 중 맞힌 비율
  • 정밀도(Precision), 재현율(Recall), F1 점수

회귀

  • MSE(Mean Squared Error), RMSE
  • R²(결정계수): 1에 가까울수록 좋음

8. 오늘의 핵심 요약

  • 지도학습은 정답이 있는 데이터로 학습
  • 분류는 범주 예측, 회귀는 연속값 예측
  • 모델 선택과 평가 지표 선택이 중요
  • 실습을 통해 분류와 회귀 모델 구현 방법 이해

반응형