天天看點

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

點選檢視第一章 點選檢視第三章

第2章

大資料探索及預處理

現在幾乎人人都在談論大資料和人工智能,然而應用大資料和人工智能技術的基本前提是資料。不論資料的擁有方還是資料分析解決方案及工具的提供方,其終極目标都是“通過資料分析,從資料中找出洞見并應用于實際場景中帶來價值”。

資料探索、資料預處理等工作是進行資料分析的首要工作。不論是采用大資料的工具還是采用相對較小的資料集上的資料挖掘的工具,模型的建構都需要經過對資料不斷地探索、選擇和加工合适的字段、采用合适的算法并訓練模型等過程。

資料探索的目的是了解資料的狀态,資料預處理則是為了将資料加工為更有價值的形态。資料分析者應當具有很好的意識,能夠感覺資料的價值,具備資料加工能力。

2.1大資料探索

大多數情況下,資料分析的過程必須包括資料探索的過程。資料探索可以有兩個層面的了解:一是僅利用一些工具,對資料的特征進行檢視;二是根據資料特征,感覺資料價值,以決定是否需要對别的字段進行探索,或者決定如何加工這些字段以發揮資料分析的價值。字段的選取既需要技術手段的支撐,也需要資料分析者的經驗和對解決問題的深入了解。

2.1.1數值類型

在進行資料分析時,往往需要明确每個字段的資料類型。資料類型代表了資料的業務含義,分為3個類型:

(1)區間型資料(Interval)

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

(2)分類型資料(Categorical)

分類型資料的每一個取值都代表了一個類别,如性别,兩個取值代表了兩個群體。

(3)序數型資料(Ordinal)

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

如果不了解字段的實際業務含義,資料分析人員可能會出現資料類型判斷失誤。比如字段的取值為“1”“2”“3”等,并不意味着是一個數值類型,它的業務含義還可以是一個分類型的字段,“1”“2”“3”分别代表了一個類别,其大小沒有任何含義。是以,充分了解字段的含義是很重要的。

很多的資料分析工具會根據資料中的字段的實際取值,做出類型的自動判斷:如字元型的資料,一般都認定為分類型資料;如某個字段的所有取值隻有“1”“2”“3”,則判斷其為分類型變量,然後經過使用者的再次判斷,其很可能是序數型變量。

不同的資料類型,在算法進行模型訓練時,處理和對待的方式是不同的。區間型資料是直接進行計算的;分類型資料是先将其轉換為稀疏矩陣:每一個類别是一個新的字段,然後根據其取值“1”“0”進行計算。

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

2.1.2連續型資料的探索

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

(1)缺失值

取值為空的值即為缺失值。缺失值比例是确定該字段是否可用的重要名額。一般情況下,如果缺失率超過50%,則該字段就完全不可用。

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

(2)均值(Mean)

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

(3)最大值和最小值

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

(4)方差

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

(5)标準差

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

(6)中位數(Median)

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

(7)衆數(Mode)

衆數是資料集中出現頻率最高的資料。衆數最常用的場景是分類型資料的統計,但是其也反映了數值型資料的“明顯集中趨勢點的數值”。

均值、中位數、衆數的計算方式各有不同,如表2-1所示。

表2-1 均值、中位數、衆數的例子

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

(8)四分位數(Quartile)

四分位數,即用三個序号将已經排序過的資料等分為四份,如表2-2所示。

表2-2 四分位的例子

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

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

(9)四分位距(Interquartile Range,IQR)

四分位距通過第三四分位數和第一四分位數的內插補點來計算,即IQR=Q3-Q1。針對上表,其IQR=61-34=27。四分位距是進行離群值判别的一個重要統計名額。一般情況下,極端值都在Q1-1.5×IQR之下,或者Q3 + 1.5×IQR之上。著名的箱形圖就是借助四分位數和四分位距的概念來畫的,如圖2-1所示。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-1 箱形圖及IQR

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

(10)偏斜度(Skewness)

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

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-2 Skewness的含義

Skewness的絕對值(不論是正值還是負值)如果大于1是個很明顯的信号,你的資料分布有明顯的不對稱性。很多資料分析的算法都是基于資料的分布是類似于正态分布的鐘型分布,并且資料都是在均值的周圍分布。如果Skewness的絕對值過大,則是另一個信号:你要小心地使用那些算法!

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

由圖2-3可見,在資料取值範圍相同的情況下,中位數是相同的。但是均值和衆數卻有很大的不同。是以,除了偏斜度名額可以直接反映分布特征外,還可以用表2-3中的方法來判斷。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

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

表2-3 通過中位數和均值的差異來判斷分布的偏斜情況

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

(11)峰态(Kurtosis)

标準正态分布的峰态的值是3,但是在很多資料分析工具中對峰态值減去3,使得:0代表是正态分布;正值代表資料分布有個尖尖的峰值,高于正态分布的峰值;負值代表資料有個平緩的峰值,且低于正态分布的峰值。

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

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

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-4 峰态的例子

Python Pandas中DataFrame的describe方法預設隻統計連續性字段的最大值、最小值、均值、标準差、四分位數,如果想擷取其他的特征值,需要調用相應的函數來獲得。下面是一段示例代碼,其運作結果通過表2-4來展示。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

表2-4 連續型變量資料探索示例代碼的運作結果

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

2.1.3分類型資料的探索

分類型資料的探索主要是從分類的分布等方面進行考察。常見的統計名額有以下幾個:

缺失值永遠是需要關心的名額,不論是連續型資料,還是分類型資料。過多的缺失值,會使得名額失去意義。

(2)類别個數

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

(3)類别中個體數量

