iPAS AI 應用規劃師 中級 科目一

資料漂移怎麼偵測?

原題 22

某電商平台開發的顧客流失預測模型在上線數月後,預測準確率明顯下降。專案團隊懷疑顧客行為模式改變,導致模型輸入特徵的分佈與原始訓練資料不同,出現典型的資料漂移(Data Drift)問題。為了偵測並確認資料分佈是否發生變化,下列哪一種作法最合適?

白話

一家電商的 AI 模型剛上線時很準,幾個月後準確率越來越低。團隊懷疑是「資料漂移」(Data Drift)造成的,也就是現在進來的顧客資料,跟當初訓練模型的資料,分佈已經不一樣了。

問你:如果你想確認「資料分佈到底有沒有改變」,應該用哪一種方法?

點選你的答案。

01 總結

一句話總結

偵測資料漂移的直接方法是:計算訓練資料與現在進來的資料之間的 KL 散度(KL Divergence),數值越大代表分佈差越多,漂移越嚴重

02 情境

先感受問題:模型變笨了,但原因在哪?

假設你在「購物王」電商平台負責一個顧客流失預測模型,模型去年上線時準確率 88%,今年剩 71%。

你有兩個可能原因:

可能 1:顧客行為改變了,新資料的分佈跟當初訓練時不同(資料漂移)
可能 2:模型本身就有問題,需要重新設計

在動手重訓模型之前,你要先搞清楚:到底有沒有漂移?漂移有多嚴重?哪個特徵漂移最多?

舉個例子。你的模型用了「每月平均消費金額」這個特徵。訓練資料是 2023 年的,平均消費大概落在 1,200 元,分佈集中在 800~1,600 元。

但 2024 年通膨加上促銷策略改變,現在顧客平均消費變成 2,800 元,分佈拉到 1,800~3,600 元。

模型完全沒看過這個範圍的資料,當然亂猜。

03 對照

不量分佈差距,你根本不知道問題出在哪

直覺上你可能想到幾個「反應」:模型不準就重訓、讓模型更複雜、多收點測試資料。這些做法都沒有回答「分佈有沒有變」這個問題:

  1. 重新訓練(選項 A)是應對措施,不是偵測工具:你根本不知道漂移在哪裡就重訓,結果可能一樣糟。而且重訓成本高,要先確認真的需要才做。
  2. 讓模型更複雜(選項 B)解決不了問題根源:如果是資料分佈變了,更複雜的模型只是在新的錯誤分佈上過擬合,準確率可能短暫回升但根本沒解決。
  3. 增加測試資料量(選項 C)是評估模型,不是偵測分佈:你在測更多,但測的是什麼?如果測試集和訓練集的分佈本來就一樣,準確率可能看起來還行,但你會誤判「資料沒有漂移」。
  4. 沒有量化指標,不知道嚴不嚴重:感覺「好像不一樣」不夠。你需要一個數字來決定「值不值得重訓」。
  5. 不知道哪個特徵在漂移:模型可能有 50 個輸入特徵,你要知道是「消費金額」在漂還是「瀏覽頻率」在漂,才能針對性處理。
04 解法

KL 散度:直接量「兩個分佈差多遠」

KL 散度(Kullback-Leibler Divergence,KL Divergence)是一個數學工具,可以直接計算「兩個分佈之間的距離」。

回到「購物王」的例子。你把訓練資料的「每月消費金額」分佈,和最近三個月線上資料的分佈,各自畫出來:

訓練資料分佈 P:集中在 800~1,600 元,峰值 1,200 元
現在資料分佈 Q:集中在 1,800~3,600 元,峰值 2,800 元
KL(P || Q) = 0.87(數值高 → 漂移嚴重)

你同時也算了「瀏覽頻率」的 KL 散度:

KL(P || Q) = 0.03(數值低 → 幾乎沒漂移)

結論很清楚:消費金額這個特徵嚴重漂移,瀏覽頻率幾乎沒變。你知道問題出在哪了,才能決定下一步(重新收集新資料、更新特徵工程、還是重訓模型)。

這就是選項 D 講的:計算輸入特徵分佈間的 KL 散度(KL Divergence)

技術版:KL 散度的公式與實作

中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。

