特征工程
“巧婦難為無(wú)米之炊”层亿,在機(jī)器學(xué)習(xí)中,數(shù)據(jù)和特征便是“米”立美,而模型和算法則是“巧婦”洞慎。沒(méi)有充足的數(shù)據(jù)和合適的特征,再?gòu)?qiáng)大的模型也無(wú)法擬合出滿意的結(jié)果。因此,對(duì)于機(jī)器學(xué)習(xí)的問(wèn)題,常說(shuō)的一句話是數(shù)據(jù)和特征決定了結(jié)果的上限,而模型和算法則是在優(yōu)化過(guò)程中逐步接近這個(gè)上限。所以贾陷,特征的處理在整個(gè)機(jī)器學(xué)習(xí)過(guò)程中占有舉足輕重的地位,對(duì)特征的處理過(guò)程被稱為特征工程割岛。特征工程是對(duì)原始數(shù)據(jù)進(jìn)行一系列的工程處理剂买,將其提煉為特征,作為輸入工算法和模型使用。
特征工程又包含了Data PreProcessing(數(shù)據(jù)預(yù)處理)、Feature Extraction(特征提取)、Feature Selection(特征選擇)和Feature construction(特征構(gòu)造)等子問(wèn)題秀姐,而數(shù)據(jù)預(yù)處理又包括了數(shù)據(jù)清洗和特征預(yù)處理等子問(wèn)題。本文用作總結(jié)數(shù)據(jù)預(yù)處理的一系列方法。
1、無(wú)量綱化
(1)什么是無(wú)量綱化
為了消除數(shù)據(jù)特征之間的量綱影響,我們需要對(duì)特征進(jìn)行歸一化和標(biāo)準(zhǔn)化處理其徙,使得不同指標(biāo)之間具有可比性期犬。例如:分析一個(gè)人的身高和體重對(duì)健康的影響遣总,如果使用米和千克作為單位,那么身高和體重會(huì)處于不同的數(shù)值范圍內(nèi)柒昏,體重的數(shù)值在量上要遠(yuǎn)大于身高意系,而如果不對(duì)其做處理直接用的情況下分析結(jié)果顯然會(huì)更依賴于數(shù)值差別較大的體重特征弦疮。因此胎食,為了得到更為準(zhǔn)確的結(jié)果,就需要對(duì)特征進(jìn)行歸一化和標(biāo)準(zhǔn)化處理搜吧,使各項(xiàng)指標(biāo)處于同一數(shù)量級(jí),以便進(jìn)行分析汉规。
(2)無(wú)量綱化方法
無(wú)量綱化通常也被稱為歸一化或標(biāo)準(zhǔn)化,是因?yàn)闅w一化和標(biāo)準(zhǔn)化是無(wú)量綱化的兩個(gè)主要方法
1)歸一化
歸一化是對(duì)原始數(shù)據(jù)進(jìn)行線性變換脆淹, 使結(jié)果映射到[0, 1]的范圍, 實(shí)現(xiàn)對(duì)原始數(shù)據(jù)的等比縮放为狸。 最常用對(duì)的是Min-Max Scaling歸一化方法(也叫極差變換法),公式如下 :
? 其中X為原始數(shù)據(jù)是牢,?Xmax、Xmin分別為數(shù)據(jù)最大值和最小值。最值歸一化的使用范圍是特征的分布具有明顯邊界的,受outlier的影響比較大轻姿。
除此之外犁珠,常用的歸一化方法有原始值比最大值。
2)標(biāo)準(zhǔn)化
標(biāo)準(zhǔn)化會(huì)將原始數(shù)據(jù)映射到均值為0互亮、 標(biāo)準(zhǔn)差為1的分布上犁享。常用的方法是零均值標(biāo)準(zhǔn)化(Z-Score Normalization)。 具體來(lái)說(shuō)豹休, 假設(shè)原始特征的均值為μ炊昆、 標(biāo)準(zhǔn)差為σ, 那么歸一化公式定義為 :
零均值標(biāo)準(zhǔn)化適用于數(shù)據(jù)中沒(méi)有明顯的邊界威根,有可能存在極端數(shù)據(jù)值的情況凤巨。
3)不同的無(wú)量綱方法的適用范圍
無(wú)量綱化避免了不同量綱的選取對(duì)距離計(jì)算產(chǎn)生的巨大影響。但是洛搀,歸一化和標(biāo)準(zhǔn)化適用于不同的場(chǎng)景敢茁,在分類、聚類算法中留美,需要使用距離來(lái)度量相似性的時(shí)候彰檬、或者使用PCA技術(shù)進(jìn)行降維的時(shí)候伸刃,標(biāo)準(zhǔn)化方法表現(xiàn)更好。在不涉及距離度量逢倍、協(xié)方差計(jì)算奕枝、數(shù)據(jù)不符合正太分布的時(shí)候,可以使用歸一化方法瓶堕。比如圖像處理中隘道,將RGB圖像轉(zhuǎn)換為灰度圖像后將其值限定在[0 255]的范圍。
(3)無(wú)量綱化的作用和適用模型
1)作用
無(wú)量綱化的作用除了可以使分析結(jié)果不明顯傾向于差異化較大的特征外郎笆,另一個(gè)重要作用是在隨機(jī)梯度下降算法中谭梗,如果對(duì)特征進(jìn)行了無(wú)量綱化處理,會(huì)在相同的學(xué)習(xí)率的情況下減少差異較大的特征的迭代次數(shù)宛蚓,更快找到最優(yōu)解激捏。例如,假設(shè)有兩種數(shù)值型特征凄吏,x1x1的取值范圍為 [0, 10]远舅,x2x2的取值范圍為[0, 3]。則在未歸一化和歸一化數(shù)據(jù)的梯度下降過(guò)程分別如下圖:
由圖可以看出痕钢,在學(xué)習(xí)速率相同的情況下图柏,x1相比與x2需要較多的迭代才能找到最優(yōu)解。但是任连,如果將?x1 和?x2都映射到到相同的數(shù)值區(qū)間后蚤吹, 優(yōu)化目標(biāo)的等值圖會(huì)變成圓形。x1和?x2 的更新速度變得更為一致随抠, 容易更快地通過(guò)梯度下降找到最優(yōu)解裁着。
2)適用算法
機(jī)器學(xué)習(xí)中,并不是所有的模型都需要對(duì)特征進(jìn)行無(wú)量綱化處理拱她。比如概率模型并不需要二驰,因?yàn)樗鼈儾魂P(guān)心變量的值,而是關(guān)心變量的分布和變量之間的條件概率秉沼。但是桶雀,像線性回歸、邏輯回歸和支持向量機(jī)以及神經(jīng)網(wǎng)絡(luò)模型等則就需要提前進(jìn)行特征的無(wú)量綱化氧猬。從另一個(gè)角度來(lái)看背犯,通過(guò)梯度下降法求解的模型通常需要無(wú)量綱化。否則盅抚,像決策樹在求解過(guò)程中漠魏,主要依據(jù)特征值的信息增益比等信息,而這些信息跟特征是否經(jīng)過(guò)歸一化等無(wú)量綱化處理是無(wú)關(guān)的妄均,因此決策數(shù)不要求對(duì)特征進(jìn)行無(wú)量綱化處理柱锹。
2哪自、類別型特征編碼
類別型特征的值表現(xiàn)為類別變量,類別型變量禁熏,也被稱為定性變量(categorical variable)壤巷。比如性別、省份瞧毙、學(xué)歷胧华、產(chǎn)品等級(jí)等。這類變量的取值通常是用文字而非數(shù)字來(lái)表示宙彪。在機(jī)器學(xué)習(xí)中矩动,除了決策樹族的算法能直接接受類別型特征作為輸入,對(duì)于支持向量機(jī)释漆,邏輯回歸等模型來(lái)說(shuō)悲没,必須對(duì)其做一定的處理,轉(zhuǎn)換成可靠的數(shù)值特征才能正確運(yùn)行男图。類別型特征的處理方法有:
(1)序列編碼(ordinal encoding)
一般處理類別間具有大小關(guān)系的數(shù)據(jù)示姿,例如期末成績(jī)的 [A, B, C, D] 四擋可以直接轉(zhuǎn)化為 [0, 1, 2, 3]。在轉(zhuǎn)化后逊笆,依然保持類別之間的順序關(guān)系栈戳。
(2)獨(dú)熱編碼(one-hot encoding)
序列編碼潛在的定義了類別之間的距離具有相同的含義。以成績(jī)?yōu)槔缆叮瑑蓚€(gè)人之間荧琼,得分A與B的成績(jī)差,和B與C的成績(jī)差差牛,在進(jìn)行預(yù)測(cè)時(shí),是完全等價(jià)的堰乔,由于 [A, B, C, D] 直觀上與成績(jī)正相關(guān)偏化,使用序列編碼不會(huì)帶來(lái)太大的損失。然而在處理像血型這樣的類別特征時(shí)镐侯,如果將 [A, B, AB, O] 直接編碼成 [1, 2, 3, 4]侦讨,顯然A與B和B與AB之間的距離,并不具有相同的含義苟翻,甚至是完全抽象的無(wú)法理解的意義韵卤,此時(shí),序列編碼就不適用了崇猫。因此沈条,便出現(xiàn)了獨(dú)熱編碼,獨(dú)熱編碼將類別特征用一組比特位來(lái)表示诅炉,每一位代表一個(gè)可能的類別蜡歹,如果該變量不能一次稱為多個(gè)類別屋厘,那么該組中只有一位可以是1。
對(duì)于類別取值較多的情況下適用獨(dú)熱編碼需要注意以下問(wèn)題:
1)適用稀疏向量來(lái)節(jié)省空間月而。在獨(dú)熱編碼下汗洒,特征向量只有某一維取值為1,其他位置取值均為0父款。因此溢谤,可以利用向量的稀疏表示有效節(jié)省空間,并且目前大部分的算法均接受稀疏向量形式的輸入憨攒。
2)配合特征選擇來(lái)降低維度溯香。高維度特征會(huì)帶來(lái)幾方面的問(wèn)題,一是在K近鄰算法中浓恶,高維空間下兩點(diǎn)之間的距離很難得到有效的衡量玫坛;二是在邏輯回歸模型中,參數(shù)的數(shù)量會(huì)隨著維度的增加而增高包晰,容易引起過(guò)擬合問(wèn)題湿镀;三是通常只有部分維度是對(duì)分類、預(yù)測(cè)有幫助伐憾,因此可以考慮配合特征選擇來(lái)降低維度勉痴。
(3)啞變量(dummy encoding)
啞變量是獨(dú)熱編碼的一種形式,onehot編碼的問(wèn)題是它允許k個(gè)自由度树肃,其中變量本身只需要k-1蒸矛。虛擬編碼通過(guò)僅適用表示中的k-1個(gè)特征來(lái)消除額外的自由度。
3胸嘴、數(shù)值型特征離散化
離散化是數(shù)值型特征非常重要的一個(gè)處理雏掠,其實(shí)就是要將數(shù)值型數(shù)據(jù)轉(zhuǎn)化成類別型數(shù)據(jù)。連續(xù)值的取值空間可能是無(wú)窮的劣像,為了便于表示和在模型中處理乡话,需要對(duì)連續(xù)值特征進(jìn)行離散化處理。
(1)無(wú)監(jiān)督方法
1)自定義離散化耳奕,根據(jù)業(yè)務(wù)經(jīng)驗(yàn)或者常識(shí)等自行設(shè)定劃分的區(qū)間绑青,然后將原始數(shù)據(jù)歸類到各個(gè)區(qū)間中。
2)等距化方法屋群,按照相同寬度將數(shù)據(jù)分成幾等份闸婴,其缺點(diǎn)是受到異常值的影響比較大。
3)等頻化方法芍躏,將數(shù)據(jù)分成幾等份邪乍,每等份數(shù)據(jù)里面的個(gè)數(shù)是一樣的。
4)聚類離散化
5)二值化方法,設(shè)定一個(gè)閾值溺欧,大于閾值的賦值為1喊熟,小于等于閾值的賦值為0。
(2)有監(jiān)督方法
1)卡方法姐刁,自底向上的(即基于合并的)數(shù)據(jù)離散化方法芥牌。它依賴于卡方檢驗(yàn):具有最小卡方值的相鄰區(qū)間合并在一起,直到滿足確定的停止準(zhǔn)則。其基本思想是聂使,對(duì)于精確的離散化壁拉,相對(duì)類頻率在一個(gè)區(qū)間內(nèi)應(yīng)當(dāng)完全一致。因此,如果兩個(gè)相鄰的區(qū)間具有非常類似的類分布柏靶,則這兩個(gè)區(qū)間可以合并弃理;否則,它們應(yīng)當(dāng)保持分開屎蜓。而低卡方值表明它們具有相似的類分布痘昌。
2)最小熵法,需要使總熵值達(dá)到最小炬转,也就是使分箱能夠最大限度地區(qū)分因變量的各類別辆苔。數(shù)據(jù)集的熵越低,說(shuō)明數(shù)據(jù)之間的差異越小扼劈,最小熵劃分就是為了使每箱中的數(shù)據(jù)具有最好的相似性驻啤。給定箱的個(gè)數(shù),如果考慮所有可能的分箱情況荐吵,最小熵方法得到的箱應(yīng)該是具有最小熵的分箱骑冗。
4、缺失值處理方法
(1)直接刪除
如果在數(shù)據(jù)集中先煎,只有幾條數(shù)據(jù)的某幾列中存在缺失值贼涩,那么可以直接把這幾條數(shù)據(jù)刪除。
(2)均值插補(bǔ)
數(shù)據(jù)的屬性分為定距型和非定距型榨婆。如果缺失值是定距型的磁携,就以該屬性存在值的平均值來(lái)插補(bǔ)缺失的值;如果缺失值是非定距型的良风,就根據(jù)統(tǒng)計(jì)學(xué)中的眾數(shù)原理,用該屬性的眾數(shù)(即出現(xiàn)頻率最高的值)來(lái)補(bǔ)齊缺失的值闷供。
(3)利用同類均值插補(bǔ)
同均值插補(bǔ)的方法都屬于單值插補(bǔ)烟央,不同的是,它用層次聚類模型預(yù)測(cè)缺失變量的類型歪脏,再以該類型的均值插補(bǔ)疑俭。
(4)極大似然估計(jì)
在缺失類型為隨機(jī)缺失的條件下,假設(shè)模型對(duì)于完整的樣本是正確的婿失,那么通過(guò)觀測(cè)數(shù)據(jù)的邊際分布可以對(duì)未知參數(shù)進(jìn)行極大似然估計(jì)(Little and Rubin)钞艇。
(5)多重插補(bǔ)
多重插補(bǔ)的思想來(lái)源于貝葉斯估計(jì)啄寡,認(rèn)為待插補(bǔ)的值是隨機(jī)的,它的值來(lái)自于已觀測(cè)到的值哩照。具體實(shí)踐上通常是估計(jì)出待插補(bǔ)的值挺物,然后再加上不同的噪聲,形成多組可選插補(bǔ)值飘弧。根據(jù)某種選擇依據(jù)识藤,選取最合適的插補(bǔ)值。