數據挖掘預備役——前期數據處理(譯)

原文:

A Comprehensive Guide to Data Exploration

介紹:

通往數據挖掘的道路沒有捷徑。如果你認為機器學習可以讓你遠離數據風暴。相信我,它不會的。在一段的學習之後,你會意識到它只是一直拚命的提升模型的準確性。數據挖掘技術會幫你走出這個困境。

我可以很確定這麼說,因為我已經經歷了太多這些情況。

到目前為止我已經從事商業分析三年了,在我最開始的時候,我的導師建議我花大量的時間在數據分析和挖掘上。遵照他的建議,我平步青雲。

這個教程幫你明白數據挖掘的基礎技術,我也儘力用最簡單的方法來解釋這些概念。

目錄

1、 數據挖掘的準備

2、 缺失值處理

3、 異常值檢驗和處理

4、 特徵設計的藝術

一、 數據挖掘的準備

源數據的質量決定你輸出的質量。因此,你會花整個項目70%的時間進行數據挖掘的清洗和準備才能獲得到商業假設。下面是在建設預測模型需要清洗和準備的步驟:

1. 變數定義

2. 單變數分析

3. 二維變數分析

4. 缺失值處理

5. 異常值處理

6. 變數轉化

7. 變數生成

最終我們會迭代4-7步多次直到提出改進的模型。

現在讓我們詳細的學習每一步

1. 變數定義

最先定義因變數和自變數,然後定義數據類型(數值、文本等)和變數的種類(連續,離散)。舉個例子:

假設我們預測學生是否玩板球

下面圖示,變數被定義為不同類別

2. 單變數分析

這一步,我們逐個分析變數。變數類型是連續還是離散的影響單變數分析方法。讓我們來整理下針對不同變數類型的統計方法和量度。

連續變數——我們需要理解集中趨勢和集中程度。他們用以下顯示的統計指標來度量。

注意:單變數分析也是被用來標識出缺失值和異常值的方法。

離散變數——用頻率去理解每個分類的分布。可以頻數和頻率兩個指標來衡量每個分類,一般用柱狀圖進行可視化。

3、二維變數分析

二維變數分析找出兩個變數之間的關係。在預先定義的顯著水平中探尋變數的相關性。連續性和離散性變數可以任意兩兩做相關分析,但要針對不同的搭配用相應的分析手段。

連續變數&連續變數

利用散點圖可以快速發現彼此關係。可以判斷是否線性相關,但不能預測相關的強度。用相關性來確定關係的強度,它介於-1到1之間,-1代表負線性相關,+1代表正線性相關,0代表無線性相關性。線性相關公式為

Correlation= Covariance(X,Y) / SQRT( Var(X)* Var(Y))

大量工具可以計算出相關情況,excel中的CORREL(),下面案例:

類別型&類別型

二維表

創建二維表格,表格內填入數量或者百分比。行和列分別代表一種變數。

卡方檢驗

卡方檢驗是用來推導變數之間的統計顯著性。它檢測是否樣本數據足夠概括總體情況。它是根據期二維表中一個或多個類別期望值和觀察值的不同,他返回的概率用於計算卡方檢驗的自由度

概率為0:類別變數是相依賴的

概率為1:類型變數是獨立的

概率小於0.05:兩個變數顯著性在95%置信區間內。卡方檢驗統計兩個類別型變數獨立性的函數:

O代表觀察的頻率,

E代表零假設下期望的頻率,其計算公式

類別型&連續型

可以給每個標準類別型變數畫箱線圖,如果標準數值比較小,他不能展示數據的顯著性,我們可以用Z檢驗,T檢驗或者方差分析

Z檢驗/T檢驗:兩者都是估計兩組的平均值是否不同

如果Z值越小表明兩組平均越顯著。T檢驗與Z檢驗很相似,但兩個類別型數量要小於30個

方差分析:他估計兩組數據平均是否不同

例子:假設我們想檢查下五種鍛煉的效果,我們募集20個志願者,每4人一組練習一種鍛煉項目,記錄他們幾個星期的體重變化,可以通過5組數據比較來判斷鍛煉項目效果是否一致

