淺談資料專案的測試

更新於 發佈於 閱讀時間約 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
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
數據驅動的專案管理如何提升決策質量,涵蓋數據收集與管理、數據分析策略、實際應用技巧,以及面臨的挑戰和解決方案。通過描述性分析、診斷性分析、預測性分析和規範性分析,專案經理能夠優化資源分配、進度管理和風險控制,確保專案順利進行。
Thumbnail
本文談及資料科學的領域與分工。首先是建造一個AI的研發流程,資料收集到 AI 模型訓練的過程,AI經歷這一切流程被創造出來並產生價值;再來本文也提及在這個領域中的各種腳色、資料工程師、數據庫工程師、資料科學家和資料分析師的各種介紹。並且強調跨領域合作的重要性。
本篇文章介紹了一種簡單但正確的評估方法,以投資評估總分和本益比為依據,給出了公司的投資評級,並以臺積電和NVDA作為範例。文章還提到了演算法的重要性,以及執行長數學的思路。建議投資者試用這種投資策略來輔助自己的投資。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
這篇文章分享了作者在參與預估專案時的思考脈絡和學習點,透過兩個具體的案例,探討了預估方法中重要的假設和挑戰。
Thumbnail
有別於試圖直接從數據中找出洞察,商業分析的精髓在於先思考 so what——從定義目標開始,做出商業決策的雛形後,才用數據去支持假說。這篇文章介紹 A/B 測試的技巧,以及摘櫻桃的應用,解說數據篩選的操作、摘櫻桃的好處,以及企業案例:數位轉型後的報社,亞馬遜CEO貝佐斯改造百年郵報。
Thumbnail
圖靈測試是用於衡量機器是否能夠表現出與人類相等的智能的方法。本文介紹了圖靈測試的歷史、原理和評價,並探討了ChatGPT是否能通過該測試的問題
Thumbnail
在企業IT環境,系統和數據的備份的重要性相信是不用解說,亦不用懷疑的。 但很時時候,企業忽略的並不是備份,而是Drill test的重要性。
Thumbnail
我們常把研究分成量化與質性兩種不同的方法(當然不止這兩種方法),其中量化分析主要在討論變數與變數的關係,而質性分析則在變數間在的互動過程與事件。因此通常在進行質性研究時,我們需要收集大量田野調查或訪談資料。做過訪談的人都知道,訪談後需要反覆的聆聽訪談錄音並將其轉化為訪談逐字稿,這是一個大工程,還好現
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
數據驅動的專案管理如何提升決策質量,涵蓋數據收集與管理、數據分析策略、實際應用技巧,以及面臨的挑戰和解決方案。通過描述性分析、診斷性分析、預測性分析和規範性分析,專案經理能夠優化資源分配、進度管理和風險控制,確保專案順利進行。
Thumbnail
本文談及資料科學的領域與分工。首先是建造一個AI的研發流程,資料收集到 AI 模型訓練的過程,AI經歷這一切流程被創造出來並產生價值;再來本文也提及在這個領域中的各種腳色、資料工程師、數據庫工程師、資料科學家和資料分析師的各種介紹。並且強調跨領域合作的重要性。
本篇文章介紹了一種簡單但正確的評估方法,以投資評估總分和本益比為依據,給出了公司的投資評級,並以臺積電和NVDA作為範例。文章還提到了演算法的重要性,以及執行長數學的思路。建議投資者試用這種投資策略來輔助自己的投資。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
這篇文章分享了作者在參與預估專案時的思考脈絡和學習點,透過兩個具體的案例,探討了預估方法中重要的假設和挑戰。
Thumbnail
有別於試圖直接從數據中找出洞察,商業分析的精髓在於先思考 so what——從定義目標開始,做出商業決策的雛形後,才用數據去支持假說。這篇文章介紹 A/B 測試的技巧,以及摘櫻桃的應用,解說數據篩選的操作、摘櫻桃的好處,以及企業案例:數位轉型後的報社,亞馬遜CEO貝佐斯改造百年郵報。
Thumbnail
圖靈測試是用於衡量機器是否能夠表現出與人類相等的智能的方法。本文介紹了圖靈測試的歷史、原理和評價,並探討了ChatGPT是否能通過該測試的問題
Thumbnail
在企業IT環境,系統和數據的備份的重要性相信是不用解說,亦不用懷疑的。 但很時時候,企業忽略的並不是備份,而是Drill test的重要性。
Thumbnail
我們常把研究分成量化與質性兩種不同的方法(當然不止這兩種方法),其中量化分析主要在討論變數與變數的關係,而質性分析則在變數間在的互動過程與事件。因此通常在進行質性研究時,我們需要收集大量田野調查或訪談資料。做過訪談的人都知道,訪談後需要反覆的聆聽訪談錄音並將其轉化為訪談逐字稿,這是一個大工程,還好現