在大多數情況下,如果某些類别中個體數量太少,如隻有1%的比例,可以認為該類别是個離群值。關于分類型變量離群值的研究比較多,但是如果脫離業務來談分類型變量的離群值,是不妥當的。不平衡資料就是一個典型的與業務有關的例子。比如,從業務角度來看,購買黃金的客戶隻占銀行全量客戶的很小的一個部分,如果采取簡單随機抽樣的方式,“是否購買”列的值将隻有極少的“是”的取值。但是,不能将“是”直接判斷為離群值,反而“是”有極其重要的業務含義。是以,資料分析者需要靈活地認識和對待類别中個體數量的問題。

(4)衆數

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

以下是一段分類型變量資料探索示例代碼,其運作結果通過表2-5來展示。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

表2-5 分類型變量資料探索示例代碼的運作結果

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

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

2.1.4示例:資料探索

我們采用加州大學歐文學院建立的Machine Learning Repository 網站上的一個資料集,Bank Marketing Data Set 。Machine Learning Repository是一個非常著名的網站,裡面的資料集最早被分享于1987年。很多著名的計算機類的論文都引用這個網站上的資料。Bank Marketing Data Set來自葡萄牙某銀行的市場營銷資料,表2-6展示了部分字段的類型及取值範圍。

表2-6 Bank Marketing Data Set的字段說明

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

該案例所描述的場景是葡萄牙某銀行機構的電話營銷活動,通過調查客戶的基本資訊來預測客戶是否會認購定期存款,所調查的客戶資訊包括年齡、工作類型、婚姻狀況、教育、是否有個人貸款等。在本節中,我們使用bank-full資料集完成一個資料探索示例,包括單個變量的分布情況、雙變量之間的關系,這些探索可以為缺失值處理、異常值和離群值處理、特征變換做一個很好的鋪墊。

通過可視化工具可以展現單變量的分布特征。對于連續型變量age、balance、duration,通過折線圖和箱形圖展現資料的情況。對于分類型變量job、marital、education、y,通過柱狀圖展現資料的情況。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理
帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

上述代碼是繪制age、balance、duration變量的折線圖,并将其在一個圖中集中展現。通過觀察折線圖可以初步掌握資料的缺失情況、異常情況和離群值情況等。比如balance變量存在一些極大值情況,但大多數值都落在小區間範圍内。圖2-5所示是三個變量age、balance、duration的折線圖結果。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-5 折線圖的示例

箱形圖從分位數的角度來展現變量的分布特征,人們往往會根據箱形圖做出離群值的過濾條件等資料清洗規則。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理
帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

從圖2-6中可以看出,age變量取值範圍比較大,離群點較少;balance變量和duration變量的取值範圍比較小,都分布在小值範圍内,離群點分布範圍比較廣。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-6 箱形圖的示例

分類型變量一般首先通過柱狀圖來展現分布特征。下面的代碼是分别繪制資料集中變量job、marital、education、y的柱狀圖。為了展現更為詳盡的柱狀圖的繪制原理,我們采用“統計各分類值取值個數,然後再繪制柱狀圖”的方法。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理
帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

從圖2-7的4個柱狀圖中可以看出每個變量的取值分布,比如job變量類别比較多,其中一個類别取值比較少;education變量中unknown的值個數比較少;y變量的資料分布不均衡。資料集出現預測變量類不均衡的情況,在建構分類型預測模型時一般需要将資料處理為均衡資料集才可使用。讀者可以參考5.5.2節中的介紹以了解處理的方法和過程。

雙變量的關系探查往往能發現非常有價值的資料洞見。雙變量探查包括連續型-連續型、連續型-分類型、分類型-分類型這些關系,連續型-連續型使用散點圖來探查它們的線性關系,分類型-分類型使用堆疊柱狀圖或卡方檢驗,連續型-分類型使用ANOVA方差進行分析。本案例通過連續型-連續型進行舉例說明,選擇使用age變量和balance變量。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理
帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

上述代碼通過散點圖和兩個直方圖(如圖2-8所示)可以從變量分布以及變量間的關系的角度發現有價值的結論。例如,對于age的不同取值,balance的取值都集中在20000的範圍内,20000之外的取值比較少;财富在20000以上的人群年齡基本在40歲以上;60歲是一個明顯的财富分割點,即60歲以上仍然擁有20000以上财富的人數陡降。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-7 柱狀圖示例

圖2-8隻是從分布的角度來看是否能發現有意義的業務洞察。若單純計算兩個變量間的相關性并進行展示,則可以參考下面的例子。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理
帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-8 雙變量關系探索的示例(X軸是age變量,Y軸是balance變量)

從圖2-9中可以看出,age和balance之間的相關性隻有0.098,說明它們之間的相關性比較弱。計算變量間的相關系數,可以為後期進行模型建構、變量選擇、衍生名額加工提供依據。在1.4節中,我們鼓勵資料分析者能夠輸出兩種價值,其實圖2-8及其對應的解讀就是一個很好的示例。

在資料分析實踐中,筆者強烈建議資料分析者能夠花費大量的時間在資料探索的工作上。這樣既能保證資料分析者對業務的深刻了解,也能為後續的資料預處理奠定非常好的基礎。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-9 雙變量相關矩陣的示例

2.2資料預處理

資料的重要性在大多數情況下都超過了算法的重要性。資料預處理是資料分析過程中的一個重要步驟。多年以來,人們在資料品質上的持續投入大幅減少了越界、缺失、不一緻等問題。但是,資料品質問題仍然存在。資料分析者應當對資料品質時刻保持警惕,因為品質很差的資料是很難得到有用的分析結果的。既然資料品質問題不可避免,那麼處理它們是資料預處理的工作之一。資料預處理的完整工作應當包括資料清洗、資料內建、資料變換和資料歸約處理。

