作者|KAUSHIK
編譯|VK
來源|Analytics Vidhya
概述
-
學會用KNNImputer來填補資料中的缺失值
-
了解缺失值及其型別
介紹
scikit learn公司的KNNImputer是一種廣泛使用的缺失值插補方法,它被廣泛認為是傳統插補技術的替代品,
在當今世界,資料是從許多來源收集的,用于分析、產生見解、驗證理論等等,從不同的資源收集的這些資料通常會丟失一些資訊,這可能是由于資料收集或提取程序中的問題導致的,該問題可能是人為錯誤,
處理這些缺失值,成為資料預處理中的一個重要步驟,插補方法的選擇至關重要,因為它會對作業產生重大影響,

大多數統計和機器學習演算法都是針對資料集的完整觀測,因此,處理丟失的資訊變得至關重要,
統計學中的一些文獻涉及缺失值的來源和克服這個問題的方法,最好的方法是用估計值來估算這些缺失的觀測值,
在本文中,我們介紹了一個使用相鄰資料點的觀測值來填充資料集中缺失值的指南,為此,我們使用scikit-learn的KNNImputer實作,
目錄
-
自由度問題
-
缺失值模式
-
kNN演算法的本質
-
存在缺失值時的距離計算
-
KNNImputer插補方法
自由度問題
對于任何資料科學家來說,資料集中缺失的值都可能是一個馬蜂窩,缺失值的變數可能是一個非常重要的問題,因為沒有簡單的方法來處理它們,
一般來說,如果資料中缺失觀測值的比例相對于觀測值總數很小,我們可以簡單地洗掉這些觀測值,
然而,這種情況并不常見,洗掉包含缺失值的行可能會導致放棄有用的資訊,
從統計學的角度來看,隨著獨立資訊條數的減少,自由度降低,
缺失值模式
對于真實的資料集,缺失值是一個令人擔憂的原因,收集有關變數的觀察值時,可能會由于以下各種原因而丟失值
-
機器/設備中的錯誤
-
研究者的錯誤
-
無法聯系的受訪者
-
意外洗掉
-
部分受訪者健忘
-
會計差錯等,
缺失值的型別通常可分為:
完全隨機缺失(MCAR)
當缺失的值對任何其他變數或觀察值的任何特征沒有隱藏的依賴性時,就會發生這種情況,如果醫生忘記記錄每10個進入ICU的病人的年齡,缺失值的存在并不取決于病人的特征,
隨機缺失(MAR)
在這種情況下,丟失值的概率取決于可觀測資料的特征,在調查資料中,高收入受訪者不太可能告知研究人員擁有的房產數量,所擁有房產的可變數量的缺失值將取決于收入變數,
非隨機缺失(MNAR)
當缺失的值既取決于資料的特征,也取決于缺失的值時,就會發生這種情況,在這種情況下,很難確定缺失值的生成機制,例如,血壓等變數的缺失值可能部分取決于血壓值,因為低血壓患者不太可能經常檢查血壓,
kNN演算法的本質
用于缺失值插補的單變數方法是估計值的簡單方法,可能無法始終提供準確的資訊,
例如,假設我們有與道路上汽車密度和空氣中污染物水平相關的變數,并且幾乎沒有關于污染物水平的觀察結果,用均值或者中位數污染物水平來估算污染物水平可能不一定是一個合適的策略,
在這種情況下,像k-最近鄰(kNN)這樣的演算法可以幫助對缺失資料的值進行插補,
社會學家和社區研究人員認為,人類之所以生活在一個社區中,是因為鄰居們產生了一種安全感、對社區的依戀感以及通過參與各種活動而產生社區認同感的人際關系,
對資料起作用的一種類似的插補方法是k-最近鄰(kNN),它通過距離測量來識別相鄰點,并且可以使用相鄰觀測值的完整值來估計缺失值,
例子
假設你家里的必需食品已經沒有存貨了,由于封鎖,附近的商店都沒有營業,因此,你向你的鄰居尋求幫助,你最侄訓接受任何他們提供給你的東西,
這是一個來自3-NN的插補示例,
相反,如果你確定了3個向你尋求幫助的鄰居,并選擇將3個離你最近的鄰居提供的物品組合在一起,這就是3-NN的插補示例,
類似地,資料集中的缺失值可以借助資料集中k近鄰的觀察值來推算,資料集的鄰近點通過一定的距離度量來識別,通常是歐氏距離,

考慮一下上面表示kNN作業的圖,在本例中,橢圓形區域表示綠色方形資料點的相鄰點,我們用距離來確定鄰居,
kNN方法的思想是在資料集中識別空間相似或相近的k個樣本,然后我們使用這些“k”樣本來估計缺失資料點的值,每個樣本的缺失值使用資料集中找到的“k”鄰域的平均值進行插補,
存在缺失值時的距離計算
讓我們看一個例子來理解這一點,考慮二維空間(2,0)、(2,2)、(3,3)中的一對觀測值,這些點的圖形表示如下:

基于歐氏距離的最短距離點被認為是最近鄰點,例如,點A的1最近鄰點是點B,對于點B,1最近鄰點是點C,
在存在缺失坐標的情況下,通過忽略缺失值并放大非缺失坐標的權重來計算歐幾里德距離,

其中

例如,兩點(3,NA,5)和(1,0,0)之間的歐幾里德距離為:

現在我們使用sklearn包pairwise metric模塊中的nan_euclidean_distances 函式來計算缺失值兩點之間的距離,

盡管nan_euclidean_distances 適用于由X和Y引數提供的兩個一維陣列,但它也可以適用于具有多個維度的單個陣列,

因此,距離矩陣是一個2×2矩陣,它表示觀測對之間的歐幾里德距離,此外,合成矩陣的對角線元素為0,因為它表示單個觀測值與其自身之間的距離,
KNNImputer插補方法
我們將使用sklearn的impute 模塊中的KNNImputer 函式,KNNImputer通過歐幾里德距離矩陣尋找最近鄰,幫助估算觀測中出現的缺失值,

在這種情況下,上面的代碼顯示觀測1(3,NA,5)和觀測3(3,3,3)在距離上最接近(~2.45),
因此,用一個1-最近鄰對觀測值1(3,NA,5)中的缺失值進行插補,得到的估計值為3,與觀測值3(3,3,3)的第二維度的估計值相同,
此外,用一個2-最近鄰來估算觀測值1(3,NA,5)中的缺失值將得到1.5的估計值,這與觀測值2和3的第二維度的平均值相同,即(1,0,0)和(3,3,3),

到目前為止,我們討論了用KNNImputer處理連續變數的缺失值,下面,我們創建一個資料框,其中包含離散變數中缺少的值,
為了填補離散變數中的缺失值,我們必須將離散值編碼成數值,因為KNNImputer只對數值變數有效,我們可以使用類別到數值變數的映射來執行此操作,



結尾
在本文中,我們了解了缺失值、原因,以及如何使用KNNImputer 來填充缺失值,選擇k來使用kNN演算法來填充缺失值可能是爭論的焦點,
此外,研究表明,在使用不同k值進行插補后,有必要使用交叉驗證來檢驗模型,盡管缺失值的插補是一個不斷發展的研究領域,但kNN是一種簡單而有效的策略,
原文鏈接:https://www.analyticsvidhya.com/blog/2020/07/knnimputer-a-robust-way-to-impute-missing-values-using-scikit-learn/
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/2249.html
標籤:其他
上一篇:當實證資產定價遇上機器學習
下一篇:生成流暢文本方法
