A A
[ML] Supervised Learning (μ§€λ„ν•™μŠ΅)
μ΄λ²ˆμ—λŠ” Supervised Learning (μ§€λ„ν•™μŠ΅)에 λ°ν•œ κ°œλ…μ— λ°ν•˜μ—¬ ν•œλ²ˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

Supervised Learning (μ§€λ„ν•™μŠ΅)

μ§€λ„ν•™μŠ΅μ€ λ¨Έμ‹ λŸ¬λ‹μ˜ ν•œ λΆ„μ•Όλ‘œ, 라벨이 μžˆλŠ” 데이터λ₯Ό 기반으둜 ν•™μŠ΅ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€.
  • μž…λ ₯ 데이터와 이에 μƒμ‘ν•˜λŠ” 좜λ ₯ κ°’(λͺ©ν‘œ λ˜λŠ” 라벨)이 주어지며, λͺ¨λΈμ€ 이 데이터λ₯Ό 톡해 ν•™μŠ΅ν•˜μ—¬ μƒˆλ‘œμš΄ μž…λ ₯에 λŒ€ν•΄ μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ§€λ„ν•™μŠ΅μ€ 크게 νšŒκ·€(Regression)와 λΆ„λ₯˜(Classification)둜 λ‚˜λ‰©λ‹ˆλ‹€.

좜처: https://mvje.tistory.com/77


Regression (νšŒκ·€)

νšŒκ·€λŠ” 연속적인 숫자 값을 μ˜ˆμΈ‘ν•˜λŠ” 문제λ₯Ό λ‹€λ£Ήλ‹ˆλ‹€.
  • 예λ₯Ό λ“€μ–΄, μ£Όνƒμ˜ 면적, λ°© 개수, μœ„μΉ˜ 등을 기반으둜 주택 가격을 μ˜ˆμΈ‘ν•˜λŠ” κ²½μš°κ°€ 이에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.
  • νšŒκ·€ λ¬Έμ œμ—μ„œλŠ” μ˜ˆμΈ‘ν•˜λ €λŠ” 값이 연속적인 숫자둜 ν‘œν˜„λ©λ‹ˆλ‹€.
  • μ˜ˆμ‹œλ₯Ό λ“€λ©΄, 집값 예츑: μ£Όνƒμ˜ 크기, μœ„μΉ˜, 연식 λ“±μ˜ 데이터λ₯Ό λ°”νƒ•μœΌλ‘œ 주택 가격을 μ˜ˆμΈ‘ν•©λ‹ˆλ‹€.
  • 기온 예츑: 과거의 기온 데이터λ₯Ό λ°”νƒ•μœΌλ‘œ 미래의 κΈ°μ˜¨μ„ μ˜ˆμΈ‘ν•©λ‹ˆλ‹€.

Regression (νšŒκ·€)의 μ£Όμš” μ•Œκ³ λ¦¬μ¦˜

  • λ‹¨μˆœ μ„ ν˜• νšŒκ·€(Simple Linear Regression): ν•˜λ‚˜μ˜ λ…λ¦½λ³€μˆ˜(X)와 μ’…μ†λ³€μˆ˜(Y)κ°„μ˜ 관계λ₯Ό μ§μ„ μœΌλ‘œ λͺ¨λΈλ§ν•©λ‹ˆλ‹€. 데이터 ν¬μΈνŠΈμ— κ°€μž₯ 잘 λ§žλŠ” 직선을 μ°ΎλŠ”κ²ƒμ„ λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.
    • 직선은 Y = aX + b의 ν˜•νƒœλ₯Ό 가지며, μ—¬κΈ°μ„œ a,bλŠ” λͺ¨λΈμ˜ ν•™μŠ΅μ„ 톡해 결정이 λ©λ‹ˆλ‹€.
  • 닀쀑 μ„ ν˜• νšŒκ·€(Multiple Linear Regression): μ—¬λŸ¬κ°œμ˜ λ…λ¦½λ³€μˆ˜(X)와 ν•˜λ‚˜μ˜ μ’…μ†λ³€μˆ˜(Y)κ°„μ˜ 관계λ₯Ό λͺ¨λΈλ§ν•©λ‹ˆλ‹€. λ°μ΄ν„°μ˜ μ—¬λŸ¬κ°œμ˜ μž…λ ₯λ³€μˆ˜λ₯Ό κ³ λ €ν•˜μ—¬ κ²°κ³Όλ₯Ό μ˜ˆμΈ‘ν•©λ‹ˆλ‹€.
    • λͺ¨λŒˆμ˜ ν˜•νƒœλŠ” Y = a1X1 + a2X2 + ... + anXn + b 의 ν˜•νƒœ μž…λ‹ˆλ‹€.
  • 릿지 νšŒκ·€(Ridge Regression) & 라쏘 νšŒκ·€(Lasso Regression): 닀쀑 μ„ ν˜• νšŒκ·€(Multiple Linear Regression)의 ν™•μž₯ λ²„μ „μœΌλ‘œ, Overfitting(과적합)을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ Normalization(μ •κ·œν™”)λ₯Ό μ μš©ν•©λ‹ˆλ‹€.
    • 릿지 νšŒκ·€(Ridge Regression)λŠ” κ³„μˆ˜μ— λŒ€ν•œ L2 μ •κ·œν™”, 라쏘 νšŒκ·€(Lasso Regression)λŠ” L1 μ •κ·œν™”λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ˜ λ³΅μž‘λ„λ₯Ό μ€„μž…λ‹ˆλ‹€.

