機器學習實戰 | 數據探索(缺失值處理)
歡迎關注我們的微信公眾號「人工智慧LeadAI」(ID:atleadai)
接著上一篇:《機器學習實戰-數據探索》介紹,機器學習更多內容可以關注github項目:machine learning
《機器學習實戰-數據探索》介紹了1、變數識別;2、單變數分析;3、雙變數分析,現在接著介紹缺失值處理。
為什麼需要處理缺失值呢?
訓練數據集中缺少的數據可以減少模型的擬合,或者可能導致模型偏差,因為沒有正確地分析變數的行為和關係,可能導致錯誤的預測或分類。
注意上圖中缺失值:在左側的情況下,沒有處理缺失值, 男性打板球的機會高於女性。 另一方面,如果看看第二個表,其中顯示了處理缺失值後的數據(基於性別),我們可以看到女性與男性相比有較高的打板球的機會。
為什麼會有缺失值呢?
前面說明了在數據集中處理缺失值的重要性, 現在來確定發生這些缺失值的原因,主要有以下兩個階段:
1、數據提取(Data Extraction)
提取過程可能有問題,在這種情況下,應該使用數據監護檢查數據的準確性, 一些散列程序也可以用來確保數據提取的正確性,比較容易糾正(數據提取主要在NLP或者圖像鄰域,我現在理解不到位,後面補充)。
2、數據採集(Data collection)
數據採集時發生的錯誤,很難糾正,主要分為以下四種:
1、Missing completely at random
即所有觀測值的缺失變數的概率相同。 例如:數據收集過程的受訪者決定在拋出一個硬幣後,宣布他們的收入。 如果發生,受訪者宣布他的收入,反之亦然,這樣,每個觀察值,具有相同概率的缺失值。
2、Missing at random
即隨機丟失變數概率,因其他輸入變數的不同值或類別而變化。 例如:我們收集年齡,女性相比男性,具有較高的缺失值。
3、缺失值依賴於不可觀察的預測變數
即缺失值不是隨機的並且與未查看的輸入變數相關。 例如:在一項醫學研究中,如果特定診斷導致不適,那麼研究中有更多的輟學機會。 這個缺失值不是隨機的,除非我們將「不適」作為所有患者的輸入變數。
4、缺失取決於缺失值本身
即缺失值的概率與缺失值本身直接相關。 例如:擁有較高或較低收入的人士,可能讓其提供收入證明,有些不願意。
缺失值有哪些處理方法呢?
1、刪除
整條記錄刪除(list wise deletion)
刪除任何變數丟失的觀察結果,這種方法的主要優點之一是簡單,但是這種方法降低了模型的準確性,因為它減少了樣本大小。刪除對應的缺失值(In pair wise deletion)
這種方法的優點是,它保留了許多可用於分析的情況,缺點之一是對不同的變數使用不同的樣本大小。當缺失值為Missing completely at random,使用刪除方法,否則可能會偏離模型輸出。
2、Mean/Mode/Median估計
目標是使用可以在數據集的有效值中識別的已知關係來輔助估計缺失值。
Mean/Mode/Median是最常用的方法之一,包括通過該變數的所有已知值的mean或Median(定量屬性)或Mode(定性屬性)來替換給定屬性的缺失數據,有以下兩種方式:
廣義插補(Generalized Imputation)
在這種情況下,我們計算該變數的所有非缺失值的mean或Median,然後用Mean或Median替換缺失值。 如上表所示,變數「人力」缺失值,取所有非缺失值的平均值(28.33)替換缺失值。相似插補(Similar case Imputation)
如上表,分別計算性別「男性」(29.75)和「女性」(25)的平均值,然後根據性別替換缺失值,對於「男」的,以29.75代替缺失值,「女」的以「25」代替。如果missing value佔總體的比例非常小,那麼直接填入Mean、Mode或者Median
3、預測模型(Prediction Model)
預測模型是處理缺失值的複雜方法之一, 通過創建一個預測模型來估計替代缺失值。 在這種情況下,我們將數據集分為兩組:一組沒有變數的缺失值,另一組有缺少值, 第一個數據集成為模型的訓練數據集,而具有缺失值的第二個數據集是測試數據集,變數與缺失值被視為目標變數。 接下來,我們創建一個模型,根據訓練數據集的其他屬性預測目標變數,並填充測試數據集的缺失值。我們可以使用回歸,方差分析,邏輯回歸和各種建模技術來執行此操作。 這種方法有兩個缺點:
模型估計值通常比真實值更好
如果與數據集中的屬性和缺少值的屬性沒有關係,則該模型對於估計缺失值將不精確。
如果missing value所佔比例不算小也不算大時,採用該方法。
4、KNN
此方法使用與值丟失的屬性最相似的屬性來估計屬性的缺失值,通過距離函數確定兩個屬性的相似度。 具有如下優點和缺點:
優點
KNN可以預測定性和定量屬性 不需要為缺少數據的每個屬性創建預測模型 具有多個缺失值的屬性可以輕鬆處理 數據的相關結構被考慮在內
缺點
KNN演算法在分析大數據方面非常耗時, 搜索所有數據集,尋找最相似的實例。
k值的選擇是非常關鍵的。 k較高脫顯不了顯著性屬性,而較低的k會丟失重要屬性。
注意: 如果missing value所佔比例大,那麼直接將miss value當做一種特殊的情況,另取一個值填入。
處理缺失值後,下一篇介紹異常值處理。
參考
https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/
推薦閱讀:
TAG:机器学习 |