iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
AI & Data

30 天入門常見的機器學習演算法系列 第 13

(Day 13) 迴歸任務驗證指標

  • 分享至 

  • xImage
  •  

分類任務有混淆矩陣作為指標的核心基礎,迴歸任務則建立在誤差分佈 (Error Distribution) 之上。所有迴歸指標,都是在真實值與預測值的差異上進行數學運算。迴歸的評估相對分類簡單,沒有多種 TP、FP 的組合,但每個指標關注的面向、對異常值的敏感度、在商業決策上的意義卻各有不同。

誤差的基本概念

回歸任務中,誤差 (Error) 定義為:
$$
e_i = y_i - \hat{y}_i
$$

其中:

  • $y_i$: 第 i 筆資料的真實值
  • $\hat{y}_i$: 模型的預測值
  • $e_i$: 第 i 筆的殘差 (Residual)

所有回歸評估指標,都是將 $e_i$ 做數學運算後的結果。

常見回歸驗證指標

Mean Squared Error (MSE)

將每個誤差平方後取平均。平方的動作會讓大誤差的影響成倍放大,因此 MSE 對異常值 (outlier) 非常敏感。

$$
MSE = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2
$$

特性分析

  • 誤差平方 → 大誤差懲罰重,小誤差影響相對被稀釋。
  • 單位為「原單位的平方」,如價格 (元) 預測的 MSE 單位是「元²」,因此不易直接解讀大小。

優點

  • 適合用在不能容忍大誤差的場景,例如財務風險控管 (預測錯 10 倍金額的後果極其嚴重)。
  • 在模型優化 (特別是最小平方法回歸) 中,MSE 作為損失函數具有良好數學性質 (平滑、可微分)。

缺點

  • 單位平方,對非數學背景讀者不直觀。
  • 極易被 outlier 影響,造成指標失真。

商業案例

  • 預測每日電力負載,若預測值差太多會導致供電不足或浪費;此時使用 MSE 能強烈懲罰大偏差,促使模型在高峰時段更精準。

Root Mean Squared Error (RMSE)

MSE 的開平方版本,將誤差單位轉回與原資料一致,方便直接比較預測誤差與實際業務數值。

$$
RMSE = \sqrt{MSE}
$$

特性分析

  • 保留了 MSE 對大誤差的敏感性。
  • 單位與原資料相同 (例如預測房價,RMSE 單位仍是元)。

優點

  • 便於解釋,數字意義清晰 (RMSE=500 表示預測誤差約 ±500 元的量級)。
  • 對 outlier 的反應較 MAE 強,可在需要懲罰大誤差時使用。

缺點

  • 同樣受 outlier 影響嚴重。

商業案例

  • 預測物流到貨時間,RMSE=2.5 小時,代表平均預測誤差約 2.5 小時,對排程管理與人力配置非常直觀。

Mean Absolute Error (MAE)

計算每個誤差的絕對值後取平均,所有誤差等權對待,不會放大大誤差的影響。

$$
MAE = \frac{1}{n} \sum_{i=1}^n |y_i - \hat{y}_i|
$$

特性分析

  • 對異常值更穩健 (robust),不會像 MSE / RMSE 那樣被極端值拉高。
  • 單位與原資料一致,解釋性強。

優點

  • 適合在需要公平對待每一筆樣本時使用。
  • 對非技術人員易於解讀:MAE=10 表示平均預測誤差為 10 單位。

缺點

  • 對大誤差懲罰不如 MSE 嚴格,因此可能讓模型在少數極端情況下失誤較大。

商業案例

  • 預測餐點製作時間,MAE=3 分鐘,代表平均延遲或提前約 3 分鐘,顧客體感差異可接受。

R² Score (決定係數)

衡量模型解釋資料變異的比例。

  • $R^2 = 1$: 完美預測
  • $R^2 = 0$: 與用平均值預測沒差
  • $R^2 < 0$: 模型比單純用平均值預測還差

$$
R^2 = 1 - \frac{\sum_{i=1}^n (y_i - \hat{y}i)^2}{\sum{i=1}^n (y_i - \bar{y})^2}
$$

其中:

  • $\bar{y}$ 為真實值平均。

特性分析

  • 無單位,範圍理論上可小於 0。
  • 更適合作為模型解釋力指標,而非單純誤差衡量。

優點

  • 可快速判斷模型是否比基準模型 (平均值預測) 更好。
  • 在相同資料集上,比較不同模型的相對表現方便。

缺點

  • 不反映誤差大小。
  • 在非線性、異常值多、或變異極小的資料上,$R^2$ 容易誤導。

商業案例

  • 預測房價變化,R²=0.85 表示模型可解釋 85% 的價格變異,剩餘 15% 為模型無法捕捉的隨機或未知因素。

程式實例

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
from sklearn.metrics import (
    mean_absolute_error, mean_squared_error, r2_score
)
import numpy as np

# 載入 California Housing 資料(回歸任務)
X, y = fetch_california_housing(return_X_y=True)

# 訓練/測試分割
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# 建立模型(Linear Regression)
pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("lr", LinearRegression())
])
pipe.fit(X_train, y_train)

# 預測
y_pred = pipe.predict(X_test)

# 指標計算
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
mape = np.mean(np.abs((y_test - y_pred) / y_test)) * 100
r2 = r2_score(y_test, y_pred)

print(f"MAE: {mae:.4f}")
print(f"MSE: {mse:.4f}")
print(f"RMSE: {rmse:.4f}")
print(f"MAPE: {mape:.2f}%")
print(f"R²: {r2:.4f}")

結語

回歸任務的驗證指標,看似只是數學公式,但實際上反映的是模型在不同業務情境下的行為特性:

  • MSE / RMSE: 對大誤差敏感,適合需要嚴懲極端錯誤的場景,但要注意異常值的影響。
  • MAE: 對所有誤差一視同仁,穩健且易解釋,適合日常報告與非技術溝通。
  • $R^2$: 衡量模型的解釋力,適合與基準模型或不同算法做相對比較,但不代表誤差大小。

選擇指標時,不應只看「哪個分數高」,而是要先明確業務目標與成本結構:

  • 如果漏掉一個大誤差會造成嚴重後果,那就該優先 RMSE。
  • 如果希望報告直觀易懂,就該用 MAE。
  • 如果在做模型對比與研究發表,R² 可以快速反映相對優劣。

指標本身不是目的,而是模型優化與決策的工具。理解每個指標背後的數學意義與業務含義,才能讓回歸模型的評估與優化真正服務於應用場景,而不只是停留在數字遊戲。


上一篇
(Day 12) 多元分類任務驗證指標
下一篇
(Day 14) 決策樹 (Decision Tree)
系列文
30 天入門常見的機器學習演算法30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言