翻譯/編輯/部分原創?Vivian Ouyang ?原作者:Sunil Ray?
在機器學習中,很多時候你會掙扎于怎么提高模型的準確率。在這種時刻,數據探索的一些方法將幫助你解決這個問題。這個指導將幫助你理解數據探索中的主要技術。請記住你輸入的變量的數據質量決定了你模型輸出量的質量。所以當你的商業問題提出來以后,你需要花費很多時間在數據準備和探究上面,一般來說,數據清理,探究和準備大概占據了一個項目70%的時間。下面是準備,理解,清理你用于建立預測模型的數據的幾個步驟,我會一個一個來介紹
1.變量確定
2.單變量分析
3.雙變量分析
4.處理缺失值
5.處理離群值
6.變量轉換
7.變量創建
首先上部會介紹1,2,3,4四個部分。
變量確定
首先,你需要確認你的輸入變量(預測指標)和你的輸出變量(目標變量)是什么,接著,你需要確認數據的種類和分類。下面用一個簡單的例子來說明,假設現在我們想要預測學生是否玩板球(cricket),現在我們需要確定輸入變量,輸出目標變量,以及每一個變量的分類和種類,下面是部分原數據
Student_ID:學生編號
Gender:性別(F-女,M-男)
Pre_EXAM_Marks:之前的考試分數
Height(cm):身高(厘米)
WeightCaregory(kgs):體重(千克)
Play Cricket:玩板球(1:玩板球,0:不玩板球)
下面這個圖是以上變量的分類和種類圖
從上圖可以看到,輸入變量(預測變量Predictor)是性別,之前的考試分數,身高,體重。而輸出值(目標變量Target)是是否玩板球。學生編號和性別是字符變量(Character),是否玩板球,之前的考試分數,身高,體重是數字變量(Numeric)。從連續和非連續來分類的話,性別和是否玩板球是非連續變量(Categorical),之前考試的分數,身高和體重是連續變量(Continuous)
單變量分析
在這個步驟,我們需要一個變量一個變量的去做分析,單變量分析的方法取決于你需要分析的變量是連續的還是非連續的。
連續型變量(Continuous Variable):對于連續型變量我們需要知道這個變量的中心(central tendency)和展布(spread or dispersion),下面是描述變量中心還有展布的指標量,以及用什么圖來進行可視化。
中心:平均值,中位數,眾數,最小值,最大值
展布分布:范圍,四分位數,內距(四分位距),方差,標準差,偏態與峰度
可視化方法:直方圖(最右的圖),箱線圖(中間一個圖)
非連續型變量(Categorical Variable):對于非連續型變量,我們使用頻率表來顯示每一個分類的分布,同時我們也可以計算每一個分類的百分比。一般可以使用條形圖或者箱線圖來可視化
雙變量分析
雙變量分析是用來找出兩個變量之間的關系,我們尋找兩個變量間有顯著水平的相關聯和非相關聯性。雙變量分析可以是非連續型變量和非連續型變量,非連續型變量和連續型變量還有連續型變量和連續型變量。下面我們將一個一個情形來說明。
連續型變量和連續型變量:對于兩個連續型變量,一般可視化我們使用散點圖。散點圖很好的顯示了兩個變量的關系,這個關系可以是線性也可以是非線性的。
上面的六個圖,左上是很強的正相關,意思是指當其中一個變量增加時,另外一個變量增加,上面正中間的是中等強的正相關,右上是沒有相關性,左下是中等強的負相關,意思是指當其中一個變量增加時,另外一個變量減少,下面正中間是很強的負相關,右下是非線性的相關。一般散點圖只是顯示了兩連續變量之間的關系,但是并沒有顯示關系的強度大小。所以我們使用一個指標相關(Correlation)來顯示關系強度的大小,相關的大小可以從-1到+1。其中“-1”指的是完美的負線性相關,“+1”指的是完美的正線性相關,“0”指的是沒有線性相關(但是可能有非線性的關系)。計算相關的公式如下
相關=變量X和Y的協方差/變量X的方差和變量Y的方差乘積的平方根
如果使用Excel,可以用CORREL()來計算兩個變量的相關。如果使用SAS可以使用PROC CORR來計算相關,如果用R,可以使用cor.test()來計算相關。如果用Python,可以使用numpy.corrcoef()來計算。下面是用EXCEL計算相關的例子,X和Y的相關系數是0.65。
非連續變量和非連續型變量:
雙向表(two-way table):我們可以用一個雙向表來分析兩個非連續變量的關系,雙向表的行代表一個非線性變量的分類,列代表另一個非線性變量的分量,然后每個小格(cell)可以顯示數目還有所占的百分比(雙向表是下面最左邊的表)。
堆積柱圖(Stacked Column Chart):這個其實就是雙向表的可視化(上面右邊兩個表)
卡方檢驗(Chi-square Test):這個檢驗是用來檢驗變量關系的顯著性。主要是比較兩個及兩個以上樣本率( 構成比)以及兩個分類變量的關聯性分析。其根本思想就是在于比較理論頻數和實際頻數的吻合程度或擬合優度問題。它會反饋用卡方分布計算的p值,當p=0的時候,這兩個變量是相互依賴的(dependent),當p=1的時候,可以理解為這兩個變量獨立(independent),當p值小于0.05的時候,意味著有95%的信心這兩個變量的依賴性是顯著的??ǚ綑z驗的統計量是
其中O表示實際觀察到的頻數,而E表示當這兩個變量獨立的時候,雙向表中每個cell的理論頻數。
非連續變量和連續型變量:
對于探索連續變量和非連續變量的關系,對于可視化,我們可以畫非連續變量每一個分類的箱線圖(boxplot)。而如果想用統計方法來檢驗它們之間的關系是否顯著,可以使用Z檢驗,t檢驗或者方差分析(ANOVA)。一般Z檢驗用于樣本比較大的情況,檢驗的是兩組之間的均值是否有顯著不同。t檢驗一般用于樣本比較小的情況(每一組都小于30),檢驗的也是兩組之間均值是否有顯著不同。而ANOVA是用來檢驗多于兩組的時候, 多個組的均值是否有不同。
缺失值處理
在數據清理中,我們經常會遇到很差的數據,會有很多缺失值,如果訓練數據中有缺失值的話會讓訓練出來的模型有偏差或者不夠擬合數據。缺失值出現的原因也有很多種,它們一般出現在兩個階段
數據抓?。涸谧ト祿^程中,因為沒有符合抓取的指導或者要求,而造成的一種缺失,這種缺失比較容易被發現并且很快的改正
數據收集:在數據收集階段的缺失比較難改正,因為有大概四種不同的情況
完全隨機缺失(Missing Completely at Random):這種情況是指對每一個觀測值,缺失的概率是一樣的。打個比方,比如現在需要一群人上報自己的收入,對于每一個上報者,在上報之前先丟硬幣,如果是正面就上報收入,如果是反面就隱瞞收入。因此對每個觀測值都有一半的機會缺失或者不缺失。
隨機缺失(Missing at Random):隨機缺失是指缺失值是任意缺失的但是對不同的輸入變量和分組,缺失值的比例是不同的。比如當我們想收集女性的年齡時,女性比起男性會有更多的缺失值(很好理解,女性一般不太喜歡被訪問年齡)。
缺失依賴于未觀測到的自變量 (Missing that depends on unobserved predictors):
當缺失值不是任意隨機的,而是和某些我們沒有觀測到的值有關。打個比方,比如在醫藥研究中,如果一種治療方法引起了病人身體的不適應,那么病人有很大的概率會提前從這個研究中退出導致最后他/她的觀測值是缺失的,這種缺失不是任意的而是和身體不適應相關的。
缺失值依賴于缺失值本身 (Missing that depends o the missing value itself):
當缺失的概率直接和缺失值本身有關的時候。比如,一般很高收入和很低收入的人不太喜歡被訪問收入多少,因此收入會有缺失值。
處理缺失值的方法
a. 刪除:表刪除(List-wise Deletion)和對刪除(Pair-wise)
通常的數據表中,行代表樣本,列代表不同的變量。在列表刪除中,只要一行有任何一個變量的值有缺失,我們就刪除一整行的信息。簡單是這個方法的主要優勢,但是很大的劣勢也是這樣嚴格的刪除會導致樣本量的減少。在成對刪除中,我們對每一個變量就用它不缺失的樣本數進行逐個分析,這種方法盡量的保留了樣本個數,但是不好的是對每一個變量你所使用的樣本個數也不一樣。兩種刪除方法如下圖例子所示,左邊是表刪除,而右邊是對刪除,你可以看到左下圖任何一行有缺失就會被劃掉刪除,而右下表,對性別(gender),勞動力(manpower),銷售(sales)變量每一個分別刪除缺失值,而不是一行全部劃掉。
主要備注:刪除的方法只能用于完全隨機缺失(Missing Completely at Random)的情況,隨意刪除不隨機的缺失值會使數據產生bias。
b. 均值(mean)/眾數(mode)/中位數(median)替換法
替換法是用估計的值去替換缺失值的方法。這個方法的目的是利用已知的可以定義的不缺失的數據去幫助估計缺失的數據。均值/眾數/中位數這三個都是經常被廣泛使用的方法。這種替換法一般也有兩大類:
第一種就是一半的替換,就是我們計算缺失的變量剩下不缺失的數據的均值,眾數或者中位數來替換缺失值。例如上圖那個例子,對勞動力那一個變量的缺失值,我們計算不缺失的勞動力的數據得到28.33,然后用這個值來替換缺失值。
第二種就是相似替換,比如在上圖那個例子里的勞動力,我們分別計算不缺失的男和女的勞動力平均值,分別是男29.75而女25,因此對于男,缺失的勞動力就用29.5替代,而對于女,缺失的勞動力就用25替代。
c.預測模型
用預測模型來估算缺失值也是一種理論比較成熟的方法。一般我們會把數據集分為兩個部分,一個部分完全沒有缺失值,而另一個部分含有缺失值。沒有缺失值的數據集作為我們的訓練數據集來得到預測模型,而有缺失值的數據集作為檢驗數據集,而缺失的變量就作為要預測的目標輸出量。下一步,我們用訓練集生成一個預測模型,用其他的變量來預測缺失的變量,然后把預測模型用到檢驗數據集來得到缺失部分的預測值。我們可以使用回歸,方差分析,邏輯回歸或者其他的機器學習的方法去做預測模型。
不過這個方法也有明顯的缺點,如果缺失的變量與其他的變量沒有什么關系,這個預測將會不準確。
d. 最近鄰居法(KNN)
在這個替換方法中,我們用缺失值周圍的離它最近或者是最相似的其他變量來估算。一般兩個變量的相似度是有距離來決定的。距離的定義可以有多種。這個方法的優點就是缺失值是連續的或者非連續的變量都可以替換。不需要對每一個缺失的變量生成預測模型。數據變量間的關系也都被考慮進去了。而缺點是對于很大的數據集,這個方法很耗時,因為它會搜索所有的相似變量,而且k值的選擇(就是缺失值周圍選k個點)也是很重要的,高的k值會讓幾乎和缺失變量不相關的變量包含進來,而低的k值都會把很相關的變量可能排除出去。
下部我將介紹5,6,7步驟,也就是離群值處理,特征工程里面的變量轉換和創建。Continued~
資源來源:https://www.analyticsvidhya.com/