當前位置:
首頁 > 最新 > 強文!看懂數據探索,完整指導!

強文!看懂數據探索,完整指導!

翻譯/編輯/部分原創 Vivian Ouyang 原作者:Sunil Ray數據圈資深成員

作者簡介:美國達拉斯一家醫院數據中心工作,職位是data scientist。主要做healthcare方面的數據分析建模

在機器學習中,很多時候你會掙扎於怎麼提高模型的準確率。在這種時刻,數據探索的一些方法將幫助你解決這個問題。這個指導將幫助你理解數據探索中的主要技術。請記住你輸入的變數的數據質量決定了你模型輸出量的質量。所以當你的商業問題提出來以後,你需要花費很多時間在數據準備和探究上面,一般來說,數據清理,探究和準備大概佔據了一個項目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%的信心這兩個變數的依賴性是顯著的。卡方檢驗的統計量是

其中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值都會把很相關的變數可能排除出去。

在機器學習中,很多時候你會掙扎於怎麼提高模型的準確率。在這種時刻,數據探索的一些方法將幫助你解決這個問題。這個指導將幫助你理解數據探索中的主要技術。請記住你輸入的變數的數據質量決定了你模型輸出量的質量。所以當你的商業問題提出來以後,你需要花費很多時間在數據準備和探究上面,一般來說,數據清理,探究和準備大概佔據了一個項目70%的時間。下面是準備,理解,清理你用於建立預測模型的數據的幾個步驟,我會一個一個來介紹

1.變數確定

2.單變數分析

3.雙變數分析

4.處理缺失值

5.處理離群值

6.變數轉換

7.變數創建

在下部會介紹5,6,7三個部分。

處理離群值

離群值(Outlier)經常會引起很多錯誤的模型估算和預測。簡單的講,離群值就是離整體數據分布或者模式很遠的觀測點。舉個簡單的例子,一個研究顯示一般人的年收入是8萬,但是發現其中有兩個用戶的年收入有4塊錢或者400百萬,這兩個用戶就可以看成是離群點。下圖就是一個箱線圖的離群點的例子,被圈出來的就是離群點。

離群值的種類

離群值一般有兩個種類,一個是一元離群值,一個是多元的離群值。比如上面箱線圖的離群值點。這種離群值一般是在我們觀察單變數的分布的時候。 而多元離群值是指多維的空間,如果想找到他們,你必須看數據點的多維分布。讓我們用身高和體重之間的關係來理解一元和多元離群值。如下圖,左下和左中分別是身高和體重分別的箱線圖,我們並沒有看到離群值,而當我們畫出右下圖的身高體重散點圖的時候,我們發現了三個離群值。

知道了離群值的分類,每次當我們遇到離群值的時候,最好的辦法就是找到為什麼這些值會離群。離群值產生的原因也可以分為兩大類

假的離群(就是誤差)/非自然的離群:

1.輸入誤差:就是在數據收集中產生的人為的錯誤,比如數據記錄,數據輸入錯誤都會引起離群值。打個比方,一個顧客的年收入有十萬元,而數據輸入員將它輸入成了100萬元,是原來的十倍。這個就會造成離群點。

2.測量誤差:這是最常見的離群值的來源,這個一般是由測量儀器的錯誤造成的。比如,你有十個測量儀器,其中9個是準確的一個是壞的。那麼被壞儀器測量的組將會比其他儀器測量的組高或者低一些。這樣會引起離群點。

3.故意的離群值:這個經常發生在一些有敏感數據的自我報告中。打個比方,比如青少年一般會少報他們一周喝酒的數量,只有很少的一部分青少年會如實彙報。那麼因為大部分人都少報,那實際彙報的那些數據反而看起來像離群點了。

4. 數據處理誤差:當我們做數據分析的時候,我們會從不同的平台抓取數據,那麼這些抓取和轉換回來帶一些誤差,從而產生離群值。

5. 樣本誤差:很簡單的比方,比如我們要測量一般運動員的身高,但是我們不小心把幾個籃球隊員算進去了,因此這些造成了離群值。

自然離群

當一個離群值不是因為誤差引起的,那麼就是自然離群值,比如,有時候在比賽中,前面五十名比後面的幾百個人好太多,那一般不是因為誤差,因為離群值很多,那這種情況,就屬於自然離群,我們需要單獨對待這一部分人。