2.2.1資料清洗

資料清洗就是發現和改正(或移除)不準确或不精确的資料。資料倉庫的資料治理子產品重點關注資料品質問題,并擁有完善的資料清洗功能。本書讨論的資料清洗的工作,在資料倉庫的管理者看來,是屬于他們的工作範疇。但是,我們并不認為,從資料倉庫中出來的資料都是沒有問題,況且資料分析的資料源并不隻有資料庫或者資料倉庫。在資料分析領域,常用的資料清洗包括以下幾種:

1. 缺失值的處理

處理缺失值是最為常見的資料清洗工作。在資料分析中會遵從一些規則來填補缺失值。比如:

  • 對于連續型變量,采用均值來代替缺失值;
  • 對于序數型分類型變量,采用中位數來代替缺失值;
  • 對于分類型變量,采用衆數來代替缺失值。

2. 越界值的處理

少數的越界值會被當作離群值來處理;大量的越界值需要通過業務知識來判斷。比如,對于銀行客戶的資産負債比,如果有較多人是負數,就需要高度懷疑資料的加工方式出現了問題。因為從業務角度來看,這種情況不可能是普遍現象。

Python提供了很多方法來處理缺失值。最簡單的方法是調用replace函數或者直接調用DataFrame中的fillna函數進行缺失值的替換。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

上述代碼用來填充空白值,其運作結果如圖2-10所示。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-10 資料空白值填充的示例

對于越界值的處理會更複雜,因為需要用不同的業務知識來判斷越界值産生的原因,然後再決定越界值的處理方式:是簡單地将越界值移除,還是對越界值進行糾正?但這些操作的前提是先識别越界值。對于連續型的變量,可以采用Z-score将資料變換成均值為0、标準差為1的資料,然後Z-score的值超過3~-3的資料都會被認為是越界值,并将這些值從資料中去除。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

從上述代碼的處理結果中可以看出,有5002(初始資料有45211行,過濾離群值後有40209行)行包含離群值的資料被過濾掉。類似于拼寫錯誤、值與字段含義不比對等資料清洗的工作,一般都需要借助一些批處理的腳本來處理。

在一些資料預處理工具中,針對一些情況,其會自動做一些處理,比如:

  • 如果一個變量的缺失值比例大于設定門檻值(預設是50%),那麼該變量将被忽略;
  • 對于連續型變量,如果該變量的最大值等于最小值(即為常量),那麼該變量将被忽略;
  • 對于分類型變量,如果該變量的衆數在記錄中所占比例大于設定門檻值(預設是95%),那麼該變量将被忽略。
帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

在上面的例子中,第一個條件使用isnull()函數标記資料中全部的缺失值,再通過mean()函數計算缺失值所占的比例,最後判斷是否大于設定的門檻值;第二個條件判斷資料的每一個值是否都相同(是否是常量);第3個條件通過value_counts()函數和max()函數計算資料中每一個變量衆數的比例,并判斷是否大于設定的門檻值。我們隻要通過這樣一條語句就可以完成上述所有的資料預處理過程。經過這些條件的處理,資料變成了16個變量,說明其中一個變量因為滿足這些條件而被忽略了。下面我們單獨執行每一個條件,看看是什麼條件被觸發了。

在圖2-11中,分别執行資料預處理的3個條件,我們看到“已授信”字段觸發了“衆數比例大于95%”這個條件而被忽略。基于這個原因,初始資料集從17個字段變成了最終的16個字段。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-11 分别執行資料預處理的3個條件,檢視觸發條件

2.2.2資料變換

對于連續型變量,如果該變量的取值的個數小于設定門檻值(預設是5),那麼将該變量轉化為有序型分類變量。對于有序型分類變量(數值類型),如果該變量的類型的個數大于設定門檻值(預設是10),那麼将該變量轉化為連續型變量。

1. 連續型變量的變換

對于連續型變量,為了保證資料中不同的字段保持同樣的尺度(這樣既可以防止某些字段在模組化過程中發生溢出,又可以保證每一個字段在模型中的權重相同),我們需要進行一些尺度變換的操作。分箱(binning,又稱離散化)是将連續型資料轉換為分類型變量,轉換的目的是提高變量的解釋性。

(1)尺度變化

為了使資料尺度一緻,可以對原始資料進行中心化、标準化、歸一化、Z-score變換、最小-最大值變換等。在表2-7中我們列舉了典型的資料轉換方法。

(2)分箱變換

對于一些連續型變量,從業務和資料特點上考慮,需要将連續型資料變為分類型資料,可以進行binning操作,常用的分箱變換方法如表2-8所示。

分箱技術的方法有很多種,比較常用的有下面的3種方式:

  • 等寬度間隔(Equal Width Intervals);
  • 基于已掃描個案的等百分位(Equal Percentiles Based on Scanned Cases);
  • 基于已掃描個案的平均值和標明标準差處的分割點(Cutpoints at Mean and Selected Standard Deviations Based on Scanned Cases)。

表2-7 典型的資料轉化方法

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

表2-8 分箱變換方法

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

從中位數直接将連續型數值劃分為兩個分組是比較常見的等寬度間隔的分箱做法。在偏峰的情況下,是可以劃分出明顯的高低兩個分組的,如圖2-12所示。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-12 采用中位數對連續型變量進行劃分

在沒有具體業務要求的情況下,上述三種方式都是合适的。但是我們在一個關于銀行的實際案例中,遇到這樣的一種情況:當對某個連續值進行分箱時,遇到的問題不僅僅是等寬或者等值的問題,真正的問題是怎麼樣的分箱對業務具有指導意義。不同的分箱,每個值的背後都是一批客戶,而在銀行的營銷力量有限的情況下,必然需要對不同的群體采取不同的政策。最為簡單的政策就是,對高價值的客戶采用費用較高但是可能帶來高回報的營銷活動,而對低價值的客戶,則可以采用費用較低的營銷。并且往往低價值的客戶是占多數的,其分布大多如圖2-13所示:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-13 很多情況下,低價值的客戶總是占多數

