1. 程式人生 > >機器學習1:數據預處理

機器學習1:數據預處理

出了 替代 線性復雜 邊際 大數據 關系 虛擬 引入 分類

1、 缺失值處理

首先根據df.info( )可查看各列非空值個數;df.isnull( ).sum( )可查看數據框各列缺失值個數

>>>import pandas as pd

>>>df=pd.read_csv("train.csv")

#看各列非空值個數

>>>df.info()

#查看數據框各列缺失值個數

>>>df.isnull().sum()

 

1.1刪除

適合缺失值數量較小(例如占比在5%以下),並且是隨機出現的,刪除它們對整體數據影響不大

#刪除包含缺失值的行

df.dropna()

#刪除包含缺失值的列

df.drop(axis=1)

#只刪除所有特征值均為缺失值的行

df.dropna(how=‘all‘)

#只刪除非缺失值在閾值以下的行

df.dropna(thresh=4)

若某特征值的缺失值占比過大(如超過80%),考慮刪除此特征,否則會給模型帶入較大噪聲,造成不良影響

缺點:以減少歷史數據來換取信息的完備,會造成資源的浪費,丟棄了大量隱藏在這些對象中的信息

1.2使用均值或條件均值填充

優點:用現存數據的多數信息來推測缺失值,不會讓數據嚴重失真,避免產生有偏估計

缺點:可能使變量的均值趨近於填充值,方差趨近於0,從而破壞了數據的隨機性,使得整個樣本的信息量大幅下降

1.3使用眾數、中位數、隨機值、上下數據、分位數填充

優點:處理簡單、快速

缺點:易產生有偏估計,形成人為噪聲

1.4 利用其它特征值建立模型預測缺失值

構建回歸、K-Means、貝葉斯、決策樹、隨機森林等模型歸納確定。

優點:利用了數據集中盡量多的信息,預測值可能接近於真實值,一定程度上能提高模型性能

缺點:可能在模型中引入自相關或有偏估計,給分析造成障礙。若其它特征值與預測特征值無關,則預測結果無意義;若預測結果相當準確,則該特征值不應加入模型

1.5把變量映射到高維空間(或引入虛擬變量dummy variable):

比如性別有男、女、缺失三種情況,則映射成3個變量:是否男、是否女、是否缺失。

優點:完整保留了原始數據的全部信息、不用考慮缺失值、不用考慮線性是否可分等問題

缺點:數據維度的大幅上升使得計算量顯著上升。而且只有在樣本量足夠大時才有較好效果,否則會因為過於稀疏導致效果不佳。