離群值的影響

離群值會很明顯的改變數據分析與建模的結果,他們有很多的不好的影響

1.它們會增加誤差的方差,而一般誤差的方差平方根會作為統計量的分母,因為減小統計量的大小,造成p值變大,從而降低模型的統計功效。

2.如果離群值是非隨機分布的,那麼它們會影響數據正態性分布。而很多線性模型的假設就是輸出變數Y是正態分布。

3.離群值還會影響估計值,讓其差生偏差

4.離群值也會影響很多統計方法的統計假設比如線性回歸,方差分析。

為了容易理解,我們看一個簡單的例子,如下圖

在右上圖,因為有了離群值300,而導致標準差,均值什麼的都產生了很大變化。這會完全改變你的統計估計。

離檢驗離群值

絕大多數探測離群值的方法都是可視化數據,我們使用不同的可視化方法,比如箱線圖,頻率圖,散點圖。當然也有一些簡單判斷的準則。比如對於一元離群值,對於任意的數據,一般的範圍是正負1.5倍的四分衛距(IQR)這種。而二元或多元離群值一般是用一種距離計算來判斷,比如馬氏距離或者線性回歸中的Cook距離。

移除離群值

絕大多數處理離群值的方法與缺失值比較類似,可以刪除或者轉換,或者替換。

刪除觀測值: 如果是因為非自然的離群值,而且數量很少的話,我們可以移除它們。

轉換以及給變數分組:轉換變數可以減少離群值,比如給變數取自然對數。然後對變數進行分組也是個不錯的轉換方法。比如對於分組過的變數,決策樹就可以很好地處理這些離群值。而且我們還可以給不同的觀測值不同的權重。比如下圖右邊就是把左邊的觀測值進行了取自然對數過後得到的新觀測值。

替換: 類似於缺失值的替換,我們也可以替換離群值,可以使用均值,中位數,眾數等方法。如果是非自然的離群值,我們可以用統計方法去預測離群值。

單獨處理:與缺失值處理不同以及增加的一項,就是單獨處理了。如果離群值數量很多,我們在統計建模中,應該把它們單獨作為一組單獨分析。一般來說比較流行的統計方法,有那種對不同的組分別建模然後給權重進行聯合的方法。

變數變換

現在讓我們跳到數據探索的最後一個階段:特徵工程。在介紹6.變數變換和7.變數創建時,先介紹一下特徵工程,因為6和7是特徵工程很重要的組成部分。特徵工程是建模中很重要的一步,是怎麼從已有的數據中提取更有用信息的藝術。你並不添加任何數據,而是讓你現有的數據怎麼變得更加有用。一般特徵工程的前五步就是我之前介紹的1,2,3,4,5.而後面兩步就是變數變換和變數創建。這兩步對你模型的預測準確度有很大的影響。

在數據建模中,變數變換是指一個變數用其相關的函數變換之後的值來表示。打個比方,我們用x取對數之後的值來取代x的值。也可以說,變數變換改變了變數的分布。那什麼時候我們需要使用變數變換呢。下面是四種情況:

1.當我們想要改變一個變數的scale活著標準化它想讓這個變數的變得更容易理解。如果你的數據有不同的scales,這種改變並不改變變數的分布的形狀

2.當我們想要把變數之間非線性的關係變成線性的。一般來講,線性關係比非線性的關係容易讓人理解。變數變數可以幫助我們完成這個。一般散點圖可以讓我們可視化兩個連續變數之間的關係。比如取對數變換是我們經常用的方法。

3. 比起傾斜分布的變數,我們更喜歡對稱分布的變數。對稱分布的變數比較容易解釋而且也易於用於參數估計。比如一般線性回歸會要求誤差服從正態分布,這裡的正太分布就是對稱分布的一種。對於參數模型,我們一般都有變數的分布假設,而很多時候,我們都假設變數是對稱分布,模型的理論推導也是建於對稱分布而來的。因此每當你有遇到很傾斜的分布的時候,最好對變數做一些變換。比如,對於向右傾斜的分布,我們可以去平方根或者立方根,也可以去對數。而對於向左傾斜的分布,我們可以平方,或者立方或者指數化我們的變數。比如右下圖向右傾斜的分布我們就指數化我們的變數

