特征工程完全手册 - 从预处理、构造、选择、降维、不平衡处理
“數(shù)據(jù)科學(xué)競賽到底比的是什么?”這個問題,問10個大神,大概會有9個人告訴你“特征工程+模型融合”。但是翻遍整個知乎,講模型的挺多,講特征工程的就屈指可數(shù)了。于是我就去和鯨社區(qū)給大家搞了一個教程過來~
這篇特征工程的知識點比較全面,涵蓋了數(shù)據(jù)預(yù)處理、特征選擇、特征構(gòu)造、特征降維以及類別不平衡處理等知識點,并附帶代碼實現(xiàn)功能。
原文有點長,我挑重點內(nèi)容呈現(xiàn)給大家搬搬,如果反響好的話(請給我一個wink你懂的),我再把基礎(chǔ)的技巧和代碼補上~
想看code和數(shù)學(xué)公式的,請移步原文>>【特征工程系列】特征工程理論與代碼實現(xiàn)
另外,最近上線了姊妹篇?模型集成完全手冊——套娃的藝術(shù):將模型作為特征進行建模?,歡迎串門。
1.特征構(gòu)造
- 概念及工作原理
概念:特征構(gòu)造主要是產(chǎn)生衍生變量,所謂衍生變量是指對原始數(shù)據(jù)進行加工、特征組合,生成有商業(yè)意義的新變量(新特征)
- 別稱 特征構(gòu)造也可稱為特征交叉、特征組合、數(shù)據(jù)變換
- 優(yōu)缺點
優(yōu)點?:新構(gòu)造的有效且合理的特征可提高模型的預(yù)測表現(xiàn)能力。
缺點:
1.1.特征設(shè)計原理
新特征設(shè)計應(yīng)與目標(biāo)高度相關(guān),要考慮的問題:
新構(gòu)建特征驗證其有效性要考慮的問題:
1.2.特征構(gòu)造常用方法
特征構(gòu)造需要不斷結(jié)合具體業(yè)務(wù)情況做出合理分析,才能有根據(jù)性的構(gòu)造出有用的新特征。
1.2.1.統(tǒng)計值構(gòu)造法
指通過統(tǒng)計單個或者多個變量的統(tǒng)計值(max,min,count,mean)等而形成新的特征。
方法
- 單變量
如果某個特征與目標(biāo)高度相關(guān),那么可以根據(jù)具體的情況取這個特征的統(tǒng)計值作為新的特征。
- 多變量
如果特征與特征之間存在交互影響時,那么可以聚合分組兩個或多個變量之后,再以統(tǒng)計值構(gòu)造出新的特征。
舉例
單變量:衣服顏色和你一樣的小朋友數(shù)量作為新特征
多變量:衣服顏色和你一樣的小朋友的身高的平均值作為新特征
1.2.2.連續(xù)數(shù)據(jù)離散化
有些時候我們需要對數(shù)據(jù)進行粗粒度、細粒度劃分,以便模型更好的學(xué)習(xí)到特征的信息,比如:
- 粗粒度劃分(連續(xù)數(shù)據(jù)離散化):將年齡段0~100歲的連續(xù)數(shù)據(jù)進行粗粒度處理,也可稱為二值化或離散化或分桶法
- 細粒度劃分:在文本挖掘中,往往將段落或句子細分具體到一個詞語或者字,這個過程稱為細粒度劃分
方法
- 特征二值化
設(shè)定一個劃分的閾值,當(dāng)數(shù)值大于設(shè)定的閾值時,就賦值為1;反之賦值為0。典型例子:劃分年齡段
- 無監(jiān)督離散化
分箱法:等寬(寬度)分箱法、等頻(頻數(shù))分箱法 聚類劃分:使用聚類算法將數(shù)據(jù)聚成幾類,每一個類為一個劃分
典型例子
年齡、收入
優(yōu)缺點
優(yōu)點:(1)降低數(shù)據(jù)的復(fù)雜性 (2)可在一定程度上消除多余的噪聲
1.2.3.離散數(shù)據(jù)編碼化
很多算法模型不能直接處理字符串?dāng)?shù)據(jù),因此需要將類別型數(shù)據(jù)轉(zhuǎn)換成數(shù)值型數(shù)據(jù)
方法
- 序號編碼
通常用來處理類別間具有大小關(guān)系的數(shù)據(jù),比如成績(高中低)
- 獨熱編碼(One-hot Encoding)
通常用于處理類別間不具有大小關(guān)系的特征,比如血型(A型血、B型血、AB型血、O型血), 獨熱編碼會把血型變成一個稀疏向量,A型血表示為(1,0,0,0),B型血表示為(0,1,0,0), AB型血表示為(0,0,1,0),O型血表示為(0,0,0,1)
- 二進制編碼
二進制編碼主要分為兩步,先用序號編碼給每個類別賦予一個類別ID,然后將類別ID對應(yīng)的二進制編碼作為結(jié)果。 以A、B、AB、O血型為例,A型血表示為00,B型血表示為01, AB型血表示為10,O型血表示為11
優(yōu)缺點
缺點:有些模型不支持離散字符串?dāng)?shù)據(jù),離散編碼便于模型學(xué)習(xí)
1.2.4.函數(shù)變換法
方法?簡單常用的函數(shù)變換法(一般針對于連續(xù)數(shù)據(jù)):平方(小數(shù)值—>大數(shù)值)、開平方(大數(shù)值—>小數(shù)值)、指數(shù)、對數(shù)、差分
典型例子
對時間序列數(shù)據(jù)進行差分
數(shù)據(jù)不呈正態(tài)分布時可運用
當(dāng)前特征數(shù)據(jù)不利于被模型捕獲時
優(yōu)缺點
優(yōu)點:
1.2.5.算術(shù)運算構(gòu)造法
根據(jù)實際情況需要,結(jié)合與目標(biāo)相關(guān)性預(yù)期較高的情況下,由原始特征進行算數(shù)運算而形成新的特征。
解讀概念為幾種情況:
1.2.6.自由發(fā)揮
在特征構(gòu)造這一塊是沒有什么明文規(guī)定的方法,特征構(gòu)造更多的是結(jié)合實際情況,有針對性的構(gòu)造與目標(biāo)高度相關(guān)的特征,只要構(gòu)造的新特征能夠解釋模型和對模型具有促進作用,都可以作為新指標(biāo)新特征。
2.特征選擇
2.1.特征選擇概述
從哪些方面來選擇特征呢?
當(dāng)數(shù)據(jù)處理好之后,我們需要選擇有意義的特征輸入機器學(xué)習(xí)的模型進行訓(xùn)練,通常來說要從兩個方面考慮來選擇特征,如下:
如果一個特征不發(fā)散,例如方差接近于0,也就是說樣本在這個特征上基本上沒有差異,這個特征對于樣本的區(qū)分并沒有什么用。
這點比較顯見,與目標(biāo)相關(guān)性高的特征,應(yīng)當(dāng)優(yōu)先選擇。
區(qū)別:特征與特征之間相關(guān)性高的,應(yīng)當(dāng)優(yōu)先去除掉其中一個特征,因為它們是替代品。
為什么要進行特征選擇?
處理高維數(shù)據(jù)的兩大主流技術(shù)
特征選擇和降維
特征選擇有哪些方法呢?
2.2.Filter 過濾法
它主要側(cè)重于單個特征跟目標(biāo)變量的相關(guān)性。
優(yōu)點是計算時間上較高效,對于過擬合問題也具有較高的魯棒性。
缺點就是傾向于選擇冗余的特征,因為他們不考慮特征之間的相關(guān)性,有可能某一個特征的分類能力很差,但是它和某些其它特征組合起來會得到不錯的效果,這樣就損失了有價值的特征。
2.2.1.方差選擇法
方差是衡量一個變量的離散程度(即數(shù)據(jù)偏離平均值的程度大小),變量的方差越大,我們就可以認為它的離散程度越大,也就是意味著這個變量對模型的貢獻和作用會更明顯,因此要保留方差較大的變量,反之,要剔除掉無意義的特征。
2.2.2.相關(guān)系數(shù)法
方法一:計算特征與特征的相關(guān)系數(shù)
通過計算特征與特征之間的相關(guān)系數(shù)的大小,可判定兩兩特征之間的相關(guān)程度
公式
優(yōu)缺點
優(yōu)點:容易實現(xiàn)
缺點:只是根據(jù)特征與特征之間的相關(guān)度來篩選特征,但并沒有結(jié)合與目標(biāo)的相關(guān)度來衡量
應(yīng)用場景
用于特征選擇,以提取最有效的特征作為目標(biāo),剔除冗余特征
方法二:計算特征與目標(biāo)的相關(guān)系數(shù)以及P值
r, p = scipy.stats.pearsonr(x, y) # r:相關(guān)系數(shù)[-1,1]之間 # p:相關(guān)系數(shù)顯著性相關(guān)性的強度確實是用相關(guān)系數(shù)的大小來衡量的,但相關(guān)大小的評價要以相關(guān)系數(shù)顯著性的評價為前提
因此,要先檢驗相關(guān)系數(shù)的顯著性,如果顯著,證明相關(guān)系數(shù)有統(tǒng)計學(xué)意義,下一步再來看相關(guān)系數(shù)大小;
如果相關(guān)系數(shù)沒有統(tǒng)計學(xué)意義,那意味著你研究求得的相關(guān)系數(shù)也許是抽樣誤差或者測量誤差造成的,再進行一次研究結(jié)果可 能就大不一樣,此時討論相關(guān)性強弱的意義就大大減弱了。
優(yōu)缺點
Pearson相關(guān)系數(shù)的一個明顯缺陷是,作為特征排序機制,他只對線性關(guān)系敏感。
如果關(guān)系是非線性的,即便兩個變量具有一一對應(yīng)的關(guān)系,Pearson相關(guān)性也可能會接近0
應(yīng)用場景及意義
應(yīng)用于回歸問題的特征選擇,旨在選擇出最有效的信息和減少內(nèi)存占用空間
2.2.3.卡方檢驗
卡方檢驗是檢驗定性自變量對定性因變量的相關(guān)性,求出卡方值,然后根據(jù)卡方值匹配出其所對應(yīng)的概率是否足以推翻原假設(shè)H0,如果能推翻H0,就啟用備用假設(shè)H1。參考資料-特征選擇---SelectKBest
優(yōu)缺點
優(yōu)點:可以很好地篩選出與定性應(yīng)變量有顯著相關(guān)的定性自變量。
應(yīng)用場景及意義
應(yīng)用場景:適用于分類問題的分類變量
2.2.4.互信息法
原理及實現(xiàn)參考資料-互信息原理及實現(xiàn)
應(yīng)用場景及意義
應(yīng)用場景:因此非常適合于文本分類的特征和類別的配準(zhǔn)工作
2.3.Wrapper 包裝法
封裝器用選取的特征子集對樣本(標(biāo)簽)集進行訓(xùn)練學(xué)習(xí),訓(xùn)練的精度(準(zhǔn)確率)作為衡量特征子集好壞的標(biāo)準(zhǔn), 經(jīng)過比較選出最好的特征子集。
常用的有逐步回歸(Stepwise regression)、向前選擇(Forward selection)和向后選擇(Backward selection)。
優(yōu)缺點
優(yōu)點:考慮了特征之間組合以及特征與標(biāo)簽之間的關(guān)聯(lián)性。
缺點:由于要劃分特征為特征子集并且逐個訓(xùn)練評分,因此當(dāng)特征數(shù)量較多時,計算時間又會增長;另外在樣本數(shù)據(jù)較少的時候,容易過擬合。
2.3.1.穩(wěn)定性選擇(Stability Selection)
穩(wěn)定性選擇是一種基于二次抽樣和選擇算法(訓(xùn)練模型)?相結(jié)合的方法,選擇算法可以是回歸、分類SVM或者類似算法。
原理實現(xiàn)
在不同的特征子集上運行訓(xùn)練模型,不斷地重復(fù),最終匯總特征選擇的結(jié)果。比如可以統(tǒng)計某個特征被認為是重要特征的頻率 (被選為重要特征的次數(shù)除以它所在的子集被測試的次數(shù))。理想情況下,重要特征的得分會接近100%。稍微弱一點的特征得分會是非0的數(shù), 而最無用的特征得分將會接近于0。
優(yōu)缺點
優(yōu)點:
特征值下降的不是特別急劇,這跟純lasso的方法和隨機森林的結(jié)果不一樣, 能夠看出穩(wěn)定性選擇對于克服過擬合和對數(shù)據(jù)理解來說都是有幫助的。
總的來說,好的特征不會因為有相似的特征、關(guān)聯(lián)特征而得分為0。
在許多數(shù)據(jù)集和環(huán)境下,穩(wěn)定性選擇往往是性能最好的方法之一。
2.3.2.遞歸特征消除
Recursive Feature Elimination,簡稱RFE
工作原理
主要思想是:
通識來說: RFE算法的主要思想就是使用一個基模型(這里是S模型VM)來進行多輪訓(xùn)練,
每輪訓(xùn)練后,根據(jù)每個特征的系數(shù)對特征打分,去掉得分最小的特征,
然后用剩余的特征構(gòu)建新的特征集,進行下一輪訓(xùn)練,直到所有的特征都遍歷了。
這個過程中特征被消除的次序就是特征的排序,實際上這是一種尋找最優(yōu)特征子集的貪心算法。
優(yōu)缺點
RFE的穩(wěn)定性很大程度上取決于在迭代選擇的時候,選擇哪一種模型。
2.3.3.特征值排序選擇
概念及工作原理
理論上來講,如果某個特征進行排序或者打亂之后,會很明顯的影響(無論正向影響還是負向影響)到模型(預(yù)測評分)效果評分,
那么可以說明這個特征對模型來說是重要的;反之,說明這個特征存不存在并不會影響到模型的效能。
基于這么個原理,我們可以提出:
(1)特征在進行排序或者打亂之后,會很明顯影響模型性能的特征,劃定為重要特征。
(2)特征在進行排序或者打亂之后,對模型性能幾乎沒有影響,劃定為不重要特征。
2.4.Embedded 嵌入法
先使用某些機器學(xué)習(xí)的算法和模型進行訓(xùn)練,得到各個特征的權(quán)重值系數(shù),
根據(jù)系數(shù)從大到小選擇特征。類似于Filter方法,但是是通過訓(xùn)練來確定特征的優(yōu)劣。
Regularization,或者使用決策樹思想,Random Forest和Gradient boosting等
包裝法與嵌入法的區(qū)別:包裝法根據(jù)預(yù)測效果評分來選擇,而嵌入法根據(jù)預(yù)測后的特征權(quán)重值系數(shù)來選擇。
工作原理
先使用某些機器學(xué)習(xí)的算法和模型進行訓(xùn)練,得到各個特征的權(quán)值系數(shù),根據(jù)系數(shù)從大到小選擇特征。
有些機器學(xué)習(xí)方法本身就具有對特征進行打分的機制,或者很容易將其運用到特征選擇任務(wù)中,
例如回歸模型,SVM,樹模型(決策樹、隨機森林)等等
2.4.1.線性模型
工作原理
越是重要的特征在模型中對應(yīng)的系數(shù)就會越大,而跟目標(biāo)(標(biāo)簽)變量越是無關(guān)的特征對應(yīng)的系數(shù)就會越接近于0。
在噪音不多的數(shù)據(jù)上,或者是數(shù)據(jù)量遠遠大于特征數(shù)的數(shù)據(jù)上,如果特征之間相對來說是比較獨立的,
那么即便是運用最簡單的線性回歸模型也一樣能取得非常好的效果
優(yōu)缺點
缺點:
2.4.2.正則化
正則化就是把額外的約束或者懲罰項加到已有模型(損失函數(shù))上,以防止過擬合并提高泛化能力。
工作原理
L1正則化Lasso(least absolute shrinkage and selection operator)將系數(shù)w的l1范數(shù)作為懲罰項加到損失函數(shù)上,由于正則項非零,這就迫使那些弱的特征所對應(yīng)的系數(shù)變成0。因此L1正則化往往會使學(xué)到的模型很稀疏(系數(shù)w經(jīng)常為0),這個特性使得L1正則化成為一種很好的特征選擇方法。
L2正則化同樣將系數(shù)向量的L2范數(shù)添加到了損失函數(shù)中。由于L2懲罰項中系數(shù)是二次方的,這使得L2和L1有著諸多差異,最明顯的一點就是,L2正則化會讓系數(shù)的取值變得平均。
優(yōu)缺點
L1正則化缺點:L1正則化像非正則化線性模型一樣也是不穩(wěn)定的,如果特征集合中具有相關(guān)聯(lián)的特征,當(dāng)數(shù)據(jù)發(fā)生細微變化時也有可能導(dǎo)致很大的模型差異。
L2正則化優(yōu)點:L2正則化對于特征選擇來說一種穩(wěn)定的模型,不像L1正則化那樣,系數(shù)會因為細微的數(shù)據(jù)變化而波動。
總結(jié):L2正則化和L1正則化提供的價值是不同的,L2正則化對于特征理解來說更加有用:表示能力強的特征對應(yīng)的系數(shù)是非零。
2.4.3.樹模型
工作原理
隨機森林具有準(zhǔn)確率高、魯棒性好、易于使用等優(yōu)點,隨機森林提供了兩種特征選擇的方法:
1. 平均不純度減少
2. 平均精確率減少
3.類別標(biāo)簽不平衡處理
參考資料
類別標(biāo)簽不平衡問題是指
在分類任務(wù)中,數(shù)據(jù)集中來自不同類別的樣本數(shù)目相差懸殊。
舉個例子:
假設(shè)類別 A 的樣本數(shù)量有 M 個,類別 B 的樣本數(shù)量有 N 個,并且 M >>> N(假設(shè) M:N=9:1),
這種情況我們就可以判定此數(shù)據(jù)集存在嚴重的類別標(biāo)簽不平衡的問題,為了防止模型出現(xiàn)嚴重誤差,
因此在建模前需要就樣本不平衡問題處理。
類別不平衡問題會造成這樣的后果
在數(shù)據(jù)分布不平衡時,其往往會導(dǎo)致分類器的輸出傾向于在數(shù)據(jù)集中占多數(shù)的類別。
輸出多數(shù)類會帶來更高的分類準(zhǔn)確率,但在我們所關(guān)注的少數(shù)類中表現(xiàn)不佳。
常用方法
欠采樣、過采樣及加權(quán)處理。
類別標(biāo)簽不平衡情況下的評價指標(biāo)
準(zhǔn)確率在類別不平衡數(shù)據(jù)上,說服力最差。應(yīng)考慮精確率、召回率、F1 值、F-R 曲線和 AUC 曲線。
3.1.欠采樣
所謂欠采樣是指把占比多的類別 A 樣本數(shù)量(M=900)減少到與占比少的類別 B 樣本數(shù)量(N=100)一致,然后進行訓(xùn)練。
第一種方法(隨機欠采樣)
隨機欠采樣是指通過隨機抽取的方式抽取類別 A 中 100 個樣本數(shù)據(jù)與類別 B 中的 100 個樣本進行模型訓(xùn)練。
隨機欠采樣的缺點:欠采樣只是采取少部分數(shù)據(jù),容易造成類別 A 的信息缺失
第二種方法(代表性算法:EasyEnsemble 集成學(xué)習(xí)法)
算法思想:利用集成學(xué)習(xí)機制,將占比多的類別 A 樣本數(shù)據(jù)劃分為若干個樣本子集供不同學(xué)習(xí)器使用,
這樣對每個學(xué)習(xí)器來看都進行了欠采樣,但在全局來看卻不會丟失重要信息。
算法原理如下:
第一步:首先從占比多的類別 A 樣本中獨立隨機抽取出若干個類別 A 樣本子集。
第二步:將每個類別 A 的樣本子集與占比少的類別 B 樣本數(shù)據(jù)聯(lián)合起來,訓(xùn)練生成多個基分類器。
第三步:最后將這些基分類器組合形成一個集成學(xué)習(xí)系統(tǒng)。集成可采用加權(quán)模型融合或者取所有基分類器總和的平均值。
EasyEnsemble 集成學(xué)習(xí)法優(yōu)點:可以解決傳統(tǒng)隨機欠采樣造成的數(shù)據(jù)信息丟失問題,且表現(xiàn)出較好的不均衡數(shù)據(jù)分類性能。
3.2.過采樣
所謂過采樣是指把占比少的類別 B 樣本數(shù)量(N=100)擴增到占比多的類別 A 樣本數(shù)量(M=900)一致,然后進行訓(xùn)練。
第一種方法(隨機過采樣):
由于隨機過采樣采取簡單復(fù)制樣本的策略來增加少數(shù)類樣本,這樣容易產(chǎn)生模型過擬合的問題,
即使得模型學(xué)習(xí)到的信息過于特別(Specific)而不夠泛化(General),因此很少使用這種方法。
經(jīng)典代表性算法是 SMOTE 算法:
SMOTE原理參考資料
SMOTE 的全稱是 Synthetic Minority Over-Sampling Technique 即“人工少數(shù)類過采樣法”,非直接對少數(shù)類進行重采樣,
而是設(shè)計算法來人工合成一些新的少數(shù)樣本。
算法原理如下:
(1)在占比少的類別 B 中隨機抽取一個樣本 a,從 a 的最近鄰 k 個數(shù)據(jù)中又隨機選擇一個樣本 b。
(2)在 a 和 b 的連線上(或者說[a,b]區(qū)間中)隨機選擇一點作為新的少數(shù)類樣本。
3.3.加權(quán)處理
加權(quán)處理是指通過調(diào)整不同類型標(biāo)簽的權(quán)重值,增加占比少的類別 B 樣本數(shù)據(jù)的權(quán)重,降低占比多的類別 A 樣本數(shù)據(jù)權(quán)重,
從而使總樣本占比少的類別 B 的分類識別能力與類別 A 的分類識別能力能夠同等抗衡。
加權(quán)處理原理如下:
遍歷每一個樣本,設(shè)總樣本占比多的類別 A 的權(quán)重為 W1(自定義),總樣本占比少的類別 B 的權(quán)重為 W2(自定義),其中 W2 > W1。
其實這個也類似于對模型進行懲罰,從而影響各個類別標(biāo)簽的重要性。
以上對【特征工程系列】特征工程理論與代碼實現(xiàn)?一文進行節(jié)選,另有“數(shù)據(jù)預(yù)處理”章節(jié)及代碼、公式等略去,感興趣的可以點擊鏈接前往。
總結(jié)
以上是生活随笔為你收集整理的特征工程完全手册 - 从预处理、构造、选择、降维、不平衡处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 胆囊炎能不能吃西红柿
- 下一篇: 网易云 6 亿用户音乐推荐算法