二、缺失值處理

1、為什麼處理缺失值是必須的?

在樣本中有缺失值會減弱模型的強度,或者能導致有偏模型因為我們不能正確的分析變數間行為和關係,導致錯誤的預測和分組。

看上圖的缺失值:左側的方案,不處理缺失值,表明玩板球的男性概率等於女性。右側的方法表明女生高於男生的

2、為什麼我的數據有缺失值

數據提取:發生在數據收集的時候而且很難去修正。大致分為四個類型

A. 缺失值完全隨機的:對觀察對象丟失值發生的概率是一樣的,例如數據收集過程的調查者是否說明他的收入取決於仍硬幣,正面朝上就告訴你,反面就不告訴。

B. 缺失值隨機:變數隨機丟失而且不同維度的比例失調,例如我們收集年齡的數據,女性缺失值高於男性

C. 缺失值取決於未觀測的自變數:缺失值不是隨機的,與因變數息息相關。例如,在醫學中,如果特定的診斷引起不舒服,會有很高的概率導致逃課。(Ina medical study, if a particular diagnostic causes discomfort, then there ishigher chance of drop out from the study. This missing value is not at randomunless we have included 「discomfort」 as an input variable for all patients.)

D. 缺失值取決於缺失值本身:例如:高收入或者低收入不願意回應他們的收入。

3、處理缺失值的方法有哪些

A. 刪除:用於缺失值完全隨機的情況

如下圖,兩種刪除方式。左側是缺失值的整條記錄刪除,這個方法削弱數據的強度。右側僅刪除缺失值項,但不同的變數的樣本數量不同。

B.平均值、中位數、眾數填充

1) 廣義性填充:我們用所有變數均值或者中位數填充所有缺失值變數

2) 相似性填充:我們計算每類變數的的平均值,按照分類進行對應缺失值填充

C.預測模型:

是比較複雜的方法。把數據分為2組,一組是無缺失值為訓練組,另一組有缺失值為測試組(其中有缺失值變數為因變數)。我們根據訓練組屬性建立模型來預測因變數填充測試中缺失值。可以用回歸,方差,邏輯回歸等多種建模方法。這個方法有缺點:估計出來的值比真實在表現更好,如果數據和缺失值沒有相關性,那麼預測模型不能準確估計缺失值。

D.KNN演算法填充

用距離公式判斷給定數據中與缺失值最相似的數據,用其進行填充。優點:KNN可以預測定性或者定量的屬性;不需要為缺失值每個屬性創建一個預測模型;多重變數的屬性很容易處理;數據結構相關性也被考慮在內

缺點:KNN演算法比較耗時間;K值的選擇很關鍵,k值選高了把不同屬性的數據也囊括進來,選低了錯失數據

三、異常值處理

異常值是偏離樣本模型的值。例如在做客戶剖析,發現顧客年度平均收入是$0.8,但有兩個顧客收入為$4、$4.2。這兩個顧客遠比其他人高,被看做異常值。

1、異常值有什麼類型

單變數異常值和多變數異常值,上述例子就是單變數異常值,通過觀察一個變數分布就可以發現異常值。多變數異常值需要在多維空間分布內才能發現異常值

觀察下圖身高和體重的關係,列出單變數和二維變數分布圖。觀察盒圖,沒有發現異常值(都在在1.5極差內),但看散點圖,有兩個點很低和一個點高於平均水平

2、什麼引發異常值

無論什麼時候我們碰到異常值,最理想的辦法處理是發掘異常值的原因是什麼。

數據輸入錯誤測量錯誤(測量儀器錯誤),實驗錯誤(例如7個選手參加100米比賽,其中一個因溜號錯過發槍號令,因此他的時間可能為異常值),故意異常值(經常發生在敏感問題的自我評估上,例如調查青年人的喝酒量,僅有一小部分會吐露真情,大部分會低於其真實值,這會導致真實值成為異常值),數據處理錯誤(進行數據挖掘的時候,需從多方面資源提取數據,可能處理或提取錯誤可能導致數據異常),樣本錯誤(例如,要測量運動員身高,樣本包含籃球運動員數據,他們很大肯定為異常值),非人為異常值(例如,世界50強經濟數據異常高於其他公司,但並不是錯誤,此時需要分成兩部分來處理)