4. 有時候變數變換是來自於項目的要求,或者說能更好的完成項目的任務。打個比方,在某個人力資源的分析中,我們發現,年齡和員工的表現有很大的關係。年齡越大,表現越好。從應用的觀點來看,一般更喜歡把年齡分層成比如45歲,然後對每一組年齡層,採用不同的策略。這種方法就叫做變數分層(binning)

知道什麼時候做變數變換了,那有哪些變數變換的基本方法呢

取對數:一般用於向右傾斜分布的變數,但是它不能用於0或者負值

平方根/立方根:平方根或者立方根變數也可以改變變數分布,不過不如取對數明顯。但是立方根有自己的優勢,它可以用於0值還有負值。平方根變數可以用於含0的正值。

分組(binning):這個適用於分組變數,很多時候這種分組是建立於商業理解上。比如我們會把收入分為高收入,中等收入和低收入。當然我們有兩個變數還可以一起做多元分組。

變數建立

變數建立是利用原有的變數創建新變數的過程。打個比方,我們有日期的輸入變數(日-月-年),我們可以利用這個變數建立專門的日,月,年,星期,工作日等等比之前的輸入變數日期更好的變數。這個方法有時候用來強調變數的一些隱藏信息和關係。下面這個表就是把日期(date)變成三個新的變數(New_Day,New_Month,New_Year)的例子。

當然創建變數有很多方法,下面就介紹其中的兩種:

創建派生的變數:

這個是從原有的變數中通過函數或者其他的方法得到新的派生變數。比如kaggle競賽中很有名的泰坦尼克號數據,很多參賽者會喜歡從人的名字變數中創建Master,Mr,Mrs和Miss這四個新變數。那一般怎麼決定派生變數呢。大部分時候要按你的商業要求來。

創建虛擬的變數:

還有一個普遍的情況就是創建所謂的虛擬變數,一般用虛擬變數把非線性的變數變成數值變數。虛擬變數又叫指標變數。比如對於性別(gender)有男和女兩種,那麼我們可以建立兩個新的變數一個叫Var_Male,它的值為 1(男)和0(女),然後Var_Female變數,它的值為 0(男)和1(女)。如果非連續變數有n層(大於2),那麼可以創建n-1個虛擬變數。下面這個圖就是用性別變數(gender)來創建兩個虛擬變數(dummy variable)。

數據探索就介紹完了。總之,任何時候都不要小看data exploration,它是你建立模型的第一步。

關注我就是關注你的未來,後續還有系列文章

目前已有550+位行業人士加入.......

歡迎加入數據君數據分析秘密組織(收費)

(保存圖到手機相冊,然後微信掃,才可以加入)

這是一份事業!

數據挖掘與大數據分析

(datakong)

傳播數據解讀行業技術前沿案例分享

2013年新浪百強自媒體

2016年中國十大大數據影響平台

榮譽不重要,乾貨最實在

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大數據公社 的精彩文章:

一本書教你玩轉數據地圖

TAG:大數據公社 |

您可能感興趣

你也被「大數據殺熟」了嗎?如何避免?看本文就夠了!
你被大數據「殺熟」過嗎?怎麼解決的?
你真的看懂《明星大偵探》了嗎?數據告訴你CP指數誰最高!
為什麼說騎士是偽強隊?看完這些數據你就明白了!
氫彈的威力有多大呢?看完下面的數據就知道了
從數據看整容趨勢
大數據殺熟,了解一下?
為什麼蘋果數據線又細又軟?卻又很貴?終於知道原因了,看完恍然大悟!
拜仁六冠王是因為挖空德甲?看完這一組數據,你敢去噴尤文嗎?
「大數據殺熟」未必都錯,且看背後的定價思維
一文讀懂!看大數據如何讓你的生活更「智慧」
到底是導彈快還是子彈快?看完這組數據,氣氛立馬就尷尬了
C羅已經在退步?看看這數據再下結論吧
還在用大數據思維做培訓評估?小心掉進坑裡!
知識圖譜數據構建的「硬骨頭」,阿里工程師如何拿下?
數據解讀:庫里和歐文,誰才是新時代最擅長進攻的控球後衛?
怪才隆多,你不知道的超強數據!
庫里真的不行了嗎?請先看完這組數據,請不要再調侃萌神!
你好,大數據了解一下!
威少你變了!賽後一番話睿智而冷靜,看完數據恍然大悟!