Example Code

from sklearn.linear_model import LinearRegression

# 데이터 μ€€λΉ„ (예: 면적, 가격)
X = [[1500], [1800], [2400], [3000], [3500]]  # 면적 (ν‰λ°©ν”ΌνŠΈ)
y = [200000, 250000, 320000, 380000, 450000]  # 가격 (λ‹¬λŸ¬)

# λͺ¨λΈ ν•™μŠ΅
model = LinearRegression()
model.fit(X, y)

# μƒˆλ‘œμš΄ 데이터 예츑
new_data = [[2000]]  # μ˜ˆμΈ‘ν•  면적
predicted_price = model.predict(new_data)
print(f"예츑 가격: ${predicted_price[0]:.2f}")

# 예츑 가격: $267013.18

Classification (λΆ„λ₯˜)

λΆ„λ₯˜λŠ” λ²”μ£Όν˜• 값을 μ˜ˆμΈ‘ν•˜λŠ” 문제λ₯Ό λ‹€λ£Ήλ‹ˆλ‹€.
  • 예λ₯Ό λ“€μ–΄, 이메일이 μŠ€νŒΈμΈμ§€ μ•„λ‹Œμ§€λ₯Ό λΆ„λ₯˜ν•˜κ±°λ‚˜, μ΄λ―Έμ§€μ—μ„œ νŠΉμ • 객체λ₯Ό μΈμ‹ν•˜λŠ” κ²½μš°κ°€ 이에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.
  • λΆ„λ₯˜ λ¬Έμ œμ—μ„œλŠ” μ˜ˆμΈ‘ν•˜λ €λŠ” κ²°κ³Όκ°€ 이산적인 클래슀(예: 슀팸/정상, 고양이/개)둜 λ‚˜λ‰©λ‹ˆλ‹€.
  • μ˜ˆμ‹œλ₯Ό λ“€λ©΄, 슀팸 메일 λΆ„λ₯˜: μ΄λ©”μΌμ˜ λ‚΄μš©μ„ λΆ„μ„ν•˜μ—¬ 슀팸 메일인지 μ•„λ‹Œμ§€λ₯Ό νŒλ‹¨ν•©λ‹ˆλ‹€.
  • 이미지 λΆ„λ₯˜: 이미지 데이터λ₯Ό λΆ„μ„ν•˜μ—¬ ν•΄λ‹Ή 이미지가 μ–΄λ–€ 객체λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλŠ”μ§€ λΆ„λ₯˜ν•©λ‹ˆλ‹€.

