值得收藏!數據分析最常用的18個概念,終於有人講明白了

  • 2019 年 10 月 10 日
  • 筆記

導讀:大多數情況下,數據分析的過程必須包括數據探索的過程。數據探索可以有兩個層面的理解:

一是僅利用一些工具,對數據的特徵進行查看;二是根據數據特徵,感知數據價值,以決定是否需要對別的欄位進行探索,或者決定如何加工這些欄位以發揮數據分析的價值。欄位的選取既需要技術手段的支撐,也需要數據分析者的經驗和對解決問題的深入理解。

作者:彭鴻濤 張宗耀 聶磊

來源:大數據DT(ID:bigdatadt)

01 數值類型

在進行數據分析時,往往需要明確每個欄位的數據類型。數據類型代表了數據的業務含義,分為3個類型:

1. 區間型數據(Interval)

數值型數據的取值都是數值類型,其大小代表了對象的狀態。比如,年收入的取值,其大小代表了其收入狀態。

2. 分類型數據(Categorical)

分類型數據的每一個取值都代表了一個類別,如性別,兩個取值代表了兩個群體。

3. 序數型數據(Ordinal)

和分類型數據非常相似,每個取值代表了不同的類別。但是,序數型的數據還有另外一層含義就是每個取值是有大小之分的。比如,如果將年收入劃分為3個檔次:高、中、低,則不同的取值既有類別之分,也有大小之分。

如果不了解欄位的實際業務含義,數據分析人員可能會出現數據類型判斷失誤。比如欄位的取值為「1」「2」「3」等,並不意味著是一個數值類型,它的業務含義還可以是一個分類型的欄位,「1」「2」「3」分別代表了一個類別,其大小沒有任何含義。所以,充分了解欄位的含義是很重要的。

很多的數據分析工具會根據數據中的欄位的實際取值,做出類型的自動判斷:如字元型的數據,一般都認定為分類型數據;如某個欄位的所有取值只有「1」「2」「3」,則判斷其為分類型變數,然後經過用戶的再次判斷,其很可能是序數型變數。

不同的數據類型,在演算法進行模型訓練時,處理和對待的方式是不同的。區間型數據是直接進行計算的;分類型數據是先將其轉換為稀疏矩陣:每一個類別是一個新的欄位,然後根據其取值「1」「0」進行計算。

在很多場景下,人們習慣將分類型數據和序數型數據統稱為分類型數據,即數據類型可以是兩個:數值型數據(區間型數據)和分類型數據(分類型數據和序數型數據)。

02 連續型數據的探索

連續型數據的探索,其關注點主要是通過統計指標來反映其分布和特點。典型的統計指標有以下幾個:

4. 缺失值

取值為空的值即為缺失值。缺失值比例是確定該欄位是否可用的重要指標。一般情況下,如果缺失率超過50%,則該欄位就完全不可用。

在很多情況下,我們需要區別對待null和0的關係。Null為缺失值,0是有效值。這個區別很重要,要小心區別對待。例如,某客戶在銀行內的某賬戶餘額為null,意味著該客戶可能沒有該賬戶。但是如果將null改為0,則是說用戶有該賬戶,且賬戶餘額為零。

5. 均值(Mean)

顧名思義,均值即平均值。其大小反映了整體的水平。一個數學平均成績是95分的班級,肯定比平均成績是80分的班級的數學能力要好。

6. 最大值和最小值

最大值和最小值即每個數據集中的最大數和最小數。

7. 方差

方差反映各個取值距平均值的離散程度。雖然有時兩組數據的平均值大小可能是相同的,但是各個觀察量的離散程度卻很少能相同。方差取值越大,說明離散程度越大。比如,平均成績是80分的班級,其方差很小,說明這個班級的數學能力比較平均:沒有多少過高的成績,也沒有多少過低的成績。

8. 標準差

標準差是方差的開方,其含義與方差類似。

9. 中位數(Median)

中位數是將排序後的數據集分為兩個數據集,這兩個數據集分別是取值高的數據集和取值低的數據集。比如,數據集{3,4,5,7,8}的中位數是5,在5之下和5之上分別是取值低和取值高的數據集。數據集{2,4,5,7}的中位數應當是(4 + 5)/2=4.5。

10. 眾數(Mode)

眾數是數據集中出現頻率最高的數據。眾數最常用的場景是分類型數據的統計,但是其也反映了數值型數據的「明顯集中趨勢點的數值」。

均值、中位數、眾數的計算方式各有不同,假設有一組數據:

1,2,2,3,4,7,9

  • 均值:(1 + 2 + 2 + 3 + 4 + 7 + 9)/7=4
  • 中位數:3
  • 眾數:2

11. 四分位數(Quartile)

四分位數,即用三個序號將已經排序過的數據等分為四份,如表2-2所示。

▲表2-2 四分位的例子

第二四分位數(Q2)的取值和中位數的取值是相同的。

12. 四分位距(Interquartile Range,IQR)

四分位距通過第三四分位數和第一四分位數的差值來計算,即IQR=Q3-Q1。針對上表,其IQR=61-34=27。

四分位距是進行離群值判別的一個重要統計指標。一般情況下,極端值都在Q1-1.5×IQR之下,或者Q3 + 1.5×IQR之上。著名的箱形圖就是藉助四分位數和四分位距的概念來畫的,如圖2-1所示。

▲圖2-1 箱形圖及IQR

箱形圖中的上下兩條橫線,有可能是離群值分界點(Q3 + 1.5×IQR或Q1-1.5×IQR),也有可能是最大值或最小值。這完全取決於最大值和最小值是否在分界點之內。

13. 偏斜度(Skewness)