針對如圖2-13所示的分布,等寬分布、等值分布都比較難以确定“什麼樣的門檻值可以區分高價值客戶、低價值客戶”。是以,我們采用了經典的“80%~20%”的方法,即80%的客戶可能會貢獻較少的價值,而20%的人往往會貢獻較多的價值。圖2-14代表了一種典型的分箱政策。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-14 按照80%-20%的劃分能夠将高價值的客戶顯著區分出來

我們采用2.1.4節中的資料集來展現分箱的執行個體。在銀行的營銷活動中,營銷産品的設計往往關注客戶的年齡。不考慮客戶的職業等其他的特征,一般青壯年客戶有成家立業的金融需求,中老年的客戶則傾向于投資、存款等。是以,年齡階段的劃分(分箱)可以作為一個衍生字段。

為此,我們用SciKit-learn中的KBinsDiscretizer來生成衍生字段。KBinsDiscretizer提供了3種分箱政策:

  • uniform:每一個分箱都有相同的寬度;
  • quantile:每一個分箱都有相同的資料個數;
  • kmeans:分箱中的每個值都具有與kmeans聚類相同的最近中心。

利用KBinsDiscretizer對2.1.4節中的資料進行年齡變量的分箱操作,使用上述3種分箱政策生成3個衍生字段:“年齡分箱_uniform”“年齡分箱_quantile”和“年齡分箱_kmeans”,分箱時選擇的分箱數是6,然後對原始變量“年齡”,以及3個衍生字段再次進行資料探查,檢視資料分布的變化。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

上述代碼生成3個分箱的結果,通過檢視前5行資料(如表2-9所示)可以看出3個分箱的決策是各不相同的,如年齡58,按照uniform政策,則屬于編号是“3.0”的分箱區間;按照quantile政策,則屬于編号是“5.0”的分箱區間;按照kmeans政策,則屬于編号是“3.0”的分箱區間。

表2-9 3種分箱政策的結果示例

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

我們還可以通過檢視分箱前後的柱狀圖來觀察和了解各個分箱結果的不同。圖2-15所示是源資料的分布以及3種分箱政策的結果展示。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-15 源資料分布及3種分箱政策的結果示例

從年齡變量的分布來看,該銀行的客戶主要是30歲到40歲的青壯年,小于30歲的客戶很少,而年齡超過60歲的客戶更少,這個結果間接印證了前面所進行的資料探索的結果——60歲是一個财富的分割點。使用uniform分箱政策生成的衍生字段因為每個分箱的寬度相同,是以基本上保留了年齡變量的分布特征。

而使用quantile分箱政策生成的衍生字段卻完全改變了資料分布的情況。因為這個分箱政策是使每一個分箱中包含數量基本相同的資料,是以其分布得也非常均勻。我們通過KBinsDiscretizer的bin_edges_方法檢視使用quantile分箱政策進行的分箱操作,其分箱邊界為18~31、31~35、35~39、39~45、45~52和52~95。其在年齡分布非常集中的區間,分箱非常密集。其中31~45歲這個區間就包含了3個分箱。

使用kmeans分箱政策相當于對年齡變量進行了6個聚類的kmeans聚類操作。因為是基于kmeans算法,取值更接近的資料會被劃分在一個聚類裡,是以kmeans分箱政策也基本上保留了年齡變量的分布特征,其分箱邊界也基本上接近于uniform的分箱邊界。

2. 分類型變量的變換

在很多的機器學習的算法實作中,在調用算法之前,會首先對分類型資料做一些變換。這些變換會提高模型的穩定性。比較常見的變換如表2-10所示:

表2-10 分類型變量的變換

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

對于分類型變量,為了在模型中展現出分類型變量自身的特點,比如每個類型隻是一個标記,無大小之說,每個類型都可以作為一個獨立的參數參與模型建構,這樣可以對分類型變量做數值編碼,變換為虛拟dummy變量或者成為标記indicator變量。

對于某些分類型變量,其類型是名義nominal變量,為了提高模型的穩定性,需要對分類型變量的各個類型按照其資料量的多少重新排序。這樣原來的類型标記被重新編碼和排序。對于某些資料集,其含有一系列相關的多個分類型字段,各個字段存在業務邏輯上的關系,并且各個字段的取值也存在關聯。這樣,我們就可以将這些字段合并為一個字段。這樣做既可以減少模型的次元和複雜度,也可以消除各個自變量之間的相關性,保持彼此的獨立性,提高模型的品質。

(1)類别的數值編碼

當訓練模型時,資料集中的字段包含符号字段(或者稱為分類字段)時,而且該字段也需要被用來參與模組化,并且該模型算法需要使用所有記錄的數值來進行算法計算。這種情況下就對符号字段提出了挑戰,那麼如何用數值來表示該符号字段的各個分類呢?

一般的做法是将該符号字段編碼為一組數值字段,該組數值字段的個數等于該符号字段的分類個數,一個分類對應一個數值字段。對于該符号字段的每一個取值,對應于該值的那個數值字段的值均被設定為1,其他數值字段的值均被設定為0。這組數值字段(或者稱為衍生字段)被稱為indicator(訓示)字段,或者dummy(虛拟)字段。

如表2-11所示,對于下列3條資料,X是一個符号字段,取值為A、B、C,那麼它可以被轉化為衍生字段X1、X2、X3。

