導航:首頁 > 數據分析 > mrt預處理數據缺失怎麼辦

mrt預處理數據缺失怎麼辦

發布時間:2023-01-21 01:51:38

⑴ 數據分析:數據預處理--缺失值處理(三)

上一篇 數據分析:數據預處理--標准化方法優劣了解(二) 講了兩類常用標准化方法,但沒涉及到如何處理缺失數據。更多知識分享請到 https://zouhua.top/

全局校正(global adjustment)標准化是蛋白質組學中常用的方法之一,它將log化的intensity數據的中心轉換成一個常數,這個常數可以是mean、median或者其它數學測量指標。比如Zscore就是將數據中心的mean轉換成常數0,且standard variation為1的標准化方法。雖然不全局校正標准化能夠有效校正樣本間的差異,但不能處理如非線性的偏差。

Robust scatter plot smoothing 或 lowess regression是另一類標准化方法,limma包的voom函數就使用了該方法。通過線性回歸的殘差擬合曲線,然後計算每個feature對應的權重值,這作為標准化結果。

蛋白質組的質譜數據的特點是缺失值特別多,產生缺失值的原因有好多:

處理的缺失值的策略有:

缺失值分類:

缺失值到底是符合MCAR還是censored data呢,可以通過概率模型判斷。可閱讀文獻 A statistical framework for protein quantitation in bottom-up MS-based proteomics 或 Bayesian analysis of iTRAQ data with nonrandom missingness: identification of differentially expressed proteins 。

**Notes: ** 從1st和3rd分位數能看出KNN的補缺效果還不錯,但也看到Sepal.Length的最小值補缺前後差距較大。

⑵ ​一文看懂數據清洗:缺失值、異常值和重復值的處理

作者:宋天龍

如需轉載請聯系華章 科技

數據缺失分為兩種:一種是 行記錄的缺失 ,這種情況又稱數據記錄丟失;另一種是 數據列值的缺失 ,即由於各種原因導致的數據記錄中某些列的值空缺。

不同的數據存儲和環境中對於缺失值的表示結果也不同,例如,資料庫中是Null,Python返回對象是None,Pandas或Numpy中是NaN。

在極少數情況下,部分缺失值也會使用空字元串來代替,但空字元串絕對不同於缺失值。從對象的實體來看,空字元串是有實體的,實體為字元串類型;而缺失值其實是沒有實體的,即沒有數據類型。

丟失的數據記錄通常無法找回,這里重點討論數據列類型缺失值的處理思路。通常有4種思路。

1. 丟棄

這種方法簡單明了,直接刪除帶有缺失值的行記錄(整行刪除)或者列欄位(整列刪除),減少缺失數據記錄對總體數據的影響。 但丟棄意味著會消減數據特徵 ,以下任何一種場景都不宜採用該方法。

2. 補全

相對丟棄而言,補全是更加常用的缺失值處理方式。通過一定的方法將缺失的數據補上,從而形成完整的數據記錄,對於後續的數據處理、分析和建模至關重要。常用的補全方法如下。

3. 真值轉換法

在某些情況下,我們可能無法得知缺失值的分布規律,並且無法對於缺失值採用上述任何一種補全方法做處理;或者我們認為數據缺失也是一種規律,不應該輕易對缺失值隨意處理,那麼還有一種缺失值處理思路—真值轉換。

該思路的根本觀點是, 我們承認缺失值的存在,並且把數據缺失也作為數據分布規律的一部分 ,將變數的實際值和缺失值都作為輸入維度參與後續數據處理和模型計算中。但是變數的實際值可以作為變數值參與模型計算,而缺失值通常無法參與運算,因此需要對缺失值進行真值轉換。

以用戶性別欄位為例,很多資料庫集都無法對會員的性別進行補足,但又捨不得將其丟棄掉,那麼我們將選擇將其中的值,包括男、女、未知從一個變數的多個值分布狀態轉換為多個變數的真值分布狀態。

然後將這3列新的欄位作為輸入維度替換原來的1個欄位參與後續模型計算。

4. 不處理

在數據預處理階段,對於具有缺失值的數據記錄不做任何處理,也是一種思路。這種思路主要看後期的數據分析和建模應用, 很多模型對於缺失值有容忍度或靈活的處理方法 ,因此在預處理階段可以不做處理。

