在上一章中,咱們學習瞭如何對一個數據集進行探索性分析,也闡述了常見的要從數據集中獲取的信息。算法
基於這些信息,接下來就是經過數據清理,讓咱們的數據集達到最佳狀態了。數據清理也是搭建任何一種推薦系統必經的步驟之一。
數據清理的步驟和技術因數據集而異。咱們沒有辦法在一篇文章中窮盡全部會出現的問題。
這篇文章介紹了數據清理的一些常見步驟,例如修復結構性錯誤,處理丟失的數據以及過濾觀察值。
更好的數據>更高級的算法
數據清理是每一個人都要作的事情之一,但不多有人專門討論這件事,緣由很簡單,這不是機器學習的「最性感」的部分。並且,沒有什麼可供挖掘的隱藏技巧和祕密。
但事實上,數據清理可能會加快或中斷整個項目進程。專業的數據科學家一般在此步驟上花費很大一部分時間。他們爲何要這麼作呢?機器學習中存在一個很簡單的事實:
更好的數據賽過更高級的算法。
換句話說,輸入垃圾數據,獲得的也是垃圾結果。
若是咱們的數據集通過了正確的清洗,那麼即便是簡單的算法也能夠從中獲得深入的啓發!
不一樣類型的數據須要不一樣的清洗方法。可是,本文中闡述的系統方法能夠做爲一個很好的學習起點。
微信
刪除不須要的觀測結果
數據清理的第一步是從數據集中刪除不須要的觀測結果,包括重複或不相關的觀測結果。
網絡
重複的觀測結果
重複的觀測結果最多見於數據收集期間,例如:運維
不相關的觀測結果
不相關的觀測結果實際上與咱們要解決的特定問題不符。機器學習
修復結構性錯誤post
結構性錯誤是在測量、數據傳輸或其餘的「不良內部管理」過程當中出現的錯誤。
例如,咱們能夠檢查拼寫錯誤或大小寫不一致的問題。這些主要和分類特徵有關。
這是一個例子:
性能
從上圖中能夠看到:學習
替換錯字和大小寫不一致後,整個分類變得更加整潔:
ui
最後,檢查標籤錯誤的類,即實際上應該相同的類。人工智能
過濾不須要的異常值
異常值可能會致使某些模型出現問題。例如,線性迴歸模型對異常值的魯棒性不如決策樹模型。
一般,若是咱們有合理的理由要刪除異常值,則能夠提升模型的性能。
可是,在證實異常值無用以前,咱們永遠不要僅僅由於它是一個「大數字」就刪除它,由於這個數字可能對咱們的模型有很大幫助。
這一點很重要:在刪除異常值以前必需要有充分的理由,例如不是真實數據的可疑度量。
處理缺失的數據
在機器學習應用過程當中,數據缺失看上去是一個很棘手的問題。
爲了清楚起見,咱們不能簡單地忽略數據集中的缺失值。因爲大多數算法都不接受缺失值,所以,咱們必須經過某種方式來處理這一點。
「常識」在這裏並不靈驗
根據咱們的經驗,處理丟失數據的兩種最經常使用的推薦方法實際上都不怎麼有用。
這兩種方法分別是:
1.刪除具備缺失值的觀測值
2.根據其餘觀察結果估算缺失值
刪除缺失值不是最佳選擇,由於刪除觀察值時會刪除信息。
插入缺失值也不是最佳選擇,由於該值最初是缺失的,但若是咱們將其填充,不管插入缺失值的方法多麼精確得當,老是會致使信息丟失。
丟失數據就像丟失了一塊拼圖。若是將其放下,就好像在僞裝不存在拼圖槽;若是進行估算,那就像是試圖從拼圖上的其餘地方擠一起進去。
簡而言之,自始至終,咱們都應該告訴算法,缺乏值是由於缺乏可提供信息。
具體怎麼作呢?告訴算法該值一開始就已丟失。
缺乏分類特徵的數據
處理分類特徵缺失的數據的最佳方法是簡單地將其標記爲「缺失」!
缺乏數字數據
對於缺乏的數字數據,應標記並填充值。
1.使用缺失的指示變量標記觀察結果。
2.爲了知足沒有任何缺失值的技術需求,用0填充原始丟失值。
經過標記和填充,從本質上講,咱們可讓該算法估算缺失的最佳常數,而不只僅是用均值填充。
原文連接:elitedatascience.com/data-cleani…
相關閱讀:
如欲申請產品試用,歡迎添加先薦小助手微信號(ID:recsysfc)。
本帳號爲第四範式智能推薦產品先薦的官方帳號。帳號立足於計算機領域,特別是人工智能相關的前沿研究,旨在把更多與人工智能相關的知識分享給公衆,從專業的角度促進公衆對人工智能的理解;同時也但願爲人工智能相關人員提供一個討論、交流、學習的開放平臺,從而早日讓每一個人都享受到人工智能創造的價值。