表2-11 分類型變量的變換為dummy字段

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

從表2-11中可以看出,符号字段的分類A被編碼為(1 0 0),B被編碼為(0 1 0),C被編碼為(0 0 1)。

按照此方式編碼後,這些符号字段被轉換為一系列取值為0和1的稀疏矩陣。在模組化的計算過程中,所要估計的模型參數的個數就會增加,但在實際的運算中,隻有取值為1的變量需要參與計算,其他取值為0的變量可以忽略,這樣可以極大地節省記憶體空間并提高計算效率。當模型參數被估計出來後,模組化過程完成時,我們可以從模型結果中得到該字元變量的各個分類變量對應的模型參數和重要性。

在算法的具體計算過程中,經常會用到“類别的數值編碼”的方式,将類别型的字段轉換為dummy字段。下面的例子就說明了這個過程。

我們采用一個員工個人資訊的資料集,包括字段:id(員工編号),gender(性别),bdate(出生日期),educ(教育程度),jobcat(工作類别),salary(工資),salbegin(起始工資),jobtime(工作時間),prevexp(先前經驗),minority(民族)。該資料集如表2-12所示。

表2-12 員工個人資訊的示例

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

我們根據educ,jobcat,salary,salbegin字段來預測gender字段,此處選取Binomial Logistic Regression二項邏輯回歸模型,使用GLM模型來完成。雖然該模型并不具有實際意義,但是可以說明符号型字段在建立模型中起到的作用。

educ為取值8、12、14、15、16、17、18、19、20、21的數值型分類變量,但其是有順序的,被稱為ordinal有序分類變量;jobcat為取值Clerical、Custodial和Manager的三值字元型分類變量,是無順序的,被稱為nomial名義分類變量;salary和salbegin為連續型變量;gender為取值f和m的二值字元型分類變量,被稱為flag标記變量或者nomial名義分類變量。對于建立的模型來說,educ、jobcat、salary、salbegin作為預測變量,gender作為目标變量。一般在回歸模型中,educ和jobcat被稱為factor因子變量,salary和salbegin被稱為covariates協變量。

我們采用Python 類庫StatsModels建立二項回歸模型。由于educ的值是數字,是以需要使用C操作符定義其為分類型變量 ;因為jobcat的值是文字,模型會自動識别其為分類型變量。通過使用StatsModels建立模型,所使用的相關Python腳本如下:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

上述代碼運作得到的結果如下:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

從結果中的Coefficients的個數可以看出,educ和jobcat分類型變量被轉化成了dummy虛拟變量,分别隻顯示了分類個數減1個系數,說明未被顯示的那一個系數成了備援。對于分類型字段來說,一般其中的一個分類都會被設定為備援,這個特性在其他的機器學習模型算法中都适用。我們用jobcat作為例子,其包含Custodial、Manager和Clerical,使用兩個虛拟變量jobcat[T.Custodial]和jobcat[T.Manager]來表示這3個可能的取值。如果jobcat[T.Custodial]等于1,表示jobcat的取值是Custodial;如果jobcat[T. Manager]等于1,表示jobcat的取值是Manager;如果jobcat[T.Custodial]和jobcat[T. Manager]都不等于1,表示jobcat既不是Custodial,又不是Manager,則jobcat為Clerical。進而從P-value顯著性名額可以看出salbegin對gender的影響最大,起決定性作用,說明起始工資對性别的影響最大。

利用殘差分析來驗證該模型是否适合該資料。因為殘差等于變量真實值和預測值的差,線性模型越準确,殘差的分布就越接近于0,是以通過殘差分析來觀察殘差的分布是否主要分散在0的周圍,就可以判斷該線性模型是否适合該資料。

從圖2-16所示的殘差的分布來看,殘差點比較均勻地分布在水準帶狀區域中,大多數點集中在0點,0點兩邊的點分布比較分散,說明這個線性回歸模型比較适合該資料。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理
帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-16 模型的殘差分布

(2)關聯字段的合并

稀疏矩陣是資料分析時一種常見的資料形式。所謂稀疏矩陣是指一個矩陣(二維或多元)中,非零元素的值占很小的一部分,絕大多數元素取值為零,并且非零元素的分布一般沒有什麼規律。筆者在做一個實際的項目時,遇到一個稀疏矩陣的問題:二維表中的每一列代表客戶持有的産品狀态,1代表持有,0代表未持有。要找出客戶持有産品的規律,就是将稀疏矩陣中每行的取值轉化為一個字元串,即字元串“0000000000”代表十列資料取值都為零的情況。通過這種方式,其實是用新的一列代表了原來10列的資料資訊,可以很友善地看出客戶持有産品的狀态。圖2-17所示就是一個典型的例子。

3. 分布變換

在大多數模型中,都要求因變量服從和接近正态分布,正态分布是統計模組化的基石,是許多模型的理論基礎。本節将描述如何識别資料是否是正态分布,如果針對不同的資料類型采用其适用的變換方法,将其變換為正态分布。這些變換包括反正弦和反餘弦變換、平方根變換、對數變換、Box-Cox變換等。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-17 由一個衍生字段代表原來10列資料的資訊

(1)反正弦和反餘弦變換

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

其中,p為正整數,這種變換适用于百分比形式的資料,通過把分布曲線的尾部拉長、中部壓縮,使得弱負偏和弱正偏的不對稱分布接近于正态分布。

(2)平方根變換

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

其中,c為常數,這種變換使正偏資料接近正态分布,常用于服從泊松分布的離散型資料。

(3)對數變換

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

其中,c為常數,這種變換常用于服從對數正态分布的資料,對于正偏偏度很大的資料也很适用。由于這種分布是偏斜的,很可能出現零值,往往需要加上一個常數c。如果使c取值為0,那麼要求因變量的所有取值都為非負數。

