余芳 曹布陽(yáng)
摘要:無(wú)論是學(xué)術(shù)上還是工程實(shí)踐中,數(shù)據(jù)預(yù)處理是整個(gè)數(shù)據(jù)挖掘中最基礎(chǔ)也是最費(fèi)時(shí)的一個(gè)環(huán)節(jié),其中數(shù)據(jù)類(lèi)型的轉(zhuǎn)換也是重要一環(huán)。聚類(lèi)算法中,旨在將數(shù)據(jù)集劃分為有意義的簇,簇內(nèi)高內(nèi)聚,簇間低耦合,往往是抽象為樣本之間的距離來(lái)聚類(lèi),因此許多聚類(lèi)算法都要求樣本集中變量必須是數(shù)值型;分類(lèi)算法中,雖然隨機(jī)森林、神經(jīng)網(wǎng)絡(luò)等算法對(duì)變量類(lèi)型的要求并不嚴(yán)苛,但是在經(jīng)典的邏輯回歸算法中,仍需要對(duì)數(shù)據(jù)進(jìn)行數(shù)值化的預(yù)處理。該文介紹了一種基于信息論,對(duì)樣本變量中類(lèi)別型變量(categorical variables)進(jìn)行數(shù)值化處理的方法,分別在邏輯回歸和支持向量機(jī)兩種機(jī)器學(xué)習(xí)算法中,進(jìn)行了幾組實(shí)驗(yàn),對(duì)比實(shí)驗(yàn)結(jié)果,發(fā)現(xiàn)此方法在性能上、應(yīng)用上都很有優(yōu)勢(shì)。
關(guān)鍵詞:信息熵;虛擬變量;邏輯回歸;支持向量機(jī)
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)36-0193-03
近年來(lái),隨著機(jī)器學(xué)習(xí)和人工智能的發(fā)展,大數(shù)據(jù)在各領(lǐng)域都取得了很多成績(jī)。通常,原始數(shù)據(jù)必須加以處理才能適合于分析。原始數(shù)據(jù)集中往往既有連續(xù)型變量(continuous variables),又包含類(lèi)別變量。此時(shí),通常要對(duì)數(shù)據(jù)進(jìn)行數(shù)值化處理。
當(dāng)前,常用是使用虛擬變量(dummy variables)來(lái)處理這類(lèi)問(wèn)題。虛擬變量經(jīng)常取值為0,1,-1,但這些取值并不代表數(shù)量的大小,僅僅表示不同的類(lèi)別[1]。雖然引入虛擬變量對(duì)問(wèn)題描述更簡(jiǎn)明,但是會(huì)使模型變得更復(fù)雜。而且如果數(shù)據(jù)集中這種類(lèi)別變量過(guò)多或是變量的分類(lèi)過(guò)多,這就會(huì)造成方程中有一大堆變量,造成所擬合模型的精度大大下降,實(shí)際上,有時(shí)候基于虛擬變量所構(gòu)建的模型并沒(méi)有多大意義。所以當(dāng)數(shù)據(jù)集量級(jí)較小時(shí),虛擬變量的效果很好,但是當(dāng)數(shù)據(jù)集較大時(shí),虛擬變量的效果并不總是很好。
另外,受到信用評(píng)分卡建模的啟發(fā),在二分類(lèi)問(wèn)題中,經(jīng)常先對(duì)類(lèi)別變量進(jìn)行WOE編碼[2]。但是WOE編碼僅適用于二分類(lèi)問(wèn)題,多分類(lèi)問(wèn)題并不適用。
本文介紹了一種基于信息熵[3]的數(shù)值化方法,不但可以建立分類(lèi)變量與數(shù)值的一一對(duì)應(yīng),而且適用于多分類(lèi)問(wèn)題,在實(shí)驗(yàn)和實(shí)際應(yīng)用中,表現(xiàn)都很好。
1 分類(lèi)變量的數(shù)值化方法
1.1 虛擬變量
在多重回歸和邏輯回歸模型中,通常將分類(lèi)變量數(shù)值化的方法是虛擬變量化。引入虛擬變量,可以將不能夠定量處理的變量數(shù)值化,如職業(yè)、性別對(duì)收入的影響,戰(zhàn)爭(zhēng)、自然災(zāi)害對(duì)GDP的影響等。
虛擬變量經(jīng)常取值為0,-1,1,但這些取值并不代表數(shù)量的大小,僅僅表示不同的類(lèi)別。定義虛擬變量時(shí),如果變量有k個(gè)類(lèi)別,需定義k-1個(gè)虛擬變量來(lái)表示這些類(lèi)別。對(duì)于一個(gè)有k個(gè)類(lèi)別的變量,即在此分類(lèi)變量上,有k種取值,此時(shí),引入k-1個(gè)虛擬變量[X1,X2,…,Xk-1],取值如下:
只引入n-1個(gè)變量而不是n個(gè)變量是由分類(lèi)變量的“窮舉”和“互斥”原則決定的。知道任意n-1個(gè)變量的值就一定可以推出第n個(gè)變量的值,而且這樣做降低了模型的共線(xiàn)性。上表中,第一行數(shù)值表示,樣本在此變量上的取值為[X1],第二行數(shù)值表示,樣本在此變量上的取值為[X2],以此類(lèi)推。
1.2 WOE編碼
WOE編碼的原理:WOE的全稱(chēng)是“Weight of Evidence”,即證據(jù)權(quán)重。WOE是對(duì)原始自變量的一種編碼形式,在信用評(píng)分卡建模中首次被使用,后來(lái)經(jīng)常用于二分類(lèi)建模中。
要對(duì)一個(gè)變量進(jìn)行WOE編碼,首先需要把這個(gè)變量進(jìn)行分組處理(也叫離散化、分箱等)。分組后,對(duì)于第i組,WOE的計(jì)算公式如下:
[WOEi=lnpyipni=ln (#yi/#yT#ni/#nT)=ln (#yi/#ni#yT/#nT)]
其中,[pyi]是這個(gè)組中響應(yīng)客戶(hù)(風(fēng)險(xiǎn)模型中,對(duì)應(yīng)的是違約客戶(hù),總之,指的是模型中預(yù)測(cè)變量取值為“是”或者說(shuō)1的個(gè)體)占所有樣本中所有響應(yīng)客戶(hù)的比例,[pni]是這個(gè)組中未響應(yīng)客戶(hù)占樣本中所有未響應(yīng)客戶(hù)的比例,[#yi]是這個(gè)組中響應(yīng)客戶(hù)的數(shù)量,[#ni]是這個(gè)組中未響應(yīng)客戶(hù)的數(shù)量,[#yT]是樣本中所有響應(yīng)客戶(hù)的數(shù)量,[#nT]是樣本中所有未響應(yīng)客戶(hù)的數(shù)量。
但是WOE在多分類(lèi)時(shí),不能直接求解,要用one to all 或one to one的方法,組合求解。
1.3 基于信息熵的分類(lèi)變量數(shù)值化方法介紹
1.3.1 信息論簡(jiǎn)述
人們常常說(shuō)信息很多,或者信息較少,但卻很難說(shuō)清楚信息到底有多少。比如一本五十萬(wàn)字的中文書(shū)到底有多少信息量。直到1948年,香農(nóng)提出了“信息熵”的概念,才解決了對(duì)信息的量化度量問(wèn)題。信息熵這個(gè)詞是C.E.香農(nóng)從熱力學(xué)中借用過(guò)來(lái)的。熱力學(xué)中的熱熵是表示分子狀態(tài)混亂程度的物理量。香農(nóng)用信息熵的概念來(lái)描述信源的不確定度。
通常,一個(gè)信源發(fā)送出什么符號(hào)是不確定的,衡量它可以根據(jù)其出現(xiàn)的概率來(lái)度量。概率大,出現(xiàn)機(jī)會(huì)多,不確定性小;反之就大。
不確定性函數(shù)f是概率P的單調(diào)遞降函數(shù);兩個(gè)獨(dú)立符號(hào)所產(chǎn)生的不確定性應(yīng)等于各自不確定性之和,即[fP1,P2=f(P1)+f(P2)],這稱(chēng)為可加性。同時(shí)滿(mǎn)足這兩個(gè)條件的函數(shù)f是對(duì)數(shù)函數(shù),即
1.3.2 數(shù)值化方法
基于信息論的知識(shí),當(dāng)樣本集中有屬性為分類(lèi)變量時(shí),就可以用信息熵來(lái)將其數(shù)值化。
對(duì)于樣本容量為N的樣本集,假設(shè)類(lèi)別為k,記作[(y1,y2,…,yk)],自變量中[xi]為分類(lèi)變量,此分類(lèi)變量有j中取值,分別為[(a1,a2,…,aj)],在這k類(lèi)上的分布如下:
1.4 數(shù)值化實(shí)例
以下表中的西瓜數(shù)據(jù)集為例[4],該數(shù)據(jù)集包含17個(gè)訓(xùn)練樣本,其中正樣本8個(gè),負(fù)樣本9個(gè),在色澤上的分布詳情,色澤有青綠、烏黑、淺白三種取值。
虛擬變量的方法,變量“色澤”上有3中取值,可以用2個(gè)虛擬變量來(lái)表示,將原始數(shù)據(jù)集中色澤變量去除,再添加兩個(gè)新變量青綠、烏黑,(青綠=1,烏黑=0)表示色澤為青綠,(青綠=0,烏黑=1)表示色澤為烏黑,(青綠=0,烏黑=0)表示色澤為淺白。
2 對(duì)比實(shí)驗(yàn)
2.1 實(shí)驗(yàn)數(shù)據(jù)
該文中的對(duì)比實(shí)驗(yàn),使用了兩組數(shù)據(jù),分別是Adult數(shù)據(jù)集和Car Evaluation數(shù)據(jù)集,都是從UCI機(jī)器學(xué)習(xí)數(shù)據(jù)庫(kù)上下載而來(lái)的。
Adult數(shù)據(jù)集是從美國(guó)1994年人口普查數(shù)據(jù)庫(kù)抽取而來(lái)的,用來(lái)預(yù)測(cè)居民的年收入是否超過(guò)5萬(wàn)美元。目標(biāo)變量為年收入是否超過(guò)5萬(wàn)美元,屬性變量包含年齡,工種,學(xué)歷,職業(yè),種族等,總共14個(gè)屬性變量,其中7個(gè)為類(lèi)別變量。
Car Evaluation是一個(gè)關(guān)于汽車(chē)測(cè)評(píng)的數(shù)據(jù)集,目標(biāo)變量為汽車(chē)的測(cè)評(píng)(unacc, acc, good, vgood),屬性變量分別為買(mǎi)入價(jià),維護(hù)費(fèi),車(chē)門(mén)數(shù),可容納人數(shù),后備箱大小,安全性。
為了實(shí)驗(yàn)方便,實(shí)驗(yàn)過(guò)程中直接刪除有缺失值的樣本。使用交叉驗(yàn)證對(duì)數(shù)據(jù)進(jìn)行處理,訓(xùn)練集和測(cè)試集的比例為3:1。
2.2 實(shí)驗(yàn)過(guò)程
實(shí)驗(yàn)選取的是邏輯回歸模型和支持向量機(jī)模型。
邏輯回歸[5]邏輯回歸的模型 是一個(gè)非線(xiàn)性模型,sigmoid函數(shù),又稱(chēng)邏輯回歸函數(shù)。但是它本質(zhì)上又是一個(gè)線(xiàn)性回歸模型,因?yàn)槌igmoid映射函數(shù)關(guān)系,其他的步驟,算法都是線(xiàn)性回歸的??梢哉f(shuō),邏輯回歸,都是以線(xiàn)性回歸為理論支持的。
支持向量機(jī)[6]支持向量機(jī)(SVM)是90年代中期發(fā)展起來(lái)的基于統(tǒng)計(jì)學(xué)習(xí)理論的一種機(jī)器學(xué)習(xí)方法,通過(guò)尋求結(jié)構(gòu)化風(fēng)險(xiǎn)最小來(lái)提高學(xué)習(xí)機(jī)泛化能力,實(shí)現(xiàn)經(jīng)驗(yàn)風(fēng)險(xiǎn)和置信范圍的最小化,從而達(dá)到在統(tǒng)計(jì)樣本量較少的情況下,亦能獲得良好統(tǒng)計(jì)規(guī)律的目的。通俗來(lái)講,它是一種二類(lèi)分類(lèi)模型,其基本模型定義為特征空間上的間隔最大的線(xiàn)性分類(lèi)器,即支持向量機(jī)的學(xué)習(xí)策略便是間隔最大化,最終可轉(zhuǎn)化為一個(gè)凸二次規(guī)劃問(wèn)題的求解。
實(shí)驗(yàn)過(guò)程:
1) 選定數(shù)據(jù)集;
2) 將數(shù)據(jù)集劃分為測(cè)試集和訓(xùn)練集,測(cè)試集占33%,訓(xùn)練集占67%;
3) 分別用各種方法對(duì)訓(xùn)練集、測(cè)試集中的類(lèi)別變量進(jìn)行數(shù)值化;
4) 對(duì)訓(xùn)練集、測(cè)試集進(jìn)行歸一化處理;
5) 分別用相應(yīng)的機(jī)器學(xué)習(xí)算法對(duì)訓(xùn)練集進(jìn)行訓(xùn)練;
6) 訓(xùn)練后的算法對(duì)測(cè)試集進(jìn)行預(yù)測(cè);
7) 在測(cè)試集上觀測(cè)各項(xiàng)衡量指標(biāo)。
上述實(shí)驗(yàn)都是用python完成的,主要要到python中pandas和sklearn這兩個(gè)包。
2.3 實(shí)驗(yàn)結(jié)果
評(píng)價(jià)一個(gè)算法的好壞時(shí),通常會(huì)考慮查準(zhǔn)率(precision)和查全率(recall)。表1是兩個(gè)數(shù)據(jù)集的測(cè)試集上的結(jié)果。
表1中,用序數(shù)代替,是實(shí)驗(yàn)中為了對(duì)比任意數(shù)值化的結(jié)果,用1,2,3…對(duì)類(lèi)別變量賦值的結(jié)果。
3 結(jié)論與討論
信息熵?cái)?shù)值化的優(yōu)點(diǎn):
1) 較任意數(shù)值化而言,有其統(tǒng)計(jì)學(xué)上的理論依據(jù)。
2) 雖然在邏輯回歸中,其效果僅次于虛擬變量化后的結(jié)果,但是虛擬變量有其缺點(diǎn),如果屬性值上取值過(guò)多,虛擬變量后會(huì)產(chǎn)生過(guò)多的變量,會(huì)產(chǎn)生共線(xiàn)性;而且虛擬變量后的數(shù)據(jù)不能與其他屬性進(jìn)行求解相關(guān)系數(shù),但是信息熵?cái)?shù)值化可以。
3) 雖然當(dāng)前很多算法不要求變量的數(shù)據(jù)類(lèi)型,數(shù)值化未必需要,但是在特征選擇時(shí),可以數(shù)值化后,求變量之間的相關(guān)系數(shù),用來(lái)選擇變量。
4) 不生成新的變量,便于解釋。
參考文獻(xiàn):
[1] 李麗霞, 郜艷暉, 張瑛. 啞變量在統(tǒng)計(jì)分析中的應(yīng)用[J]. 數(shù)理醫(yī)藥學(xué)雜志, 2006, 19(1):51-53.
[2] 黎玉華. 信用評(píng)分卡模型的建立[J]. 科技信息, 2010, 37(13):48-49.
[3] Shannon C E,Weaver W,Wiener N. The mathematical theory of communication[J]. M.d.computing Computers in Medical Practice, 2001, 5: 3-55.
[4] 周志華. 機(jī)器學(xué)習(xí)[M]. 北京: 清華大學(xué)出版社, 2016.
[5] 李航. 統(tǒng)計(jì)學(xué)習(xí)方法[M]. 北京: 清華大學(xué)出版社, 2014.
[6] Bishop C M. Pattern recognition[J]. Machine Learning, 2006: 128.