淺談資料專案的測試

更新於 2018/12/24閱讀時間約 4 分鐘
測試驅動開發(Test-Driven Development, TDD)或是行為驅動開發(Behavioral-Driven Developement)是當代軟體工程裡面常見的方法論,然而以資料科學或是數據分析的專案來說,通常主要的「測試」會以模型的準確性或是資料分布的模式為核心,較少處理軟體工程裡面常見的單元測試(Unit Test)或是整合測試(Integration Test / Behavior Test),我一般跟案主在初期討論案子的時候也會先溝通這一點,通常在一開始導入資料科學技術的時候先不要花太多時間在軟體工程的測試上面,而是先以最小可行的方式驗證資料科學技術在原有商業模式上是否可以發揮價值,其優點是可以在最小的時間成本下儘速確認是否可以在既有的商業模式上透過資料技術產生正向的投資效益,然而缺點是隨著資料的增長與程式碼的增加,技術債(Technical Debt)的風險也會持續上升,因此我目前認為比較好的作法是在進行專案上架一到三個月已經產生初始的可驗證效益資料之後,立刻開始著手進行重構(Refactoring),事實上應該要說是重寫(Rewrite),因為沒有單元測試的程式碼是無法重構的。
一般來說,軟體專案的測試根據其目的可以分為以下幾類:
  • 單元測試(Unit Test):著重於單一功能的測試,邏輯明確,是TDD的基礎。
  • 探索性測試(Exploratory Test):在開始寫測試程式碼以前針對規格與功能面進行的試驗型測試。
  • 整合測試(Intergration Test):著重於功能面,測試許多單元整合起來以後是否能符合預期運作。
  • 效能測試(Performance Test):通常包含CPU使用、記憶體使用與延遲的測試。
  • 使用者介面與使用者經驗測試(UI & UX Test):屬於前端的測試工作。
  • 壓力測試(Pressure Test):著重於大流量情況下的測試,了解程式運作的硬體界限,以利未來進行擴張(Scale)的計畫準備。
  • 滲透測試(Penetration Test):著重於資安防護的測試。
就機器學習的專案來說,通常會使用以下幾種測試:
  • 交互驗證(Cross Validation):避免模型在訓練之後沒有產生過度適應(Overfitting)於訓練資料集的情況,通常使用RMSE(Root Mean Square Error)作為衡量的方式。
  • 混淆矩陣(Confusion Matrix)與ROC Curve:比較常聽見的用法是偽陰性(False Negative)與偽陽性(False Positive)這種說法,詳細探討可自成一章,可參考其他人的文章
  • AB testing:確認模型在實際的應用場景當中能夠優於對照組,或是進行參數調整。
  • 曲面圖(Surface Plot):通常透過擴大輸入輸出的範圍或是粒度,檢視模型是否有過度適應或是錯失全域最佳解的情況。
