官术网_书友最值得收藏!

1.4 數據清洗

在機器學習過程中,數據清洗(data cleaning)這一步驟非常重要。據統計,數據科學家在進行數據分析時,數據清洗的步驟平均占用80%的時間。在大數據的應用中,因為數據質量良莠不齊,我們更加需要數據清洗這一步驟,它成為決定最終機器學習質量的重要環節。我們常常說起的“廢料入,廢品出”,完美地概括了數據質量在數據分析中的重要性。在這一階段中,我們首先指出,數據按照其特征可分為以下兩類:

·數值型;

·分類型。

數值型數據由數字組成,分類型數據則是根據描述對象的性質進行分類的數據。例如,在用于預測房價的數據中,將房屋周圍的道路按照柏油路、水泥路、草地等分類就是分類型數據。由于分類型數據無法直接用于計算,我們需要將分類型數據轉化成數值型以滿足計算的需要,對于相關內容,我們將在第3章中介紹。

下面列舉了對這兩類數據進行數據清洗的一些方法。

1.糾正記錄格式不一致

無論是數值型數據還是分類型數據,都有可能出現記錄格式不一致的情況。例如,在記錄房屋的占地面積時,將出現各類不同的數值型記錄方式:3300、3,300、3,300英尺、3300+等。研究數據內容并制定清洗數據方式,顯然非常有必要。在分類型數據中,記錄道路的類型同樣可能出現“asphalt”“Asphalt”“asphalt.”等不統一的格式。在清洗這種類型的數據問題時,最簡單的方式是先列出關于同一數據中不同的記錄方式,然后再按照統一的格式和內容進行修改。

2.剔除無效數據

假設我們需要預測某一區域的房價,但數據中混雜了某些公寓或房屋的所在地區并不在需求的地域內的數據,顯然在做進一步數據分析前,需要找到這部分無效數據并進行剔除。

3.清洗重復數據

當數據由不同的數據源合并而成或者不同的人參與建立新數據時,數據重復很容易發生,并會導致結果出現偏差。所以在數據清洗階段,運用搜索算法來識別和去掉重復數據就非常必要。找到科學的算法并對數據進行去重,這一點十分重要。

4.清洗異常值

對于數值型數據異常值,我們可以通過數據的分布或設置條件進行判斷,比如與均值之間的差異大于6個標準差。當然,有時候異常值也可能是數據采集時的人工錯誤。例如,將一棟房屋的占地面積記錄為33 000平方英尺[1],很顯然實際上應該是3 300平方英尺。需要提醒的是,我們在處理數據時,需要有科學的依據來判斷哪些為異常值,以及是否需要剔除。一部分極端數據值如果確實是真實有效的話,那么它們對數據分析非常有意義,而異常值對于機器學習結果的影響取決于應用的模型。例如,在回歸模型中,異常值的影響將會很大,我們將在第3章中具體介紹這些內容。而其他模型,比如決策樹(在第4章中會詳細介紹)則受異常值影響較小。

5.清洗缺失數據

在很多大數據中,常常會有數據缺失的情況。一種簡單的方法是將缺失的數據或關聯的特征直接刪除。但這樣的處理方式并不是最理想的,而且會減少數據量,從而帶來統計偏差。對于分類型數據缺失的處理,最簡單的方式是將缺失數據設置為一列,并將其重新命名,比如命名為“缺失值”。而對于數值型數據而言,一種方法是以數據的均值或中位數來替代缺失數據。例如,如果一棟房屋的占地面積是缺失的,但在我們目前已采集的非缺失數據中,房屋占地面積的中位數為3 500,我們則可以將缺失數據替換為3 500;另外一種更復雜的方式是通過模型,即用非缺失值來推導缺失值。有時候,假設數據是隨機缺失的,具有一定的合理性。而有時候,數據缺失本身就具有一定的分析價值。在后續的案例中,我們對于缺失數據的處理是通過增加新的變量的方式進行的:如果數據不缺失,該變量被設定為零;否則,該變量被設定為1。

[1] 1 平方英尺= 0.092 9 平方米。

主站蜘蛛池模板: 寿光市| 社旗县| 翁源县| 奇台县| 淮北市| 绵竹市| 久治县| 昆山市| 滨海县| 商河县| 武安市| 花莲县| 台前县| 马边| 马山县| 汉川市| 张家港市| 呼伦贝尔市| 长治市| 马边| 望江县| 阿坝县| 开封市| 手游| 天长市| 通州市| 长葛市| 绍兴县| 衡山县| 饶河县| 汪清县| 南靖县| 南投市| 正宁县| 扶绥县| 南汇区| 邯郸县| 潜江市| 桓仁| 都江堰市| 丹凤县|