在數(shù)據(jù)清理中,更好的數(shù)據(jù)勝過更高級的算法

0 評論 2977 瀏覽 2 收藏 9 分鐘

數(shù)據(jù)清理的步驟和技術因數(shù)據(jù)集而異,我們沒有辦法在一篇文章中窮盡所有會出現(xiàn)的問題。這篇文章介紹了數(shù)據(jù)清理的一些常見步驟,例如修復結構性錯誤,處理丟失的數(shù)據(jù)以及過濾觀察值。

更好的數(shù)據(jù)>更高級的算法

數(shù)據(jù)清理是每個人都要做的事情之一,但很少有人專門討論這件事,原因很簡單,這不是機器學習的“最性感”的部分。而且,沒有什么可供挖掘的隱藏技巧和秘密。

但事實上,數(shù)據(jù)清理可能會加快或中斷整個項目進程,專業(yè)的數(shù)據(jù)科學家通常在此步驟上花費很大一部分時間。

他們?yōu)槭裁匆@么做呢?機器學習中存在一個很簡單的事實:

更好的數(shù)據(jù)勝過更高級的算法。

換句話說,輸入垃圾數(shù)據(jù),得到的也是垃圾結果。

如果我們的數(shù)據(jù)集經(jīng)過了正確的清洗,那么即使是簡單的算法也可以從中得到深刻的啟發(fā)!

不同類型的數(shù)據(jù)需要不同的清洗方法,但是本文中闡述的系統(tǒng)方法可以作為一個很好的學習起點。

刪除不需要的觀測結果

數(shù)據(jù)清理的第一步是從數(shù)據(jù)集中刪除不需要的觀測結果,包括重復或不相關的觀測結果。

1. 重復的觀測結果

重復的觀測結果最常見于數(shù)據(jù)收集期間,例如:

  • 合并多個來源的數(shù)據(jù)集時
  • 抓取數(shù)據(jù)時
  • 從客戶/其他部門接入數(shù)據(jù)時

2. 不相關的觀測結果

不相關的觀測結果實際上與我們要解決的特定問題不符。

  • 例如,如果我們僅為單戶住宅構建模型,則不希望對其中的公寓也進行觀測。
  • 這時候,我們也可以在上一步的探索性分析中判斷出來。我們可以查看類別特征的分布圖,以查看是否有不相關的類存在。
  • 在做工特征工程之前,我們也可以檢查是否存在不相關的觀察結果。

修復結構性錯誤

結構性錯誤是在測量、數(shù)據(jù)傳輸或其他的“不良內(nèi)部管理”過程中出現(xiàn)的錯誤。

例如,我們可以檢查拼寫錯誤或大小寫不一致的問題。這些主要和分類特征有關。

這是一個例子:

從上圖中可以看到:

  • “Composition”與“composition”相同
  • “asphalt”應為“Asphalt”
  • “ shake-shingle”應為“ Shake Shingle”
  • “asphalt,shake-shingle”也可能只是“Shake Shingle”

替換錯字和大小寫不一致后,整個分類變得更加整潔:

最后,檢查標簽錯誤的類,即實際上應該相同的類。

  • 例如:如果“N/A”和“Not Applicable”顯示為兩個單獨的類,則應將其合并。
  • 例如:“ IT”和“ information_technology”應該是同一個類。

過濾不需要的異常值

異常值可能會導致某些模型出現(xiàn)問題。例如,線性回歸模型對異常值的魯棒性不如決策樹模型。

通常,如果我們有合理的理由要刪除異常值,則可以提高模型的性能。

但是,在證明異常值無用之前,我們永遠不要僅僅因為它是一個“大數(shù)字”就刪除它,因為這個數(shù)字可能對我們的模型有很大幫助。

這一點很重要:在刪除異常值之前必須要有充分的理由,例如不是真實數(shù)據(jù)的可疑度量。

處理缺失的數(shù)據(jù)

在機器學習應用過程中,數(shù)據(jù)缺失看上去是一個很棘手的問題。

為了清楚起見,我們不能簡單地忽略數(shù)據(jù)集中的缺失值。由于大多數(shù)算法都不接受缺失值,因此,我們必須通過某種方式來處理這一點。

1. “常識”在這里并不靈驗

根據(jù)我們的經(jīng)驗,處理丟失數(shù)據(jù)的兩種最常用的推薦方法實際上都不怎么有用。

這兩種方法分別是:

  1. 刪??除具有缺失值的觀測值
  2. 根據(jù)其他觀察結果估算缺失值

刪除缺失值不是最佳選擇,因為刪除觀察值時會刪除信息。

  • 缺失值本身可能會提供一些參考
  • 在現(xiàn)實世界中,即使缺少某些功能,我們也經(jīng)常需要對新數(shù)據(jù)進行預測

插入缺失值也不是最佳選擇,因為該值最初是缺失的,但如果我們將其填充,無論插入缺失值的方法多么精確得當,總是會導致信息丟失。

  • 同樣,“遺漏”本身幾乎總是有用的,我們應該告訴算法是否存在缺少值。
  • 即使我們重新建立了模型來估算值,也沒有添加任何實際信息——這樣做僅僅在增強其他功能已經(jīng)提供的模式。

丟失數(shù)據(jù)就像丟失了一塊拼圖。如果將其放下,就好像在假裝不存在拼圖槽;如果進行估算,那就像是試圖從拼圖上的其他地方擠一塊兒進去。

簡而言之,自始至終,我們都應該告訴算法,缺少值是因為缺少可提供信息。

具體怎么做呢?告訴算法該值一開始就已丟失。

2. 缺少分類特征的數(shù)據(jù)

處理分類特征缺失的數(shù)據(jù)的最佳方法是簡單地將其標記為“缺失”!

  • 這樣做實質(zhì)上是在為該特征添加新的類。
  • 告訴算法缺少該值。
  • 滿足了技術需求,即要求沒有任何缺失值。

3. 缺少數(shù)字數(shù)據(jù)

對于缺少的數(shù)字數(shù)據(jù),應標記并填充值。

  1. 使用缺失的指示變量標記觀察結果;
  2. 為了滿足沒有任何缺失值的技術需求,用0填充原始丟失值。

通過標記和填充,從本質(zhì)上講,我們可以讓該算法估算缺失的最佳常數(shù),而不僅僅是用均值填充。

 

原文作者:?Mahbub Gani

原文鏈接:https://elitedatascience.com/data-cleaning

本文由 @碧綠色的小兔子 翻譯發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!