머신러닝의 기초: 지도학습 개념 및 예시 코드
잡학다식의 지식공방

빅데이터 관련 자료/Machine Learning

머신러닝의 기초: 지도학습 개념 및 예시 코드

carpe08 2024. 1. 20. 16:52

1. 지도 학습이란?

지도 학습(Supervised Learning)은 입력 데이터(특징)와 정답(레이블)을 활용하여 모델을 학습시키는 기계 학습 방법입니다. 주어진 데이터에서 패턴을 찾아 새로운 입력에 대한 예측을 수행할 수 있도록 모델을 훈련하는 방식입니다.

지도 학습은 크게 두 가지 유형으로 나뉩니다:

  • 분류(Classification): 데이터를 미리 정의된 여러 개의 클래스 중 하나로 분류하는 문제 (예: 스팸 메일 분류)
  • 회귀(Regression): 연속적인 값을 예측하는 문제 (예: 주택 가격 예측)

2. 분류(Classification) 예제: 이메일 스팸 필터링

🔹 문제 정의

  • 입력 데이터: 이메일 텍스트 내용
  • 레이블: 스팸(1) 또는 정상(0)

🔹 코드 구현

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score

# 샘플 데이터 (예제용, 실제로는 더 큰 데이터셋 필요)
email_texts = ["Free money now!!!", "Hi, how are you?", "Claim your prize today!", "Meeting at 3 PM"]
labels = [1, 0, 1, 0]  # 1: 스팸, 0: 정상

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(email_texts, labels, test_size=0.2, random_state=42)

# 텍스트 데이터를 벡터화
vectorizer = CountVectorizer()
X_train_vec = vectorizer.fit_transform(X_train)
X_test_vec = vectorizer.transform(X_test)

# 나이브 베이즈 모델 학습
classifier = MultinomialNB()
classifier.fit(X_train_vec, y_train)

# 예측 및 평가
predictions = classifier.predict(X_test_vec)
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy}")

주요 과정

  1. 데이터를 훈련 세트와 테스트 세트로 나눔
  2. 텍스트 데이터를 수치화(벡터화)
  3. 나이브 베이즈(Naive Bayes) 모델을 사용하여 학습
  4. 테스트 데이터로 성능 평가

3. 회귀(Regression) 예제: 주택 가격 예측

🔹 문제 정의

  • 입력 데이터: 주택의 특징(면적, 방 개수 등)
  • 레이블: 주택 가격(연속적인 값)

🔹 코드 구현

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
import numpy as np

# 샘플 데이터 (면적, 방 개수, 가격)
data = np.array([
    [1400, 3, 240000],
    [1600, 4, 270000],
    [1700, 3, 310000],
    [1875, 3, 330000]
])

# 특성과 타겟 분리
X = data[:, :2]  # 면적, 방 개수
y = data[:, 2]   # 가격

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 선형 회귀 모델 학습
model = LinearRegression()
model.fit(X_train, y_train)

# 예측 및 평가
predictions = model.predict(X_test)
mae = mean_absolute_error(y_test, predictions)
print(f"Mean Absolute Error: {mae}")

주요 과정

  1. 주택 데이터를 훈련 세트와 테스트 세트로 분할
  2. 선형 회귀 모델 학습
  3. 테스트 데이터로 예측 수행 및 평가

4. 지도 학습의 장점과 단점

장점 설명

높은 정확도 라벨이 주어져 있어 학습 효과가 높음
다양한 응용 가능성 분류, 회귀, 텍스트 분석, 이미지 인식 등 다양한 분야에 적용 가능
해석 가능성 일부 모델(선형 회귀 등)은 결과를 해석하기 용이함

단점 설명

라벨링된 데이터 필요 데이터 수집 및 라벨링 비용이 높음
과적합 가능성 훈련 데이터에 너무 맞추면 새로운 데이터에 대한 성능이 저하됨
비선형 문제 한계 간단한 모델(예: 선형 회귀)은 복잡한 데이터 패턴을 잘 학습하지 못함

5. 지도 학습 활용 사례

✅ 의료 진단

  • 환자 데이터를 기반으로 질병을 예측하는 모델 개발

✅ 금융 예측

  • 신용 점수 평가, 주식 가격 예측 등 금융 데이터 분석

✅ 자연어 처리

  • 텍스트 분류, 감성 분석, 기계 번역 등 다양한 NLP 응용

결론

지도 학습은 강력한 기계 학습 방법으로, 다양한 문제를 해결하는 데 활용됩니다. 높은 정확도와 적용 범위가 넓지만, 데이터 라벨링의 어려움과 과적합 가능성에 유의해야 합니다. 적절한 모델 선택과 데이터 처리 과정을 통해 최적의 성능을 확보하는 것이 중요합니다! 

320x100
320x100