常見的能夠自動處理缺失值的模型包括:KNN、決策樹和隨機森林、神經網路和樸素貝葉斯、DBSCAN(基於密度的帶有雜訊的空間聚類)等。這些模型對於缺失值的處理思路是:

在數據建模前的數據歸約階段,有一種歸約的思路是 降維 ,降維中有一種直接選擇特徵的方法。假如我們通過一定方法確定帶有缺失值(無論缺少欄位的值缺失數量有多少)的欄位對於模型的影響非常小,那麼我們根本就不需要對缺失值進行處理。

因此,後期建模時的欄位或特徵的重要性判斷也是決定是否處理欄位缺失值的重要參考因素之一。

對於缺失值的處理思路是先通過一定方法找到缺失值,接著分析缺失值在整體樣本中的分布佔比,以及缺失值是否具有顯著的無規律分布特徵,然後考慮後續要使用的模型中是否能滿足缺失值的自動處理,最後決定採用哪種缺失值處理方法。

在選擇處理方法時,注意投入的時間、精力和產出價值,畢竟,處理缺失值只是整個數據工作的冰山一角而已。

在數據採集時,可在採集端針對各個欄位設置一個默認值。以MySQL為例,在設計資料庫表時,可通過default指定每個欄位的默認值,該值必須是常數。

在這種情況下,假如原本數據採集時沒有採集到數據,欄位的值應該為Null,雖然由於在建立庫表時設置了默認值會導致「缺失值」看起來非常正常,但本質上還是缺失的。對於這類數據需要尤其注意。

異常數據是數據分布的常態,處於特定分布區域或范圍之外的數據通常會被定義為異常或「噪音」。產生數據「噪音」的原因很多,例如業務運營操作、數據採集問題、數據同步問題等。

對異常數據進行處理前,需要先辨別出到底哪些是真正的數據異常。從數據異常的狀態看分為兩種:

大多數數據挖掘或數據工作中,異常值都會在數據的預處理過程中被認為是噪音而剔除,以避免其對總體數據評估和分析挖掘的影響。但在以下幾種情況下,我們無須對異常值做拋棄處理。

1. 異常值正常反映了業務運營結果

該場景是由業務部門的特定動作導致的數據分布異常,如果拋棄異常值將導致無法正確反饋業務結果。

例如:公司的A商品正常情況下日銷量為1000台左右。由於昨日舉行優惠促銷活動導致總銷量達到10000台,由於後端庫存備貨不足導致今日銷量又下降到100台。在這種情況下,10000台和100台都正確地反映了業務運營的結果,而非數據異常案例。

2. 異常檢測模型

異常檢測模型是針對整體樣本中的異常數據進行分析和挖掘,以便找到其中的異常個案和規律,這種數據應用圍繞異常值展開,因此異常值不能做拋棄處理。

異常檢測模型常用於客戶異常識別、信用卡欺詐、貸款審批識別、葯物變異識別、惡劣氣象預測、網路入侵檢測、流量作弊檢測等。在這種情況下,異常數據本身是目標數據,如果被處理掉將損失關鍵信息。

3. 包容異常值的數據建模

如果數據演算法和模型對異常值不敏感,那麼即使不處理異常值也不會對模型本身造成負面影響。例如在決策樹中,異常值本身就可以作為一種分裂節點。

數據集中的重復值包括以下兩種情況:

去重是重復值處理的主要方法,主要目的是保留能顯示特徵的唯一數據記錄。但當遇到以下幾種情況時,請慎重(不建議)執行數據去重。

1. 重復的記錄用於分析演變規律

以變化維度表為例。例如在商品類別的維度表中,每個商品對應的同1個類別的值應該是唯一的,例如蘋果iPhone7屬於個人電子消費品,這樣才能將所有商品分配到唯一類別屬性值中。但當所有商品類別的值重構或升級時(大多數情況下隨著公司的發展都會這么做),原有的商品可能被分配了類別中的不同值。如下表所示展示了這種變化。

此時,我們在數據中使用Full join做跨重構時間點的類別匹配時,會發現蘋果iPhone7會同時匹配到個人電子消費品和手機數碼2條記錄。對於這種情況,需要根據具體業務需求處理。

2. 重復的記錄用於樣本不均衡處理

在開展分類數據建模工作時,樣本不均衡是影響分類模型效果的關鍵因素之一。解決分類方法的一種方法是對少數樣本類別做簡單過采樣,通過隨機過采樣,採取簡單復制樣本的策略來增加少數類樣本。