常見用於評估模型預測結果分布的曲面圖(surface plot),比較典型的其實會是有很多山峰與山谷的情形。
通常我在進行專案的時候會先以交互驗證為主,然後透過曲面圖去了解輸入輸出的侷限以及有沒有跟預期不符的情況,然後才會開始進行AB testing與confusion matrix,因為這兩個測試都要等到模型真正上線之後去擷取使用者的回應才能夠有效的判斷,以訓練資料集與交互驗證資料集做出來的數據意義比較有限。
之前因為在模型佈署的時候直接包成API給案主使用,因此效能測試也成為其中一個項目,我所使用的flask原始設定並不適合production環境使用,因此會需要做一定的調整才能符合一般線上服務在concurrency的要求,不像nodejs原生就有很好的非同步能力,這部份就有像是locust這種開源的工具可以導入,未來有機會可能可以多探討一些以flask架構的服務應該如何調整以及如何作這方面的測試。
簡單的小結一下,以Google對員工撰寫python程式碼的code review標準而言,好的文件化跟好的測試都是相當重要的環節,然而在資料專案的部分測試與傳統的CI/CD流程相比,更多了一些偏向數據分布方面的需求,而非單純資料I/O的測試,如何妥善的將數據的測試流程整合到程式的工程測試流程與妥善的自動化測試與監控,也算是近年相當重要的題目之一,如果有興趣的話可以看看這篇關於據說是取代了資料科學家成為最性感職業的「DataOps工程師
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
263會員
38內容數
本專題著重於探討資料分析實務,從實務經驗出發,探索學校所教導的建模以外的各項技術,包含資料前處理、營運整合與成效評估、團隊文化建構等等內容。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Ofa Hsueh的沙龍 的其他內容
我其實是成為資料工程師之後才開始學習成為一個資料工程師的。可能有些人會覺得困惑,學校裡面有很多像是機器學習、自然語言處理或是人工智慧等等課程,也有台灣人工智慧學校之類的培訓機構,現在連巨匠都開始教AI了,難道這樣不能夠讓人成為一個最性感的資料科學家嗎?
我在跟許多合作的企業主洽談的時候常常都會這麼說:「資料科學本質上跟算命差不多,很多時候在真實世界的預測能力上面也許比去廟裡抽籤還差,其效果可能也比不上燒紙錢,但一旦開始決定要走這條道路,基本上你就是開始入邪教了,因為這個體系跟開發網站前後端或是app不一樣,是一個沒有終點的旅程。」
我其實是成為資料工程師之後才開始學習成為一個資料工程師的。可能有些人會覺得困惑,學校裡面有很多像是機器學習、自然語言處理或是人工智慧等等課程,也有台灣人工智慧學校之類的培訓機構,現在連巨匠都開始教AI了,難道這樣不能夠讓人成為一個最性感的資料科學家嗎?
我在跟許多合作的企業主洽談的時候常常都會這麼說:「資料科學本質上跟算命差不多,很多時候在真實世界的預測能力上面也許比去廟裡抽籤還差,其效果可能也比不上燒紙錢,但一旦開始決定要走這條道路,基本上你就是開始入邪教了,因為這個體系跟開發網站前後端或是app不一樣,是一個沒有終點的旅程。」
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
咖啡的香氣和味道,從栽種、處理、烘焙到沖煮的每個流程,主要都是在展現咖啡所蘊含的風味。而藉由杯測而使的原本個人定義的好咖啡變成有了客觀化的評論。咖啡杯測除了用來區分咖啡的良莠之外,更是試出每一隻咖啡的風味特性及特色,藉以提供給業者、消費者做選擇的依據。
Thumbnail
你知道身為個人品牌的網紅也需要 『註冊商標』嗎? 包含理科太太、阿滴英文,都已經完成商標註冊來保障權益。 專利是品牌人、創作人、產品人、技術發明人都不能忽視的保護或授權獲利機制,今天邀請HerAttitude女創群裡經歷數次專利課題,越戰越勇的樂鑫開發工程創辦人Kay聊聊她的冒險故事。
Thumbnail
要解決專案延遲,就不能只認為是「特定人」的問題,而是要從系統去分析 這是Evonne跟你一起PM下午茶的第29天,今天要討論的主題是: 為什麼台鐵會誤點,高鐵不會?談專案延遲的原因 這個問題屬於商業思維學院 產品經理系列課程的 #專案管理 #PM基本功 #產品經理工作術問題
👉 區塊勢:https://blocktrend.substack.com 區塊鏈讓人們可以自己掌控金流,而不必仰賴中心化機構提供的金融服務。當金錢回歸個人授權,不再受制於中心化機構管理,去中心化金融(DeFi)服務便開始萌芽。 區塊鏈是資產(asset)的網路,而金流只是狹義上的資產。廣義上的資
Thumbnail
研究生是學校欲培養的重要專業人才,這個階段的教育對研究生日後的學術生涯更有著決定性的影響,其中,又以其學位論文最能展現高等教育成果。論文的完成除了有賴研究生自身的投入,背後還需要教師與學校的支持與協助。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
咖啡的香氣和味道,從栽種、處理、烘焙到沖煮的每個流程,主要都是在展現咖啡所蘊含的風味。而藉由杯測而使的原本個人定義的好咖啡變成有了客觀化的評論。咖啡杯測除了用來區分咖啡的良莠之外,更是試出每一隻咖啡的風味特性及特色,藉以提供給業者、消費者做選擇的依據。
Thumbnail
你知道身為個人品牌的網紅也需要 『註冊商標』嗎? 包含理科太太、阿滴英文,都已經完成商標註冊來保障權益。 專利是品牌人、創作人、產品人、技術發明人都不能忽視的保護或授權獲利機制,今天邀請HerAttitude女創群裡經歷數次專利課題,越戰越勇的樂鑫開發工程創辦人Kay聊聊她的冒險故事。
Thumbnail
要解決專案延遲,就不能只認為是「特定人」的問題,而是要從系統去分析 這是Evonne跟你一起PM下午茶的第29天,今天要討論的主題是: 為什麼台鐵會誤點,高鐵不會?談專案延遲的原因 這個問題屬於商業思維學院 產品經理系列課程的 #專案管理 #PM基本功 #產品經理工作術問題
👉 區塊勢:https://blocktrend.substack.com 區塊鏈讓人們可以自己掌控金流,而不必仰賴中心化機構提供的金融服務。當金錢回歸個人授權,不再受制於中心化機構管理,去中心化金融(DeFi)服務便開始萌芽。 區塊鏈是資產(asset)的網路,而金流只是狹義上的資產。廣義上的資
Thumbnail
研究生是學校欲培養的重要專業人才,這個階段的教育對研究生日後的學術生涯更有著決定性的影響,其中,又以其學位論文最能展現高等教育成果。論文的完成除了有賴研究生自身的投入,背後還需要教師與學校的支持與協助。