Classification (λΆ„λ₯˜)의 μ£Όμš” μ•Œκ³ λ¦¬μ¦˜

  • λ‘œμ§€μŠ€ν‹± νšŒκ·€(Logistic Regression): Binary(이진)λΆ„λ₯˜ λ¬Έμ œμ—μ„œ 주둜 μ‚¬μš©λ©λ‹ˆλ‹€. 데이터가 νŠΉμ • ν΄λž˜μŠ€μ— 속할 ν™•λ₯ μ„ 주둜 μ˜ˆμΈ‘ν•˜λ©°, Sigmoid Function(μ‹œκ·Έλͺ¨μ΄λ“œ ν•¨μˆ˜)λ₯Ό μ‚¬μš©ν•˜μ—¬ 예츑 κ²°κ³Όλ₯Ό 0, 1 μ‚¬μ΄μ˜ κ°’μœΌλ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.
    • 결과적으둠, 0.5λ₯Ό κΈ°μ€€μœΌλ‘œ Classλ₯Ό λΆ„λ₯˜ν•©λ‹ˆλ‹€.
  • μ„œν¬νŠΈ 벑터 λ¨Έμ‹ (Support Vector Machine, SVM): 두 Classκ°„μ˜ μ΅œλŒ€ Margin을 μ°ΎλŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. SVM 머신은 데이터λ₯Ό λ‚˜λŠ” 졜적의 Border(경계)λ₯Ό 찾으며, Margin을 μ΅œλŒ€ν™” ν•˜μ—¬ λͺ¨λΈμ˜ μΌλ°˜ν™” μ„±λŠ₯을 λ†’μž…λ‹ˆλ‹€.
    • Non-Linear(λΉ„μ„ ν˜•) λ¬Έμ œμ— λ°ν•˜μ—¬λŠ” Kernel Trick(컀널 트릭)을 μ‚¬μš©ν•˜μ—¬ ν•΄κ²°ν•©λ‹ˆλ‹€.
  • k-μ΅œκ·Όμ ‘ 이웃(k-Nearest Neighbors, k-NN): μƒˆλ‘œμš΄ 데이터 포인트의 Classifcation(λΆ„λ₯˜)λ₯Ό κ°€μž₯ κ°€κΉŒμš΄ K개의 이웃 데이터 포인트의 Class λ‹€μˆ˜λ₯Ό 기반으둜 κ²°μ •ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ μž…λ‹ˆλ‹€.
    • 데이터가 Normalization(μ •κ·œν™”)κ°€ λ˜μ–΄μžˆμ§€ μ•Šκ±°λ‚˜, μŠ€μΌ€μΌμ΄ λ‹€λ₯Όλ•Œ μ„±λŠ₯ μ΄μŠˆκ°€ μžˆμŠ΅λ‹ˆλ‹€.
  • μ˜μ‚¬κ²°μ •λ‚˜λ¬΄(Decision Tree) & 랜덀 포레슀트(Random Forest): μ˜μ‚¬κ²°μ •λ‚˜λ¬΄(Decision Tree)λŠ” 데이터λ₯Ό μ—¬λŸ¬ 기쀀에 따라 λΆ„λ₯˜ν•˜λŠ” 트리ꡬ쑰, 랜덀 ν¬λ ˆμŠ€νŠΈλŠ” λ‹€μˆ˜μ˜ μ˜μ‚¬κ²°μ •λ‚˜λ¬΄(Decision Tree)λ₯Ό 앙상블(ensemble)ν•˜μ—¬ λͺ¨λΈμ˜ 예츑 μ„±λŠ₯을 λ†’μž…λ‹ˆλ‹€.

 

Example Code

from sklearn.linear_model import LogisticRegression

# 데이터 μ€€λΉ„ (예: 이메일 λ‚΄μš© νŠΉμ„±, 라벨)
X = [[0.1, 0.6], [0.4, 0.3], [0.5, 0.7], [0.9, 0.2]]  # νŠΉμ„± (슀팸 ν™•λ₯  μ§€ν‘œ)
y = [0, 1, 0, 1]  # 라벨 (0: 정상, 1: 슀팸)

# λͺ¨λΈ ν•™μŠ΅
model = LogisticRegression()
model.fit(X, y)

# μƒˆλ‘œμš΄ 데이터 예츑
new_data = [[0.2, 0.4]]  # μ˜ˆμΈ‘ν•  데이터
predicted_class = model.predict(new_data)
print(f"예츑 κ²°κ³Ό: {'슀팸' if predicted_class[0] == 1 else '정상'}")

# 예츑 κ²°κ³Ό: 정상
  • Linear Regression에 λ°ν•˜μ—¬λŠ” λ‹€μŒκΈ€μ— μžμ„Ένžˆ μ μ–΄μ„œ μ˜€κ² μŠ΅λ‹ˆλ‹€..

Summary

Supervised Learning, μ§€λ„ν•™μŠ΅μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 것은 데이터 ν’ˆμ§ˆκ³Ό μ•Œκ³ λ¦¬μ¦˜ 선택이라고 μƒκ°ν•©λ‹ˆλ‹€.

데이터가 μΆ©λΆ„νžˆ μˆ˜μ§‘λ˜κ³  라벨링이 μž˜λ˜μ–΄ μžˆμ–΄μ•Ό λͺ¨λΈμ΄ μ œλŒ€λ‘œ ν•™μŠ΅λœλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ˜ν•œ, μ‚¬μš©μžκ°€ 가지고 μžˆλŠ” 문제의 νŠΉμ„±κ³Ό λ°μ΄ν„°μ˜ νŠΉμ„±μ— λ§žλŠ” μ•Œκ³ λ¦¬μ¦˜μ„ μ„ νƒν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, 데이터가 맀우 많고 λ³΅μž‘ν•˜λ‹€λ©΄ 랜덀 ν¬λ ˆμŠ€νŠΈλ‚˜ μ„œν¬νŠΈ 벑터 λ¨Έμ‹  같은 κ°•λ ₯ν•œ μ•Œκ³ λ¦¬μ¦˜μ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, λͺ¨λΈμ˜ μ„±λŠ₯을 ν‰κ°€ν•˜κ³  κ°œμ„ ν•˜κΈ° μœ„ν•΄ ꡐ차 검증(cross-validation), ν•˜μ΄νΌνŒŒλΌλ―Έν„° νŠœλ‹(hyperparameter tuning) 등을 ν™œμš©ν•˜μ—¬ 졜적의 λͺ¨λΈμ„ μ„ νƒν•˜κ³  예츑 정확도λ₯Ό λ†’μ—¬μ•Ό ν•©λ‹ˆλ‹€.