3、異常值的影響

異常值能改變數據分析結果和統計模型

4、如何發現異常值

運用可視化,異常值經驗法則如下

盒圖:超過正負1.5極差為異常值

限制方法:在5%-95%以外的數據為異常值

數據點:數據與平均值的差值三倍或更多時為異常值

業務邏輯:對業務了解

公式演算法:二維變數或多維變數經常用指數影響或者距離影響。例如馬氏距離和Cook距離

5、如何處理異常值

異常值處理和缺失值處理很多類似。

刪除觀察值:數據輸入錯誤,數據處理錯誤或者異常值數量很小。也可以刪除兩端極值去除異常值

轉化和分類數據:數值的自然對數減少異常值,Binningis also a form of variable transformation.決策樹可以很好處理變數分類。也可以給不同變數權重。

人為賦值:與處理缺失值一樣。但只有人為因素導致異常才能用此方法。

分開處理:異常值數量不少的時候

四、特徵工程的藝術

特徵工程是一門科學,從已存在的數據中挖掘更多信息,使數據變得更有價值。

例如:根據日期預測購物中心到客率,如果直接用日期不太可能發現有用的見解,但使用星期去度量數據,可能會發現相關規律

1、特徵工程的過程是什麼?

變數轉化和變數/特徵創建,這對於數據挖掘影響很大。

A.變數轉化:數據模型中,轉化是指用平方/立方根或者對數等公式演算法替代原數據,或者說轉化就是改變變數與其他變數的分布或者關係。

2、什麼時候使用變數轉化?

1)當為了更好理解變數而改變其單位或者標準。當數據單位不同時,這個轉換是必須的,此時的轉化不會改變變數間的分布情況。

2)把複雜非線性的關係轉化線性關係,散點圖可以展示連續型變數的關係,對數轉化是最常用的手法

3)對稱分布好於有偏分布:當數據右偏,用平方/立方根或者對數方法;當數據左偏,用平方,開方或者指數方法。

  • 4)Variable Transformation is also done from an implementation point of view(Human involvement). Let』s understand it more clearly. In one of my project on employee performance, I found that age has direct correlation with performance of the employee i.e. higher the age, better the performance. From an implementation stand point, launching age based progamme might present implementation challenge. However, categorizing the sales agents in three age group buckets of <30 years, 30-45 years and >45 and then formulating three different strategies for each group is a judicious approach. This categorization technique is known as Binning of Variables.

3、常見變數轉化方法有哪些?

有很多種轉化方式,像平方,開方/立方根,對數,分組,互換等。下面介紹常見的方法優缺點

對數:通常用在右偏數據中,但不能處理0和負值

平方/立方根:有效的影響分布,但沒有對數顯著,立方根處理負數佔有優勢

分組:針對類別型變數,對原始百分比或頻率。分組基於對業務的了解。例如,可以把收入分為高、中、低。

B什麼是特徵/變數創建,他的好處?

針對存在的變數生成一個新變數。例如,在數據列日期形式是(dd-mm-yy) ,可以生成日,月,年三個單獨的變數。也許一周數據對目標數據有更好的相關性,用這個方法可以突出隱藏的關係。

常見生成新變數的方法如下

1) 生成衍生變數:

用公式或者其他方法創建新變數。例如:數據性別列很多缺失值,但在姓名中有Mr,Miss,可以根據姓名確定性別

2) 生成虛擬變數:

最常見的是把類別型變數轉化為數值型變數

------------------------------------

大家也可以加小編微信:tswenqu (備註:知乎),進R語言中文社區 交流群,可以跟各位老師互相交流


推薦閱讀:

R語言教程
Rattle:數據挖掘的界面化操作
對,你沒看錯,真的有這種操作~

TAG:数据挖掘 | 数据处理 | R编程语言 |