資料缺失時,怎樣選擇合適的模型

2021-08-09 09:17:18 字數 1833 閱讀 7261

在機器學習中建模的時候,往往面臨兩個困難,一是選擇哪個模型,二是怎樣處理資料。處於資料報括資料獲取、資料清洗和資料分析。其實對於不同的場景和不同的資料,選擇的模型也是不一樣的,本文簡單聊一聊在資料缺失的時候該怎樣選擇合適的模型。

看到這個標題,對於初學機器學習的人來說,也許會非常不解,難道在有資料缺失和沒資料缺失的情況下,選擇模型還會不一樣?是的。

1、 在資料缺失時,如何選擇合適的模型總述

(1)  資料的特點已經知道,可以根據已知資料比較準確的得到未知資料的時候,可以使用**的方式,先填補未知資料,再根據資料和場景的特點,以不存在資料缺失的方式選擇合適的模型。

(2)  資料量遠遠超出要研究問題的規模,而存在缺失的資料條目比較少,去掉存在缺失資料的記錄對要研究的問題不存在影響。這時候可以把存在缺失值的記錄去掉,然後以不存在資料缺失的方式選擇合適的模型。

(3)  使用可以處理有缺失資料的工具包或者演算法對存在缺失資料的資料集進行建模。

2、 把存在缺失資料的資料集轉換成不具有缺失值的方式建模

這種方式對應1中的(1)和(2)。對於(1),**的值並不是真實值,這還是導致了資料的不確定性,所以這種方式要慎用。對於(2),在機器學習中,資料是最寶貴的財富,所以要說資料太多了使假話,所以這種方式只是在最無奈的時候才選擇。

3、 使用工具包或者特殊的演算法對存在缺失資料的資料集進行建模

首先,要明確一點,工具包和特殊的演算法也許是可以對存在缺失值的資料集進行建模的。但是工具包進行了封裝,內部的結構和實現過程是不透明的。實際上,工具包之所以可以處理有缺失值的資料集,是因為加了缺失值處理函式。要明白,工具/演算法本身是不應該處理缺失值的,應該處理缺失值的應該使用者。工具或者某些特殊的演算法為了方便使用者的使用,提供了預設的缺失值處理函式,如果使用者沒有提供自己的缺失值處理函式,就使用工具或者演算法預設的缺失值處理函式。

常用的處理具有缺失資料的工具或者演算法有兩種:(1)決策樹:(2)xgboost。

(1)  決策樹處理缺失資料

在決策樹中,以隨機森林為例簡單說明。在隨機森林中,處理缺失值的方式如下

方法一:把數值型變數中的缺失值用對應類別中的中位數替換;把非數值型資料的缺失值使用出現次數最多的資料替換。這種處理方式快速、簡單,但是效果較差。

方法二:對要補全的資料記錄先和其他記錄做相似度度量,在補全缺失資料是相似的點的資料會有更好的權重。這種方式還是利用中位數和出現次數最多的數填充,可是選擇資料的方式不一樣了。

(2)  xgboost處理缺失資料

xgboost處理缺失資料是把缺失值當做稀疏矩陣對待,在節點**的時候暫時不考慮資料缺失。缺失的資料會被分到左子樹和右子樹,分別計算損失,然後選擇較優的那乙個。如果訓練中沒有資料缺失,**時出現了資料缺失,預設分到右子樹。

4、 使用工具處理缺失資料的優缺點

優點:(1)可以節省使用者的時間,快速建模;(2)防止使用者匯入的資料集存在缺失值導致模型訓練失敗。

缺點:(1)工具提供的缺失值處理方法也許並不適用所有的資料,可能使模型訓練時間延長;(2)工具提供的方法要應對的是所有可能的情況,對特殊的情形並不事最佳的選擇方案。

5、 缺失資料時選擇模型的方式小結

(1)  資料量較小:使用樸素貝葉斯

(2)  資料量較大:使用神經網路

(3)  資料量適中或者較大:用樹模型,優先採用xgboost

(4)  樹模型對缺失值的敏感度較低,大部分時候可以在資料有缺失的時候使用

(5)  如果要採用距離度量可以採用k近鄰(knn)或者支援向量機(svm)

(6)  神經網路的魯棒性強,對缺失資料不敏感,但一般沒有那麼多資料可以使用

(7)  線性模型在計算代價函式的時候,需要使用梯度下降法,這裡需要計算距離,對缺失值敏感

(8)  貝葉斯模型對缺失資料比較穩定,資料量很小的時候首選貝葉斯模型

怎樣選擇合適的ADC晶元

2011 10 25 16 09 31 分享 標籤 adc 模數轉換器的文章網上非常多,目前自己也在選,這裡把找到的資料彙總整理一下,並加上一些自己的小看法,整理如下 積分型積分型ad工作原理是將輸入電壓轉換成時間 脈衝寬度訊號 或頻率 脈衝頻率 然後由定時器 計數器獲得數字值。逐次比較型 逐次比較...

怎樣選擇合適的字符集

我們建議在能夠完全滿足應用的前提下,盡量使用小的字符集。因為更小的字符集意 味著能夠節省空間 減少網路傳輸位元組數,同時由於儲存空間的較小間接的提高了系統的性 能。有很多字符集可以儲存漢字,比如utf8 gb2312 gbk latin1 等等,但是常用的是 gb2312 和gbk。因為gb2312...

MySQL怎樣選擇合適的字符集

對資料庫來說,字符集更加重要,因為資料庫儲存的資料大部分都是各種文字,字符集對資料庫的儲存,處理效能,以及日後系統的移植,推廣都會有影響。mysql5.6目前支援幾十種字符集,包括ucs 2,utf 16,utf 16le,utf 32,utf 8和utf8mb4等unicode字符集。根據應用的需...