KL 散度的公式(離散版本):

KL(P || Q) = Σ P(x) × log( P(x) / Q(x) )

P 是參考分佈(訓練時的資料),Q 是當前分佈(線上進來的資料)。

Step 1 純故事版
  1. 把訓練資料和現在資料各自「統計成直方圖」
  2. 對每個 bin(區間),計算「訓練資料的比例」和「現在資料的比例」
  3. 用公式把每個 bin 的差距加總
  4. KL 散度是 0 代表完全一樣,越大代表差越多
Step 2 中文 ↔ 程式碼對照
故事程式碼
計算兩個分佈的 KL 散度from scipy.special import kl_div
訓練資料直方圖(頻率)p = np.histogram(train_data, bins=50, density=True)[0]
現在資料直方圖(頻率)q = np.histogram(live_data, bins=50, density=True)[0]
加一個小值避免 log(0)p += 1e-10; q += 1e-10
計算 KL 散度總和kl_score = np.sum(kl_div(p, q))
Step 3 符號角色表
P(x)
訓練資料在 x 這個值出現的機率。是你的「參考基準」。
Q(x)
現在線上資料在 x 這個值出現的機率。要和 P 比較的對象。
log( P(x) / Q(x) )
兩個機率的比值取 log。比值越大(Q 比 P 小很多)代表這個區間的差距越大。
Σ(求和)
把所有 x 值的差距加起來,得到整體的漂移程度。
KL = 0
P 和 Q 完全一樣,沒有漂移。
KL > 閾值
超過預設門檻(例如 0.1 或 0.5)就觸發漂移警報,通知團隊重新評估模型。
Step 4 完整公式對應

KL 散度是「非對稱的」:KL(P||Q) 和 KL(Q||P) 結果不同。通常用 P 是訓練分佈,Q 是線上分佈,表示「現在的資料偏離訓練資料多遠」。

若要對稱版本,可以用 JS 散度(Jensen-Shannon Divergence):

M = (P + Q) / 2
JS(P, Q) = (KL(P||M) + KL(Q||M)) / 2

JS 散度有界(0 到 1 之間),更適合設定固定閾值來觸發警報。

Step 5 自我複述

蓋住公式,說出偵測資料漂移的步驟:

  1. 取訓練資料和現在線上資料,各自統計成分佈
  2. 對每個特徵計算 KL 散度
  3. KL 散度越大代表漂移越嚴重
  4. 設定閾值,超過就觸發警報或重新評估
05 陷阱

為什麼其他選項是錯的

A定期重新訓練模型以應對外部變化

字面在說什麼

設定一個排程,例如每個月重新拿新資料訓練一次,讓模型跟上資料的變化。

為什麼不對

重新訓練是「應對漂移的手段」,不是「偵測漂移的方法」。題目問的是怎麼確認分佈有沒有變,而不是確認之後怎麼辦。而且盲目定期重訓有代價:計算資源、時間、可能的模型退化風險,應該在確認有漂移後才執行,不是無條件定期跑。

誰會選錯

直覺認為「模型不準就重訓」的考生。記住:偵測和應對是兩件事。先量清楚有沒有漂移、漂移在哪,再決定要不要重訓。

B提升模型複雜度以捕捉更多資料變異性

字面在說什麼

讓模型從簡單的(例如線性迴歸)換成更複雜的(例如深度神經網路),希望更複雜的模型可以處理更多樣的資料。

為什麼不對

複雜度解決的是「模型能力不足(underfitting)」的問題,不是資料分佈改變的問題。如果現在的資料分佈已經偏移到訓練時從未見過的範圍,再複雜的模型也是對著錯誤的分佈過擬合,治標不治本。更複雜的模型還可能加重過擬合。

誰會選錯

把「模型不準」直接歸因於「模型太簡單」的考生。要先排除資料問題,才能考慮模型本身的問題。資料漂移和模型容量是兩個獨立的診斷維度。

C增加測試資料量以提高評估準確度

字面在說什麼

蒐集更多測試資料來跑評估,讓準確率數字更穩定、更可信。

為什麼不對

增加測試資料量可以讓評估結果更穩定,但它沒辦法告訴你「分佈有沒有變」。如果你的測試集也是舊資料,準確率看起來好看也不代表沒有漂移;如果測試集換成新資料,你只是在量「新資料上的表現」,還是沒有比較分佈的差異。

