Source: Business photo created by frimufilms
引言
人工智能已經(jīng)風行許久,目前不但有強大的配套基礎設施和先進的算法,在市場上的應用也廣泛增加。但是,這一切并沒有讓機器學習(ML)項目的落地變得容易。
Source: Chat bot vector created by roserodionova
數(shù)據(jù)質(zhì)量問題也不是什么新概念,自從機器學習開始應用以來,它就得到了人們的關注。機器從歷史數(shù)據(jù)中不斷學習,其結果的好壞與它的訓練數(shù)據(jù)的質(zhì)量密切相關。
以數(shù)據(jù)為中心vs 以算法為中心
在數(shù)據(jù)科學家的工作中,有兩種情況時有發(fā)生:假設你已經(jīng)完成了初步的探索性數(shù)據(jù)分析,并對模型的性能感到非常滿意,但模型的應用結果不夠好,不能被業(yè)務所接受。在這種情況下,考慮到研發(fā)的成本和時效,你的下一步計劃是什么:
分析錯誤的預測,并將其與輸入數(shù)據(jù)聯(lián)系起來,以發(fā)現(xiàn)可能的異常和以前忽略的數(shù)據(jù)模式。
或者采用一種前瞻性的方法,模型采用更復雜的算法。
簡而言之,如果不能向機器提供良好的輸入數(shù)據(jù),那么即使采用更先進的、更高精度的ML算法,也不會產(chǎn)生太好的效果。吳恩達(Andrew Ng)在他的講座“MLOps:從以模型為中心到以數(shù)據(jù)為中心的AI”(MLOps: From Model-centric to Data-centric AI) 中很好地闡述了這一點。
數(shù)據(jù)質(zhì)量評估
機器學習算法需要的訓練數(shù)據(jù)是單一視圖(即扁平化結構)。由于大多數(shù)組織維護多個數(shù)據(jù)庫,通過組合多個數(shù)據(jù)源并將所有必要的屬性提取出來,這一數(shù)據(jù)準備的過程是相當耗費時間和人力資源(需要專業(yè)技術人員)的。
在這一步驟中,發(fā)現(xiàn)的錯誤數(shù)據(jù)暴露于多個錯誤源,因而數(shù)據(jù)需要嚴格的同行評審,以確保建立的邏輯得到了正確的表達、理解、編程和實現(xiàn)。
由于數(shù)據(jù)庫集成了多種來源的數(shù)據(jù),與數(shù)據(jù)獲取、清洗、轉換、關聯(lián)和集成相關的質(zhì)量問題變得至關重要。
數(shù)據(jù)準備、清理和轉換占用模型構建大部分時間大概是數(shù)據(jù)科學行業(yè)普遍共識。因此,建議不要匆忙地將數(shù)據(jù)輸入模型,而要執(zhí)行廣泛的數(shù)據(jù)質(zhì)量檢查。雖然對數(shù)據(jù)進行檢查的數(shù)量和類型可能比較主觀,但我們還是有必要討論一些在數(shù)據(jù)質(zhì)量評估中的關鍵因素:完整性、獨特性、時效性、一致性、準確性。
保證數(shù)據(jù)質(zhì)量的技術:
缺失值填充
異常值檢測
數(shù)據(jù)轉換
降維
交叉驗證
bootstrapping算法
質(zhì)量!質(zhì)量!質(zhì)量!
下面讓我們來看看如何提高數(shù)據(jù)質(zhì)量:
不同的標注:數(shù)據(jù)是從多個來源收集的。不同的供應商對數(shù)據(jù)的最終用途有不同的理解,他們有不同的方法來收集和標記數(shù)據(jù)。即使在同一個數(shù)據(jù)供應商中,當主管得知需求并下達給不同的團隊成員時,也會出現(xiàn)無數(shù)種標注方式,因為所有的團隊成員都是根據(jù)自己的理解進行標注。
供應商方面的質(zhì)量檢查,對消費者方面的共同理解,將有助于形成同質(zhì)化標注。
不同的記錄:對模型的訓練數(shù)據(jù)進行不同的聚類、轉換操作,會產(chǎn)生重要的影響。例如計算滑動平均值、回填空值、缺失值估算等。這需要該領域的專家進行驗證。
如何處理丟失的數(shù)據(jù)?系統(tǒng)缺失的數(shù)據(jù)會導致有偏差的數(shù)據(jù)集。此外,從有更多空值或缺失值的數(shù)據(jù)中刪除這一屬性(如性別或種族),可能會導致刪除代表特定人群的數(shù)據(jù)。因此,錯誤表述的數(shù)據(jù)將產(chǎn)生有偏差的結果——不僅在模型輸出水平上存在缺陷,而且也違背了負責任的使用人工智能的道德和公平原則。此外,另一種找到缺失屬性的方式也可能是“隨機”的。由于高缺失值,盲目地刪除某個重要屬性會降低模型的預測能力,甚至損害模型。輸入缺失值的最常見方法是通過計算類似維度或級別上數(shù)據(jù)的平均值。
扁平化結構:大多數(shù)組織都缺少一個集中的數(shù)據(jù)庫,且缺乏結構化數(shù)據(jù)是采用機器學習模型進行決策的關鍵問題之一。例如,網(wǎng)絡安全解決方案需要將來自多個資源(如網(wǎng)絡、云和端點)的數(shù)據(jù)歸一化到一個視圖中,以便針對此前發(fā)生的網(wǎng)絡攻擊或威脅進行算法訓練。
規(guī)?;斫鈹?shù)據(jù)
前文已經(jīng)討論了一些可能會引起數(shù)據(jù)質(zhì)量下降的關鍵之處,接下來我們將通過使用TensorFlow來看看如何來規(guī)?;斫鈹?shù)據(jù):
使用TFDV進行統(tǒng)計分析,顯示數(shù)據(jù)的統(tǒng)計分布——均值(mean)、最小值(min)、最大值(max)、標準差等。
理解數(shù)據(jù)模式非常關鍵——包括特性、數(shù)值和數(shù)據(jù)類型。
一旦你理解了數(shù)據(jù)分布,持續(xù)對異常行為進行跟蹤也是很重要的。TFDV突出域外值,從而指導誤差的檢測。
它通過疊加訓練數(shù)據(jù)和測試數(shù)據(jù)的分布,來顯示訓練數(shù)據(jù)和測試數(shù)據(jù)之間的漂移。
TensorFlow的文檔說明了使用TFDV分析數(shù)據(jù)并提高其質(zhì)量的方式,感興趣的話可以在數(shù)據(jù)集上嘗試使用合作平臺Colab中的TFDV代碼。
谷歌在這個Colab平臺中分享了一段代碼,對出租車的數(shù)值數(shù)據(jù)和分類數(shù)據(jù)的統(tǒng)計分析如下:
右邊顯示的缺失值的占比有助于更好地理解數(shù)據(jù)。
pickup_census_tract代表完全缺失值的記錄,對ML模型來說毫無意義,可以采用EDA算法對其進行過濾。
數(shù)據(jù)漂移是部署模型當中不可避免的現(xiàn)象,可能在訓練數(shù)據(jù)和測試數(shù)據(jù)之間產(chǎn)生,也可能在訓練數(shù)據(jù)進行幾天訓練之后產(chǎn)生。
ML算法是在訓練數(shù)據(jù)和測試數(shù)據(jù)具有相似特征的假設下執(zhí)行的,違反這一假設將導致模型性能下降。
參考文獻
《啟用Tensorflow數(shù)據(jù)驗證》(Get started with Tensorflow Data Validation)
原文標題:The Significance of Data Quality in Making a Successful Machine Learning Model,作者: Vidhi Chugh