(4)Box-Cox變換

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

其中,c為常數,為了確定X-c大于0。Box-Cox變換可以被看作一個變換族,該變換族中有一個待定變換參數,取不同的值,就是不同的變換。當參數為0時是對數變換,參數為1/2時是平方根變換,參數為-1時是倒數變換。變換後的因變量服從正态分布。由此可以看出Box-Cox變換适用範圍很廣,其最大的優勢在于将尋找變換的問題轉化為一個估計參數的過程,通過極大似然估計來估計最優的參數。

對資料分布的挑剔,并不是所有的算法都是一緻的。廣義線性模型支援衆多的分布類型,比如伽馬分布、泊松分布、逆高斯分布、二項分布,多項分布等。線性回歸算法是基于變量都是正态分布這樣的假設來設計算法的,是以資料分布的改善能顯著提高模型的精準度。

為了說明分布的變化如何改善模型效果,我們采用表2-12所示的員工個人資訊資料集,通過salary、prevexp、jobtime、jobcat、gender、educ、minority等字段來預測salbegin

字段。

第一步,我們檢視因變量的分布,如圖2-18所示。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-18 因變量的分布

從圖2-18中可以看出,因變量大緻服從對數正态分布,且資料的取值集中于20000附近,其他區域幾乎沒有取值,說明資料的分布比較偏。

我們首先不對因變量進行轉換,而是直接進行回歸分析,代碼如下。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

得到的結果如下:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

從Coefficients的結果可以看出,除了minority和gender的Male變量外,其他自變量都是顯著的,對模型的估計貢獻顯著;然後從R-squared的結果可以看出,模型的拟合程度為0.812,修正後為0.806;最後從F檢驗的結果可以看出,模型整體是顯著的。

如果對因變量做對數轉換,會顯著改變其分布,即從一個類似指數分布的狀況改變為接近正态分布的狀态,如圖2-19所示。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-19 因變量做對數轉變後的分布

對因變量做指數變化後再模組化,會發生什麼樣的變化?對數變化的效果到底如何?我們通過模組化過程就可以看到,代碼如下。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

上述代碼的執行結果如下:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

從Coefficients的結果可以看出,除了jobcat的Custodial變量外,其他自變量都是顯著的,對模型的估計貢獻顯著;然後從R-squared的結果可以看出,模型的拟合程度為0.852,修正後為0.847;最後從F檢驗的結果可以看出,模型整體是顯著的。

比較兩個模型的結果,從中不難看出,模型的拟合度提高了。這說明變換後的資料能拟合出品質更高的模型,這得益于變換後的因變量更能服從正态分布。

2.2.3資料歸約

資料歸約(Data Reduction)是指在了解資料分析任務和資料本身内容的基礎上,尋找依賴于發現目标的資料的有用特征,以縮減資料規模,進而在盡可能保持資料原貌的前提下,最大限度地精簡資料量。資料歸約主要從兩個途徑來實作:

1. 屬性選擇

屬性選擇就是通過有意而為之的動作,從大量的屬性中篩選出與目标值(針對有監督的模型)或業務目标(針對無監督的模型)相關的屬性,并将大量的不相關的資料擯棄。

這個過程既是一個主觀判斷的過程,也是一個需要通過技術手段計算相關性來選取的過程。主觀判斷展現了業務了解、業務經驗和資料分析的經驗。我們将在第6章專門讨論名額的選取過程。

2. 資料采樣

從總體(Population/Universe)中确定抽樣範圍(Sampling Frame)并進行抽樣,通過對樣本的研究來估計或反映總體的特征,是經典的資料分析過程。

通過樣本來估計總體特征的統計分析方法,或者通過對曆史資料進行抽樣并經過模型訓練學習模式的資料挖掘,都是基于圖2-20所示的思路進行的。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-20 資料采樣的一般過程

在大資料時代,我們可以不需要通過樣本來估計整體的特征,因為新的計算平台已經可以支援對海量資料進行快速處理。對均值不需要估計,直接計算即可。

但是,對于如預測、聚類分析等資料挖掘的場景,在大資料時代,采樣仍然是必需的。在很多情況下,并不是樣本越大(不論是列還是行)就意味着模型越好。筆者認為,經過深入的業務了解和資料了解後,針對具體的模組化目标進行有效的衍生名額的加工才是最主要的。作者不否認很多時髦的算法能從數千個甚至數萬個名額中快速計算并篩選出有效名額,如利用Lasso-logit算法在大資料平台上的實作,可以實作對近萬個名額在數分鐘内的快速篩選。這确實給名額的選取提供了極大的便利,貌似隻要會将資料抽取出來并調用這些工具,大資料能很“智能”地做出計算和選擇。其實,在資料挖掘的過程中,最為主要的是對業務的了解和衍生名額的加工。衍生名額往往能起到事半功倍的效果,它展現了模組化的技巧,也展現了對問題的了解程度。

總的來說,抽樣分為兩種大的類型:典型抽樣(Representative Samples)又稱機率抽樣(Probability Samples),抽樣時沒有人的主觀因素加入,每個個體都具有一定的被抽中的機率;非典型抽樣(Non-representative Samples)又稱非機率抽樣(Nonprobability Samples),抽樣時按照抽樣者的主觀标準抽取樣本,每個個體被抽中的機會不是來自本身的機會,而是完全來自抽樣者的意願。一個比較完整的抽樣種類的圖表如圖2-21所示。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-21 典型的采樣類型