誰會選錯

習慣用「多收資料」解決問題的考生。注意:測試資料量影響的是評估的統計信心,不是分佈差距的量化。偵測分佈是否改變需要「比較兩個分佈」,而不是「收更多同一批分佈的資料」。

06 變形

同個考點下次怎麼變形

變形 1 邊界

KL 散度等於 0 代表什麼?等於 ∞ 代表什麼?

直覺

KL = 0 完全沒漂移,KL 越大漂移越嚴重。那極端情況是什麼?

答案

KL = 0 代表兩個分佈完全一致,沒有任何漂移。KL → ∞ 出現在「Q(x) = 0 但 P(x) > 0」的情況,也就是訓練資料裡某個值存在,但現在根本沒有出現過,公式裡 log(P/Q) 趨近無限大。實務上要加平滑項(+1e-10)避免除以零。

變形 2 反例

只看模型準確率能偵測到資料漂移嗎?

直覺

準確率下降不就代表有問題了?

答案

不夠。有兩種漂移情況:「輸入特徵分佈改變(Covariate Drift)」和「標籤分佈改變(Label Drift)」。如果沒有即時的真實標籤(很多線上模型的真實答案要幾週後才知道),你根本算不出準確率,漂移就被延遲發現了。KL 散度只需要輸入特徵,不需要等標籤回來,偵測速度快得多。

變形 3 升級版

除了 KL 散度,還有哪些常見的分佈漂移偵測方法?

直覺

KL 散度只是其中一種,考試可能問到其他的。

答案

常見的有:(1) Population Stability Index(PSI,群體穩定性指標):和 KL 散度類似但對稱,常用於金融風控;(2) Kolmogorov-Smirnov 檢定(KS Test):統計假設檢定,判斷兩個分佈是否顯著不同;(3) Wasserstein 距離(推土機距離):計算「把一個分佈變成另一個需要移動多少土」;(4) 直方圖比對:最直覺的視覺化方式。

變形 4 跨領域

資料漂移在醫療 AI 中有什麼特別的挑戰?

直覺

醫療 AI 用的資料(病歷、影像)也會漂移?

答案

會,而且後果更嚴重。醫療漂移來源包括:設備升級(新版 MRI 機器拍出的影像分佈不同)、病患族群改變(疫情改變了哪種病人會來醫院)、診療標準更新(診斷定義改變導致標籤分佈偏移)。醫療 AI 漂移監控要求更嚴格,通常需要定期的臨床驗證,而不只是自動化的統計偵測。

變形 5 評估指標

怎麼設定 KL 散度的「漂移警報門檻」?

直覺

KL 散度多大才算「嚴重」?0.1?0.5?1.0?

答案

沒有固定標準,門檻要根據業務情境設定。常見做法:(1) 在模型剛上線的前幾週(資料分佈最穩定時)計算 KL 散度當作基準值,之後超過基準的 2~3 倍就警報;(2) 對業務影響較大的特徵設較低門檻(例如 KL > 0.1 就警報),對影響較小的特徵設較高門檻;(3) 結合業務指標(如轉換率、流失率)一起監控,讓門檻有業務意義。

07 延伸

想再往下看,這 5 個

  • 資料漂移(Data Drift)模型上線後輸入特徵分佈偏離訓練資料的現象,是本題電商模型效能下降的根本原因。
  • KL散度(KL Divergence)衡量兩個機率分佈差異的指標,本題正解工具,數值越大代表分佈偏移越嚴重。
  • 模型監控(Model Monitoring)上線後持續追蹤模型表現的系統,資料漂移偵測是其核心功能之一,KL 散度可作為監控觸發條件。
  • 概念漂移(Concept Drift)輸入與輸出之間的關係隨時間改變,與特徵分佈漂移不同,兩者常被混淆但需要不同的偵測策略。
  • 資料管線(Data Pipeline)持續將新資料輸入模型的工程基礎設施,漂移偵測需要在管線中嵌入分佈比對邏輯才能自動化監控。
出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二次 iPAS AI 應用規劃師 中級 科目一 第 22 題

查看官方原文 PDF