偏斜度是關於表現數據分布的對稱性的指標。如果其值是0,則代表一個對稱性的分布;若其值是正值,代表分布的峰值偏左;若其值是負值,代表分布的峰值偏右。在圖2-2中給出了偏斜度的示例。

▲圖2-2 Skewness的含義

Skewness的絕對值(不論是正值還是負值)如果大於1是個很明顯的訊號,你的數據分布有明顯的不對稱性。很多數據分析的演算法都是基於數據的分布是類似於正態分布的鐘型分布,並且數據都是在均值的周圍分布。如果Skewness的絕對值過大,則是另一個訊號:你要小心地使用那些演算法!

不同的偏斜度下,均值、中位數、眾數的取值是有很大不同的:

▲圖2-3 眾數、均值及中位數在不同分布下的比較

由圖2-3可見,在數據取值範圍相同的情況下,中位數是相同的。但是均值和眾數卻有很大的不同。所以,除了偏斜度指標可以直接反映分布特徵外,還可以通過中位數和均值的差異來判斷分布的偏斜情況。

  • 中位數<均值:偏左分布
  • 中位數、均值相差無幾:對稱分布
  • 中位數>均值:偏右分布

14. 峰態(Kurtosis)

標準正態分布的峰態的值是3,但是在很多數據分析工具中對峰態值減去3,使得:0代表是正態分布;正值代表數據分布有個尖尖的峰值,高於正態分布的峰值;負值代表數據有個平緩的峰值,且低於正態分布的峰值。

峰態指標的主要作用是體現數值分布的尾巴厚度,尖峰對應著厚尾,即Kurtosis大於0時,意味著有一個厚尾巴。尖峰厚尾也就是說,在峰值附近取值較集中,但在非峰值附近取值較分散。圖2-4所示為一個峰態的例子。

▲圖2-4 峰態的例子

在連續型數據的探索中,需要重點關注的指標首先是缺失率,然後是均值、中位數等指標,這些指標能幫助數據分析者對數據的特徵有很好的了解。偏斜度是另外一個非常重要的指標,但其絕對值接近1或大於1時,必須對其進行log轉換才能使用,否則該指標的價值將大打折扣。

Python Pandas中DataFrame的describe方法默認只統計連續性欄位的最大值、最小值、均值、標準差、四分位數,如果想獲取其他的特徵值,需要調用相應的函數來獲得。下面是一段示例程式碼,其運行結果通過表2-4來展示。

List_of_series = [bank.var().rename('方差'),                    bank.median().rename('中位數'),                    bank.skew().rename('偏斜度'),                    bank.kurt().rename('峰態')]  df = pd.DataFrame(list_of_series)  mode = bank.mode(numeric_only=True).rename({0: '眾數'})  pd.concat([df, mode])  

▲表2-4 連續型變數數據探索示例程式碼的運行結果

03 分類型數據的探索

分類型數據的探索主要是從分類的分布等方面進行考察。常見的統計指標有以下幾個:

15. 缺失值

缺失值永遠是需要關心的指標,不論是連續型數據,還是分類型數據。過多的缺失值,會使得指標失去意義。

16. 類別個數

依據分類型數據中類別的個數,可以對指標是否可用有一個大致的判斷。例如,從業務角度來看,某指標應當有6個類別,但實際樣本中只出現了5個類別,則需要重新考慮樣本的品質。再如,某個分類型變數只有一個類別時,對數據分析是完全不可用的。

17. 類別中個體數量

在大多數情況下,如果某些類別中個體數量太少,如只有1%的比例,可以認為該類別是個離群值。關於分類型變數離群值的研究比較多,但是如果脫離業務來談分類型變數的離群值,是不妥當的。

不平衡數據就是一個典型的與業務有關的例子。比如,從業務角度來看,購買黃金的客戶只佔銀行全量客戶的很小的一個部分,如果採取簡單隨機抽樣的方式,「是否購買」列的值將只有極少的「是」的取值。

但是,不能將「是」直接判斷為離群值,反而「是」有極其重要的業務含義。所以,數據分析者需要靈活地認識和對待類別中個體數量的問題。

18. 眾數

和連續型數據的含義一樣,眾數是數據集中出現頻率最高的數據。比如,針對某個分類型取值A、B、C、D中C的出現次數最多,則C就是眾數。

以下是一段分類型變數數據探索示例程式碼,其運行結果通過表2-5來展示。

bank.describe(include=[np.object])  

▲表2-5 分類型變數數據探索示例程式碼的運行結果

應用Python Pandas的相關函數能夠非常容易得到分類型變數的探索結果,表2-5所示就是數據探索示例程式碼的運行結果。

關於作者:彭鴻濤,德勤企業諮詢總監兼首席數據科學家,德勤全球AI團隊核心成員,德勤數字化轉型、智慧營銷、智慧風控、客戶體驗等核心諮詢服務方案的資深顧問。

張宗耀,上海全應科技有限公司資深數據科學家,前華為企業智慧部門資深數據科學家,前IBM SPSS 演算法組件團隊資深演算法工程師。

聶磊,陝西萬禾數字科技有限公司CTO,前IBM SPSS 資深數據科學家,前IBM Watson Analytics數據分析引擎技術主管及架構師。

本文摘編自《增強型分析:AI驅動的數據分析、業務決策與案例實踐》,經出版方授權發布。

延伸閱讀《增強型分析》

點擊上圖了解及購買

轉載請聯繫微信:DoctorData

推薦語:增強型分析是數據科學的未來,本書講解了如何通過前沿的大數據技術和AI技術實現智慧的數據分析和業務決策,即增強型分析。本書的三位作者是來自德勤、前華為和前IBM的資深數據科學家,在大數據和AI領域至少都有10年以上的工作經驗,他們將各自多年來在「構建數據挖掘模型,解決實際業務問題」方面積累的經驗全部總結在了這本書中。