iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用・114 年第二次・L23・第 38 題

這段 Python 計算的是哪個迴歸評估指標?

原題

附圖程式碼所計算的是哪一類型的評估指標? def metric(y_true, y_pred): return sum((y_true - y_pred) ** 2) / len(y_true)

白話

這段 Python 函數接收真實值(y_true)和預測值(y_pred),做了:「算每個差值的平方,加總,再除以樣本數」。

問你:這個計算對應的是哪一個迴歸評估指標的公式?

一句話總結

這段程式碼計算的是 MSE(均方誤差):把每個樣本的預測誤差平方起來,加總後除以樣本數,公式是 Σ(yᵢ − ŷᵢ)² / n。

情境

先感受問題:程式碼在算什麼?逐行讀懂它

「數據智能」公司的工程師張薇在評估一個房價預測模型,她寫了一個自定義的評估函數,想確認自己有沒有寫對。

她的程式碼做了三件事:

步驟 1:y_true - y_pred

→ 算每筆資料的「預測誤差」(真實房價 − 預測房價)

步驟 2:(y_true - y_pred) ** 2

→ 把每個誤差「平方」(讓正負誤差都變成正數,且大誤差懲罰更重)

步驟 3:sum(...) / len(y_true)

→ 「加總」所有平方誤差,再「除以樣本數 n」→ 取平均

這三個步驟就是「均方誤差(MSE, Mean Squared Error)」的定義:誤差平方的平均值。

舊方法

四個迴歸指標的公式有什麼不同?

  1. MAE(平均絕對誤差):取誤差的「絕對值」再平均,公式是 Σ|yᵢ − ŷᵢ| / n。和 MSE 的差異:MAE 用絕對值,MSE 用平方。程式碼中是 ** 2(平方)不是 abs()(絕對值),所以不是 MAE。
  2. MSE(均方誤差):取誤差的「平方」再平均,公式是 Σ(yᵢ − ŷᵢ)² / n。程式碼完全對應這個公式。
  3. RMSE(均方根誤差):MSE 再開根號,公式是 √[Σ(yᵢ − ŷᵢ)² / n]。程式碼沒有開根號(沒有 np.sqrt 或 ** 0.5),所以不是 RMSE。
  4. R²(決定係數):衡量模型解釋了多少資料變異量,公式複雜,涉及 SS_res / SS_tot 的比較,和「差的平方除以 n」完全不同的結構。
  5. 辨識關鍵:MSE vs RMSE 的差別只有一個開根號:這是最容易混淆的地方。MSE = Σ差² / n;RMSE = √(MSE)。看到程式碼裡有沒有 sqrt 或 ** 0.5,是分辨兩者的關鍵。

新方法

逐行對照程式碼和 MSE 公式

張薇逐行確認她的函數:

MSE 公式:(1/n) × Σᵢ (yᵢ − ŷᵢ)²

程式碼:

(y_true - y_pred) ** 2 → (yᵢ − ŷᵢ)² ✓(每個樣本的平方誤差)

sum(...) → Σ ✓(加總所有樣本)

/ len(y_true) → / n ✓(除以樣本數,取平均)

完整對應:sum((y_true - y_pred) ** 2) / len(y_true) = (1/n) × Σ(yᵢ − ŷᵢ)² = MSE ✓

確認:沒有 abs()(所以不是 MAE),沒有 sqrt(所以不是 RMSE),沒有和 SS_tot 比較(所以不是 R²)。

這就是選項 B 講的:MSE。

錯選項

為什麼其他選項是錯的

AMAE(平均絕對誤差)

字面在說什麼

這段程式碼計算的是平均絕對誤差。

為什麼不對

MAE 的公式是 Σ|yᵢ − ŷᵢ| / n,關鍵操作是「取絕對值」(abs)。程式碼中是 ** 2(平方),不是 abs()(絕對值)。平方和絕對值的差異決定了 MSE 和 MAE 的不同:平方讓大誤差懲罰更重,絕對值對每個誤差的懲罰是線性的。

誰會選錯

看到「誤差的某種平均」就猜 MAE,沒有仔細看是「平方」還是「絕對值」的人。

CRMSE(均方根誤差)

字面在說什麼

這段程式碼計算的是均方根誤差。

為什麼不對

RMSE = √MSE,是在 MSE 的基礎上多加一個開根號(np.sqrt 或 ** 0.5)。程式碼中沒有任何開根號的操作,所以這是 MSE 而非 RMSE。RMSE 和 MSE 長得非常像,唯一差別就是最外層是否有 sqrt,這是最常見的混淆點。

誰會選錯

RMSE 是「更常被使用」的評估指標(因為和原始資料同單位),很多人腦中存的是 RMSE 而非 MSE,看到「差的平方然後平均」直接聯想到 RMSE,忘了 RMSE 還需要開根號。

DR²(決定係數)

字面在說什麼

這段程式碼計算的是 R²(R-squared)。

為什麼不對

R² 的公式是 1 − (SS_res / SS_tot) = 1 − [Σ(yᵢ − ŷᵢ)² / Σ(yᵢ − ȳ)²],需要用到「真實值的平均值 ȳ」和「總平方和 SS_tot」。程式碼只用了 y_true 和 y_pred,沒有計算 ȳ 或 SS_tot,結構完全不符。R² 的輸出在 0 到 1 之間(完美預測為 1),而 MSE 的輸出是誤差的量級,沒有固定範圍。

誰會選錯

看到「(真實值 − 預測值)² 的某種操作」就以為是 R² 的人,沒有記住 R² 公式的完整結構。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用 第 38 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。