AI時代系列(1) 機器學習三部曲: 🔹 第一部:《機器學習 —— AI 智慧的啟航》
13/100 第二週:資料處理與特徵工程
13.資料處理與特徵工程— 讓數據回歸一致尺度,模型不再左右為難! ⚖️
標準化與正規化 📏
數據維持統一尺度,讓模型學習更穩定!
📏
數據的量級不同,會讓機器學習模型「誤以為」某些特徵特別重要!為了避免模型學得歪七扭八,我們需要將特徵「縮放」到一個統一的尺度。
這就是今天的主題:**標準化(Standardization)與正規化(Normalization)!**🚀
讓我們把資料調整得更漂亮、模型學得更順手!
📌 1 為什麼要標準化與正規化?
若數據的尺度差異太大,會導致以下問題:
✅ 距離型演算法(如 KNN、K-Means、SVM)被高數值欄位主導
✅ 梯度下降收斂變慢或震盪
✅ 不同單位(如收入 vs. 年齡)難以比較,影響特徵重要性評估
📌 2 標準化(Standardization)
👉 適用於大多數模型,尤其是基於 高斯分布(常態分布) 的模型。
🔹 定義:
將特徵轉換為平均為 0、標準差為 1 的分布
公式:
z=x−μσz = \frac{x - \mu}{\sigma}z=σx−μ
🔹 Python 實作:
python
複製編輯
from sklearn.preprocessing import StandardScaler
import pandas as pd
# 模擬數據
data = pd.DataFrame({
'年齡': [25, 35, 45, 32, 28],
'收入': [50000, 80000, 120000, 75000, 60000]
})
# 標準化
scaler = StandardScaler()
data_std = scaler.fit_transform(data)
print("標準化後數據:\n", pd.DataFrame(data_std, columns=data.columns))
🔹 優缺點
方法
優點
缺點
標準化
對常態分布資料效果佳
不適用於非高斯分布資料
支援負值,適合線性模型等
對極端異常值仍敏感
📌 3 正規化(Normalization)
👉 適用於需要將數據縮放至某個固定範圍(如 0 到 1)的情境。
🔹 定義:
將資料縮放至 0,10, 10,1 之間
公式:
xnorm=x−xminxmax−xminx_{\text{norm}} = \frac{x - x_{\min}}{x_{\max} - x_{\min}}xnorm=xmax−xminx−xmin
🔹 Python 實作:
python
複製編輯
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data_norm = scaler.fit_transform(data)
print("正規化後數據:\n", pd.DataFrame(data_norm, columns=data.columns))
🔹 優缺點
方法
優點
缺點
正規化
對於距離計算演算法效果極佳
對極端值非常敏感,會扭曲結果
所有值都落在明確範圍內
非常依賴資料中最大最小值
📌 4 如何選擇?
情境
推薦方法
資料呈常態分布
標準化
資料非常態、需距離比較
正規化
對神經網路(如深度學習)
正規化或批次標準化 (BatchNorm)
存在極端離群值
需先進行離群值處理,再選方法
📌 5 測驗:你會選擇適當的縮放方式嗎?
📝 單選題
1️⃣ 對於需要計算距離的 KNN 模型,且資料不是常態分布,你應該怎麼處理?
A. 不做處理
B. 使用標準化
C. 使用正規化
D. 使用 PCA
✅ 答案:C
📌 解析:KNN 計算歐式距離時,建議使用正規化以避免高數值特徵主導結果。
🎯 恭喜!你已經掌握了資料縮放的關鍵技巧,AI 模型會因你更聰明!