文章

AI 第9天:監督學習與非監督學習

機器學習的核心方法可以分為監督學習非監督學習,這兩種方法適用於不同的數據類型與問題場景。今天我們將探索它們的基本概念、應用場景,以及簡單的 Python 實作範例。


課程目標

  1. 理解監督學習與非監督學習的核心概念與區別。
  2. 瞭解常見演算法及其應用場景。
  3. 實作簡單的監督學習和非監督學習模型。

課程內容

1. 監督學習(Supervised Learning)

1.1 核心概念

監督學習使用已經標註好的數據(包含輸入與對應的輸出)來訓練模型,使其能預測未見數據的輸出。

1.2 應用場景

  • 分類問題: 判斷電子郵件是否為垃圾郵件。
  • 回歸問題: 預測房價或股票價格。

1.3 常見演算法

  1. 線性迴歸(Linear Regression)
  2. 支援向量機(Support Vector Machine, SVM)
  3. 隨機森林(Random Forest)
  4. 神經網絡(Neural Networks)

1.4 實作範例:分類問題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 載入數據
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)

# 訓練模型
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# 預測
y_pred = clf.predict(X_test)
print(f"準確率: {accuracy_score(y_test, y_pred):.2f}")

2. 非監督學習(Unsupervised Learning)

2.1 核心概念

非監督學習使用未標註的數據,通過模型發掘數據的內部結構或模式,無需依賴目標輸出值。

2.2 應用場景

  • 分群問題: 將顧客分為不同群組以便於個性化行銷。
  • 降維問題: 壓縮高維數據以便視覺化或減少噪音。

2.3 常見演算法

  1. K-Means 分群
  2. 主成分分析(PCA)
  3. DBSCAN 分群

2.4 實作範例:分群問題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 生成數據
X, _ = make_blobs(n_samples=300, centers=3, cluster_std=0.60, random_state=0)

# 使用 K-Means 進行分群
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(X)

# 分群結果
labels = kmeans.labels_
centers = kmeans.cluster_centers_

# 繪製分群圖
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=300, marker='X')
plt.title("K-Means 分群結果")
plt.show()

3. 監督學習與非監督學習的比較

特點監督學習非監督學習
數據特性有標籤數據(輸入與輸出)無標籤數據(僅輸入)
目標預測目標輸出值發掘數據內部結構或模式
常見應用分類、回歸問題分群、降維問題
範例預測房價、垃圾郵件分類顧客分群、資料壓縮

課後作業

  1. 監督學習實作:
    使用任意數據集(例如 UCI 的房價數據集)建立一個迴歸模型,並測試模型準確度。

  2. 非監督學習實作:
    搜集一組無標籤數據,使用 K-Means 分群,並嘗試解釋各分群的特徵。

  3. 思考與回答:

    • 你能舉例出一些現實問題適合用監督學習解決嗎?哪些問題則適合非監督學習?
    • 如果標籤數據不足,你會如何處理?
本文章以 CC BY 4.0 授權