Hi, 大家週六好!
不知道大家有沒有被ChatGPT與Google的廝殺熱潮打到,
看起來Google目前有點劣勢阿...
該不會微軟的Bing搜尋引擎、Edge瀏覽器真的要趁著這次起飛了嗎?
希望下週還可以看到勁爆的回應😂
---
上次介紹了#資料飄移(Data Distribution Shifts)#談到資料飄移的種類,這次希望用簡短的案例來解說如何實際去偵測資料飄移,進而提早察覺資料可能產生變化,不論是有沒有後續的機器學習、資料科學相關應用,都是有幫助的!
---
*目錄*
- 前言
- 偵測資料飄移的方式
- 總結
---
*前言*
上次談到資料飄移的種類,但知道種類可能還不太足夠,需要去監控,當資料飄移發生時才可以立即解決,避免模型因為效能下降而造成的損失。
甚至光監控資料的變化就可以請資料分析師去探究原因,說不定會發現一些值得注意的問題或者訊息!
---
*偵測資料飄移的方式*
偵測資料飄移的方法通常是透過統計方法,也就是檢定,可以針對一些數值的統計量,如平均數、眾數、中位數、百分位數等等,都可以對應到不同的檢定方法。
而今天想要介紹一個方法,由Designing ML System[1]書中所述的「Kolmogorov – Smirnov test」又稱為KS Test,是一個非母數方法。
KS Test的核心思考其實是檢測分配是否與假定的分配相異(one-sample)或者兩分配是否相異(two-sample),透過這樣的方法正好可以檢測資料是否產生飄移(變壞),常用於Label Shift上!(也就是P(Y))
1. One-sample KS Test
2, Two-sample KS Test
數學細節可以參考相關的文獻。
資料科學常用的程式語言是Python/R,今天就介紹如何用Python的Scipy[2]套件進行實作:


---
*總結*
這次與大家分享了偵測資料飄移(Data Shift)的統計方法,主要是透過KS Test去驗證分配上的差異。也提供了簡短的code snippet,其中使用了統計相關常用的Scipy套件。
其中有許多統計知識沒有多說明,有興趣的讀者可以搜尋以下關鍵詞去更進一步的了解!(或者問問ChatGPT)
- 累積分配函數(cdf)
- 假說檢定
- p-value
另外也補充,近期在Google AI [3] 看到也有 KS — Test 的相關使用,有興趣的讀者可以去看看細節!主要也是比較分配上的差異。
---
*參考*
- [1] Designing Machine Learning System — Chip Huyen
- [2] SciPy
- [3] EHR-Safe: Generating High-Fidelity and Privacy-Preserving Synthetic Electronic Health Records
也可以從Medium上觀看唷,Code的內容會比較好閱讀(內容都是一樣的)