機率抽樣适用的場景是采用樣本資料來展現整體的特征,包括以下幾種:

  • 簡單随機抽樣(Simple Random Sampling)。保證大小為n的每個可能的樣本都有相同的被抽中的機率。例如,按照“抽簽法”“随機表”法抽取資料對象。其優點是:随機度高,在特質較均一的總體中,樣本具有很高的總體代表度。
  • 系統随機抽樣(Systematic Random Sampling)。将總體中的各單元先按一定順序排列并編号,然後按照不一定的規則抽樣。其中最常采用的是等距離抽樣,即根據總體機關數和樣本機關計算出抽樣距離(相同的間隔),然後按相同的距離或間隔抽選樣本機關。例如,從1000個電話号碼中抽取10個通路号碼,間距為100,确定起點後每100個号碼抽一個通路号碼。其優點是:操作簡便,且與簡單随機抽樣相比,在一定條件下更能展現總體的特征。
  • 分層随機抽樣(Stratified Random Sampling)。把調查總體分為同質的、互不交叉的層(或類型),然後在各層(或類型)中獨立抽取樣本。例如,調查零售店時,按照其規模大小或庫存額大小進行分層,然後在每層中按簡單随機方法抽取大型零售店若幹、中型零售店若幹、小型零售店若幹;調查城市時,按城市總人口或工業生産額分出超大型城市、中型城市、小型城市等,再抽出具體的各類型城市若幹。從另一個角度來說,分層抽樣就是在抽樣之前引入一些次元,對總量的群體進行分層或分類,在此基礎上再次進行抽樣。
  • 整群抽樣(Cluster Sampling)。先将調查總體分為群,然後從中抽取群,對被抽中群的全部單元進行調查。例如,在人口普查時,可以按照地區将人口分為幾個群體,然後選取某個群體,研究該群體内所有個體的特征,據此來推斷該地區的人口特征。

非機率抽樣都是按照抽樣者的意願來進行的,典型的方式有以下幾種:

  • 友善抽樣(Convenience Sampling)。根據調查者友善選取的樣本,以無目标、随意的方式進行。例如,街頭攔截通路(看到誰就通路誰);個别入戶項目(誰開門就通路誰)。
  • 判斷抽樣(Judgment Sampling)。由專家判斷而有目的地抽取他認為“有代表性的樣本”。例如,社會學家研究某國家的一般家庭情況時,常以專家判斷方法挑選“中型城鎮”進行;在探索性研究中,如抽取深度通路的樣本時,可以使用這種方法。
  • 配額抽樣(Quota Sampling)。先将總體元素按某些控制的名額或特性分類,然後按友善抽樣或判斷抽樣選取樣本元素。 配額抽樣相當于包括兩個階段的加限制的判斷抽樣:在第一階段需要确定總體中的特性分布(控制特征),通常,樣本中具備這些控制特征的元素的比例與總體中有這些特征的元素的比例是相同的,通過第一步的配額,保證了在這些特征上樣本的組成與總體的組成是一緻的。在第二階段,按照配額來控制樣本的抽取工作,要求所選出的元素要适合所控制的特性。

在日常模組化過程中,比較常用的抽樣方法是簡單随機抽樣。在抽樣結束後,可以通過一些簡單、易用的方式來判斷樣本的某一特征是否展現了總體的特征。

圖2-22中就是抽取了兩個樣本,并且比較了某個關鍵名額在兩個樣本、全集上的分布,據此來判斷三者之間的差别。從圖中可以看出,三者之間幾乎沒有多少差别,即可以認定樣本可以用來代表全集的特征。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-22 兩個樣本、總體的關鍵名額的分布

2.3衍生名額的加工

在探索了資料的基本統計資訊後,我們掌握了資料的分布特征等資訊;接着又對資料做了預處理,過濾了缺失值和離群值,轉變和處理了資料類型,提高了資料的品質。本節進一步對資料從字段上進行加工,從尺度、分布上進行變換,滿足不同的業務和模組化需要,變換後的字段更能滿足模型需要,由此引出了本節的衍生名額的加工。

2.3.1衍生名額概述

所謂衍生名額(Derived Field)是指利用給定資料集中的字段,通過一些計算而加工産生一些新的名額。建立衍生名額是資料分析過程中最具創意的部分之一,是資料分析者必須具備的基本技能之一。衍生名額将人們的見解融入模組化的過程中,使得模型的結論充分展現了業務、市場的重要特征。精心挑選的衍生名額能增強模型的可了解性和解釋能力。

一般來說,對資料和變量進行加工和轉換的主要目的是統一變量的資料尺度,使變量盡可能為正态分布,使變量之間的非線性關系轉換為線性關系,使變量便于用簡單自然的方式表示,幫助了解資料的特征,等等。不同的變換方法試圖達到不同的目的,不同的模型對資料和變量的要求不同。譬如大多數多元統計方法要求變量的尺度一緻,要求因變量服從正态分布。變量的變換一定要根據模型和業務的需要合理地進行。

衍生名額的建立主要展現了資料挖掘者對業務和目标的了解程度,展現了其解決問題的能力、對資料的敏感度和經驗等。是以,衍生名額的建立在更多的時候是針對分析目标将既有名額進行加工。比如,銀行的資料倉庫針對每月的資料都進行了彙總,但是如何知道客戶近期的活躍程度呢?一個簡單的衍生名額就是“最近6個月平均每月的交易次數”,這就是一個很好的名額。這個名額的加工方式就是讀取最近6個月的每月交易次數(很可能每個月都會對應于一張表),然後求一個平均值即可。

