#分享 如何偵測資料飄移 – KS Test

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]套件進行實作:
megapx
megapx
megapx
--- *總結* 這次與大家分享了偵測資料飄移(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的內容會比較好閱讀(內容都是一樣的)
愛心
4
2
全部留言