AI 第9天:監督學習與非監督學習
機器學習的核心方法可以分為監督學習與非監督學習,這兩種方法適用於不同的數據類型與問題場景。今天我們將探索它們的基本概念、應用場景,以及簡單的 Python 實作範例。
課程目標
- 理解監督學習與非監督學習的核心概念與區別。
- 瞭解常見演算法及其應用場景。
- 實作簡單的監督學習和非監督學習模型。
課程內容
1. 監督學習(Supervised Learning)
1.1 核心概念
監督學習使用已經標註好的數據(包含輸入與對應的輸出)來訓練模型,使其能預測未見數據的輸出。
1.2 應用場景
- 分類問題: 判斷電子郵件是否為垃圾郵件。
- 回歸問題: 預測房價或股票價格。
1.3 常見演算法
- 線性迴歸(Linear Regression)
- 支援向量機(Support Vector Machine, SVM)
- 隨機森林(Random Forest)
- 神經網絡(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 常見演算法
- K-Means 分群
- 主成分分析(PCA)
- 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. 監督學習與非監督學習的比較
特點 | 監督學習 | 非監督學習 |
---|---|---|
數據特性 | 有標籤數據(輸入與輸出) | 無標籤數據(僅輸入) |
目標 | 預測目標輸出值 | 發掘數據內部結構或模式 |
常見應用 | 分類、回歸問題 | 分群、降維問題 |
範例 | 預測房價、垃圾郵件分類 | 顧客分群、資料壓縮 |
課後作業
監督學習實作:
使用任意數據集(例如 UCI 的房價數據集)建立一個迴歸模型,並測試模型準確度。非監督學習實作:
搜集一組無標籤數據,使用 K-Means 分群,並嘗試解釋各分群的特徵。思考與回答:
- 你能舉例出一些現實問題適合用監督學習解決嗎?哪些問題則適合非監督學習?
- 如果標籤數據不足,你會如何處理?
本文章以 CC BY 4.0 授權