1.6 期望值最大化方法(Expectation maximizationEM

假設模型對於完整的樣本是正確的,那麽通過觀測數據的邊際分布可以對未知參數進行極大似然估計。對於極大似然的參數估計實際中常采用的計算方法是期望值最大化。

優點:利用了數據集中盡量多的信息,預測值可能接近於真實值,一定程度上能提高模型性能

缺點:只適用於大樣本,足夠數量的有效樣本才能保證極大似然估計值是漸近無偏的並服從正態分布。而且這種方法可能會陷入局部極值,同時計算量較大使得收斂速度較慢。

1.7熱卡插補

熱卡插補法是依照輔助變量的不同條件,將未出現缺失值的觀察值分類成若幹的“插補單元”,每一個出現缺失值的觀察值,依據輔助變量的條件,從相對應的插補單元中找尋一個觀察體,以其觀測所得的變量數值代替缺失值。

優點:利用數據間的關系來進行缺失值插補,有較高準確率;特征的整體方差與插補前比較接近,避免數據信息量的下降

缺點:難以定義相似標準,主觀因素較多;特征數量較多時,難以找到與需要插補樣本相似的樣本,計算量較大,比較耗時

1.8 人工填寫和特殊值填充一般不推薦使用

以上方法各有優缺點,具體情況要根據實際數據分分布情況、傾斜程度、缺失值所占比例等等來選擇方法。一般而言,建模法是比較常用的方法,它根據已有的值來預測缺失值,準確率更高。

2、 異常值處理

1.1簡單的統計分析

拿到數據後可以對數據進行一個簡單的描述性統計分析,譬如最大最小值可以用來判斷這個變量的取值是否超過了合理的範圍,如客戶的年齡為-20歲或200歲,顯然為異常值。在python中可以直接用pandas的describe():

1.2 3σ準則

如果數據服從或近似服從正態分布,數值分布在(μ-3σ,μ+3σ)中的概率為99.74%, 可以認為取值幾乎全部集中在(μ-3σ,μ+3σ)區間內,超出這個範圍的概率為P(|x-μ| > 3σ) <= 0.3%,屬於極個別的小概率事件,即為異常值。

這種判別處理原理及方法僅局限於對正態或近似正態分布的樣本數據處理,

但實際數據往往並不嚴格服從正態分布。它們判斷異常值的標準是以計算數據的均值和標準差為基礎的,而均值和標準差的耐抗性極小,異常值本身會對它們產生較大影響。顯然,應用這種方法於非正態分布數據中判斷異常值,其有效性是有限的。

1.3箱型圖分析

如果一個值在【QL-1.5IQR, QU+1.5IQR】之外,則被稱為異常值。QL為下四分位數, QU為上四分位數,IQR為四分位數間距,是QU與QL的差值,包含了全部觀察值的一半。

箱型圖判斷異常值的方法以四分位數和四分位距為基礎,四分位數具有魯棒性:25%的數據可以變得任意遠且不會幹擾四分位數,所以異常值不能對這個標準施加影響。因此箱型圖識別異常值比較客觀,在識別異常值時有一定的優越性。

1.4基於模型檢測

首先建立一個數據模型,異常是那些同模型不能完美擬合的對象;如果模型是簇的集合,則異常是不顯著屬於任何簇的對象;在使用回歸模型時,異常是相對遠離預測值的對象

優點:有堅實的統計學理論基礎,當存在充分的數據和所用的檢驗類型的知識時,這些檢驗可能非常有效;

缺點:對於多元數據,可用選擇少一些,並且對於高維數據,檢測的可靠性很差。

1.5基於距離

通常可以在對象之間定義鄰近性度量,異常對象是那些遠離其他對象的對象

優缺點:1.簡單;2.缺點:基於鄰近度的方法需要O(m2)時間,大數據集不適用;3.該方法對參數的選擇也是敏感的;4.不能處理具有不同密度區域的數據集,因為它使用全局閾值,不能考慮這種密度的變化。

1.6基於密度

當一個點的局部密度顯著低於它的大部分近鄰時才將其分類為離群點。適合非均勻分布的數據。

優缺點:1.給出了對象是離群點的定量度量,並且即使數據具有不同的區域也能夠很好的處理;2.與基於距離的方法一樣,這些方法必然具有O(m2)的時間復雜度。對於低維數據使用特定的數據結構可以達到O(mlogm);3.參數選擇困難。雖然算法通過觀察不同的k值,取得最大離群點得分來處理該問題,但是,仍然需要選擇這些值的上下界。

1.7基於聚類

基於聚類的離群點:一個對象是基於聚類的離群點,如果該對象不強屬於任何簇。離群點對初始聚類的影響:如果通過聚類檢測離群點,則由於離群點影響聚類,存在一個問題:結構是否有效。為了處理該問題,可以使用如下方法:對象聚類,刪除離群點,對象再次聚類(這個不能保證產生最優結果)。

優缺點:1.基於線性和接近線性復雜度(k均值)的聚類技術來發現離群點可能是高度有效的;2.簇的定義通常是離群點的補,因此可能同時發現簇和離群點;3.產生的離群點集和它們的得分可能非常依賴所用的簇的個數和數據中離群點的存在性;4.聚類算法產生的簇的質量對該算法產生的離群點的質量影響非常大。

處理方法:

1.刪除異常值----明顯看出是異常且數量較少可以直接刪除

2.不處理---如果算法對異常值不敏感則可以不處理,但如果算法對異常值敏感,則最好不要用,如基於距離計算的一些算法,包括kmeans,knn之類的。

3.平均值替代----損失信息小,簡單高效。

4.視為缺失值----可以按照處理缺失值的方法來處理

3、 重復值處理

機器學習1:數據預處理