經過這種處理方式後,也會在數據記錄中產生相同記錄的多條數據。此時,我們不能對其中的重復值執行去重操作。

3. 重復的記錄用於檢測業務規則問題

對於以分析應用為主的數據集而言,存在重復記錄不會直接影響實際運營,畢竟數據集主要是用來做分析的。

但對於事務型的數據而言, 重復數據可能意味著重大運營規則問題 ,尤其當這些重復值出現在與企業經營中與金錢相關的業務場景時,例如:重復的訂單、重復的充值、重復的預約項、重復的出庫申請等。

這些重復的數據記錄通常是由於數據採集、存儲、驗證和審核機制的不完善等問題導致的,會直接反映到前台生產和運營系統。以重復訂單為例:

因此,這些問題必須在前期數據採集和存儲時就通過一定機制解決和避免。如果確實產生了此類問題,那麼數據工作者或運營工作者可以基於這些重復值來發現規則漏洞,並配合相關部門,最大限度地降低由此而帶來的運營風險。

本文摘編自《Python數據分析與數據化運營》(第2版),經出版方授權發布。

⑶ 對於缺失值的處理

建議:不同場景下的數據缺失機制不同,這需要工程師基於對業務選擇合適的填充方法。

如何判斷缺失值類型?
缺失值的分類按照數據缺失機制可分為:
可忽略的缺失

不可忽略的缺失

平常工作中遇到的缺失值大部分情況下是隨機的(缺失變數和其他變數有關)

這個就可以用estimator來做了,選其中一個變數(y),然後用其他變數作為X,隨便選個值填充X的缺失部分,用X train一個estimator,再預測y的缺失部分(大致思路)

此外有些數據是符合某種分布的,利用這個分布呢也可以填充缺失的數據,如(EM演算法)

處理缺失數據的三個標准:
1. 非偏置的參數估計
不管你估計means, regressions或者是odds ratios,都希望參數估計可以准確代表真實的總體參數。在統計項中,這意味著估計需要是無偏的。有缺失值可能會影響無偏估計,所以需要處理。
2. 有效的能力:
刪除缺失數據會降低采樣的大小,因此會降低power。如果說問題是無偏的,那麼得到的結果會是顯著的,那麼會有足夠的能力來檢驗這個效力(have adequate power to detect your effects)。反之,整個檢測可能失效。
3. 准確的標准差(影響p值和置信區間):
不僅需要參數估計無偏,還需要標准差估計准確,在統計推斷中才會有效。

缺失值處理的方法大致分為這幾類:1、刪除法;2、基於插補的方法;3、基於模型的方法; 4、不處理; 5、映射高維

有些處理方法是基於完全隨機缺失假設(MCAR),一般來說,當數據不是 MCAR 而 是隨機缺失(MAR)時,這些方法是不適用的;而有些方法(如似然估計法)在 MAR 的假設下是適用的,因此,在進行缺失數據處理時,首先需要認真分析缺失數 據產生的原因,然後採取有針對性的補救措施,這樣才能夠獲得無偏或弱偏估計。

此處關於使用多重插補來處理非隨機缺失(MNAR)的問題,它其實效果不一定,也可能出現效果倒退的情況,總的說多重更適合MAR

註:此處一元與多元指的是僅有一個特徵有缺失值與多個特徵有缺失值

對於不同類別的缺失值的處理方法如上圖。

以下展開介紹各個方法:

註: k-means插補 與KNN插補很相似,區別在於k-means是利用無缺失值的特徵來尋找最近的N個點,然後用這N個點的我們所需的缺失的特徵平均值來填充,而KNN則是先用均值填充缺失值再找最近的N個點。

類似的還有 隨機回歸插補 :也優於純回歸插補

其他單一插補法:

與單一插補方法相比較,多重插補方法充分地考慮了數據的不確定性。多重插補的主要分為三個步驟,綜合起來即為:插補、分析、合並。插補步是為每個缺失值都構造出 m 個可能的插補值,缺失模型具有不確定性,這些插補值能體現出模型的這個性質,利用這些可能插補值對缺失值進行插補就得到了 m 個完整數據集。分析步是對插補後的 m 個完整數據集使用一樣的統計數據分析方法進行分析,同時得到 m 個統計結果。綜合步就是把得到的這 m 個統計結果綜合起來得到的分析結果,把這個分析結果作為缺失值的替代值。多重插補構造多個插補值主要是通過模擬的方式對估計量的分布進行推測,然後採用不同的模型對缺失值進行插補,這種插補是隨機抽取的方式,這樣以來能提高估計的有效性和可靠性。
多重插補-python手冊