在進行資料分析的過程中,可以采用一個做法:将各個字段的資料都看作不斷“說話”的部件。當面對很多部件時,就好比處在了一個嘈雜的環境中,資料分析者應當用一個平和的心态,通過檢視資料分布、檢視與目标變量的相關關系、加工衍生字段等方式,認真挑選這些字段。筆者一直認為,不論字段的資料品質到底如何,它們都是在不斷地向我們“訴說”着什麼,有些在訴說客戶的價值,有些在訴說客戶的行為,而資料分析者需要善于傾聽和選擇。筆者非常認可《資料挖掘技術》 中提到的衍生名額的加工方法介紹。在實際的項目中,這些方法非常實用。是以在接下來的小節中,我們參照了該書中的大綱安排,但内容來自筆者的實際項目總結。

2.3.2将數值轉化為百分位數

數值展現被描述對象的某個次元的名額大小,百分比則展現程度。在有關銀行的項目中,資料倉庫中的大多名額都是在如實反映客戶某名額的大小,如存款餘額、理财餘額等。這些名額在忠實地描述客觀事實,利用它們可以輕易加工出業務含義明确的衍生名額,如客戶的理财偏好程度:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

理财偏好程度=同一時間視窗中資産餘額均值(存款餘額 + 理财餘額 + …)×100%

該百分比越大,表明客戶對理财的偏好程度越高。該衍生名額可以直接通過離散化對客戶群體進行劃分,也可以作為輸入變量去建構各種模型(如預測、聚類等)。像這樣的名額加工方式,在實際項目中可以靈活采用。

2.3.3把類别變量替換為數值

大多數算法在實際運算的過程中,都需要将分類型變量首先轉換為數值型變量,然後才能進行計算。在本章的2.2.2小節中,也介紹了将分類型變量轉換為數值型變量的方法:轉為dummy虛拟變量,然後才參與模型計算。這種方法可以在調用算法之前作為資料預處理的步驟來進行,也可以直接交給算法去處理(算法的實作過程已經包含了該過程)。

但是從另一個方面來說,類别變量具有很重要的業務含義。比如,客戶資産的類别:富裕客戶,就是一個非常有實際業務指導意義的名額。有時,為了将連續型變量轉換為分類型變量,這牽扯到分箱時的門檻值劃分,往往需要從資料分布和業務指導意義兩個方面同時考慮。所謂富裕客戶,一定是某些數值型變量達到一定的門檻值,才會有這個标簽。

在構模組化型之前,最好不要将一些數值型變量轉化為分類型變量。這會很大程度上傷害模型的性能。圖2-23所示就是一個用SAS決策樹算法生成的模型結果。如果在模組化之前,我們生硬地将字段“Has_Bad_Payment_Re…”離散化,其結果在很大的程度上不會是以0.5作為門檻值,那麼該字段就不會那麼重要(決策樹的第二級節點),它的重要性很可能就會被别的字段所代替而導緻我們得不到非常有用的業務規則,模型的性能也會顯著下降。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-23 一個SAS決策樹算法生成的模型結果

從實際業務指導的角度來看,分類型變量的易用性遠遠大于數值型變量。從模型算法的角度來看,采用數值型的名額會顯著提高模型的性能。針對“富裕客戶”這樣的名額值,在模組化時為模型性能考慮,最好是将其代表的數值直接使用而擯棄分類型變量。

2.3.4多變量組合

多變量組合去計算出一個新的名額,是非常常用的衍生名額的計算方式,如針對銀行客戶的信用評級指數:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

其中,字段1至字段4是一些既有的字段;P則是通過一系列的計算和分析,最終确定這些字段的組合方式得出的綜合名額。在筆者最近進行的一個資料分析項目中,我們首先使用回歸算法确定目标值與自變量之間的線性關系,這個關系展現了“什麼樣的投入會導緻什麼樣的結果”:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

上述公式其實也是線性回歸算法通過訓練而得到的“模式(Pattern)”。根據這個公式,将其中一個自變量作為因變量,而原來的因變量變為自變量,來反推“當要達到預期的某個值時,需要多少投入”:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

這是一個典型的goal seek過程,隻是“需要多少投入”這樣的結果完全可以作為一個新的衍生字段被計算出來。

在金融行業非常關注客戶的“未來價值”,不同的價值給銀行帶來的收益也會大不相同。未來價值由很多方面來決定,如客戶所從事的行業、教育程度、目前的資産、年齡、地區、家庭的經濟狀況等。這些資料很多是銀行所不具備的,但是其可以借助一個比較簡單的方式來估算:

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

這是一個沒有嚴格數學含義的衍生名額,并且隻能處理年齡在[25,60]區間以内的客戶。但是該名額的業務含義卻比較清晰:未來價值與客戶目前年齡和目前的資産餘額有很大的關系,該算法得到的結果值越大,表現出客戶的未來價值越大;該值越小,客戶的未來價值越小。

2.3.5從時間序列中提取特征

時間序列資料是指在不同時間點上收集到的資料,這類資料反映了某一事物、現象等随時間的變化狀态或程度。裝置的監控資料、溫度随時間的變化、股票大盤随時間的波動等都是典型的時間序列資料。針對時間序列資料,有很多的專用算法可以用來做分析,如差分自回歸移動平均模型(ARIMA)。

在應用非專門處理時間序列的算法時,有時需要從時間序列資料中提取一些典型有用的資料作為一個變量輸入。比如,在預測性維護的場景中,裝置是否需要維護或是否會出現故障的模型訓練,需要将裝置監控的資料做一些轉換,作為預測模型的預測變量。如圖2-24所示,可以将出現故障前兆的異常資料進行計數,或者通過計算方差的大小來展現名額的變化幅度,作為展現裝置狀态的典型名額來預測目标變量的取值。

帶你讀《增強型分析:AI驅動的資料分析、 業務決策與案例實踐》之二:大資料探索及預處理大資料探索及預處理

圖2-24 監控資訊中包含故障出現的前兆