在數(shù)據(jù)清理中,更好的數(shù)據(jù)勝過更高級的算法
數(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ù)的兩種最常用的推薦方法實際上都不怎么有用。
這兩種方法分別是:
- 刪??除具有缺失值的觀測值
- 根據(jù)其他觀察結果估算缺失值
刪除缺失值不是最佳選擇,因為刪除觀察值時會刪除信息。
- 缺失值本身可能會提供一些參考
- 在現(xiàn)實世界中,即使缺少某些功能,我們也經(jīng)常需要對新數(shù)據(jù)進行預測
插入缺失值也不是最佳選擇,因為該值最初是缺失的,但如果我們將其填充,無論插入缺失值的方法多么精確得當,總是會導致信息丟失。
- 同樣,“遺漏”本身幾乎總是有用的,我們應該告訴算法是否存在缺少值。
- 即使我們重新建立了模型來估算值,也沒有添加任何實際信息——這樣做僅僅在增強其他功能已經(jīng)提供的模式。
丟失數(shù)據(jù)就像丟失了一塊拼圖。如果將其放下,就好像在假裝不存在拼圖槽;如果進行估算,那就像是試圖從拼圖上的其他地方擠一塊兒進去。
簡而言之,自始至終,我們都應該告訴算法,缺少值是因為缺少可提供信息。
具體怎么做呢?告訴算法該值一開始就已丟失。
2. 缺少分類特征的數(shù)據(jù)
處理分類特征缺失的數(shù)據(jù)的最佳方法是簡單地將其標記為“缺失”!
- 這樣做實質(zhì)上是在為該特征添加新的類。
- 告訴算法缺少該值。
- 滿足了技術需求,即要求沒有任何缺失值。
3. 缺少數(shù)字數(shù)據(jù)
對于缺少的數(shù)字數(shù)據(jù),應標記并填充值。
- 使用缺失的指示變量標記觀察結果;
- 為了滿足沒有任何缺失值的技術需求,用0填充原始丟失值。
通過標記和填充,從本質(zhì)上講,我們可以讓該算法估算缺失的最佳常數(shù),而不僅僅是用均值填充。
原文作者:?Mahbub Gani
原文鏈接:https://elitedatascience.com/data-cleaning
本文由 @碧綠色的小兔子 翻譯發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉載
題圖來自Unsplash,基于CC0協(xié)議
- 目前還沒評論,等你發(fā)揮!