多重插補法主要有以下幾種:

(使用回歸、貝葉斯、隨機森林、決策樹等模型對缺失數據進行預測。)

基於已有的其他欄位,將缺失欄位作為目標變數進行預測,從而得到較為可能的補全值。如果帶有缺失值的列是數值變數,採用回歸模型補全;如果是分類變數,則採用分類模型補全。

常見能夠自動處理缺失值模型包括:KNN、決策樹和隨機森林、神經網路和樸素貝葉斯、DBSCAN(基於密度的帶有雜訊的空間聚類)等。

處理思路:
自動插補 :例如XGBoost會通過training loss rection來學習並找到最佳插補值。
忽略 :缺失值不參與距離計算,例如:KNN,LightGBM
將缺失值作為分布的一種狀態 :並參與到建模過程,例如:決策樹以及變體。
不基於距離做計算 :因此基於值得距離計算本身的影響就消除了,例如:DBSCAN。

ID3、c4.5、cart、rf到底是如何處理缺失值的?

最精確的做法,把變數映射到高維空間。
比如性別,有男、女缺失三種情況,則映射成3個變數:是否男、否女、是否缺失。連續型變數也可以這樣處理。比如Google、 網路的CTR預估模型,預處理時會把所有變數都這樣處理,達到幾億維。又或者可根據每個值的頻數,將頻數較小的值歸為一類'other',降低維度。此做法可最大化保留變數的信息。

前推法 (LOCF,Last Observation Carried Forward,將每個缺失值替換為缺失之前的最後一次觀測值)與 後推法 (NOCB,Next Observation Carried Backward,與LOCF方向相反——使用缺失值後面的觀測值進行填補)

這是分析可能缺少後續觀測值的縱向重復測量數據的常用方法。縱向數據在不同時間點跟蹤同一樣本。當數據具有明顯的趨勢時,這兩種方法都可能在分析中引入偏差,表現不佳。

線性插值 。此方法適用於具有某些趨勢但並非季節性數據的時間序列。

季節性調整+線性插值 。此方法適用於具有趨勢與季節性的數據。

總而言之,大部分數據挖掘的預處理都會使用比較方便的方法來處理缺失值,比如均值法,但是效果上並不一定好,因此還是需要根據不同的需要選擇合適的方法,並沒有一個解決所有問題的萬能方法。

具體的方法採用還需要考慮多個方面的:

在做數據預處理時,要多嘗試幾種填充方法,選擇表現最佳的即可。

總結來說,沒有一個最完美的策略,每個策略都會更適用於某些數據集和數據類型,但再另一些數據集上表現很差。雖然有一些規則能幫助你決定選用哪一種策略,但除此之外,你還應該嘗試不同的方法,來找到最適用於你的數據集的插補策略。

當前最流行的方法應該是 刪除法、KNN、多重插補法

參考文獻: 龐新生. 缺失數據處理方法的比較[J]. 統計與決策, 2010(24):152-155.

閱讀全文

與mrt預處理數據缺失怎麼辦相關的資料

熱點內容
手機後台網路怎麼關閉 瀏覽:537
大數據安徽 瀏覽:563
iphone鎖屏密碼能破解嗎 瀏覽:964
電信運營商大數據徵信 瀏覽:699
怎麼u盤里的文件打不開 瀏覽:97
如何發word文件怎麼打開 瀏覽:176
惠普還原系統win10教程 瀏覽:167
iphone6ssunspider 瀏覽:796
java獲取攝像頭 瀏覽:959
怎麼用網線傳文件 瀏覽:24
電導增量法matlab程序 瀏覽:366
手機文件管理在那裡 瀏覽:205
如何取消卸載app的續費 瀏覽:316
數控編程哪個最容易 瀏覽:170
光速互動官方教程 瀏覽:411
谷歌登陸網站打不開怎麼辦 瀏覽:937
java什麼是非同步編程 瀏覽:898
怎麼刪除qq裡面的文件 瀏覽:503
qq鈴聲設置的鈴聲文件在哪裡找 瀏覽:421
有哪些有助於考公的app 瀏覽:237

友情鏈接