机器学习知识点(三十七)特征选择方法总结
在模型訓(xùn)練中,特征選擇是非常重要。樣本有限的情況,特征過(guò)多計(jì)算開(kāi)銷(xiāo)過(guò)大;通過(guò)特征選擇去掉冗余和不相關(guān)特征,可提高模型性能降低計(jì)算開(kāi)銷(xiāo)。兩個(gè)字:降維。當(dāng)然降維后,模型性能應(yīng)該是提升的。特征選擇的最終目的是獲取盡可能小的特征子集,用于訓(xùn)練模型。
特征選擇有什么方法呢?在一次機(jī)器學(xué)習(xí)訓(xùn)練中,我把所有特征作了窮盡組合,然后放到模型中去訓(xùn)練,最后用f1-score來(lái)度量,那個(gè)好就選那個(gè),悲劇的是,存在過(guò)擬合情況,根本無(wú)法有效選擇特征。在這次訓(xùn)練中,個(gè)別特征非常明顯,只要選上去訓(xùn)練,f1就能達(dá)到90以上。怎么解決呢?我先用一個(gè)模型訓(xùn)練過(guò)擬合特征,然后把訓(xùn)練結(jié)果投入非過(guò)擬合特征的訓(xùn)練,不過(guò)對(duì)結(jié)果沒(méi)有提升,但沒(méi)再出現(xiàn)過(guò)擬合。其實(shí)如果通過(guò)相關(guān)性分析應(yīng)該可以直接解決的。
回到方法上,主要有三類:1)窮舉法(exhaustion)、2)啟發(fā)法(heuristic)、3)隨機(jī)法(random)。窮舉法需要遍歷特征空間中所有的特征組合,所以方法復(fù)雜度最大,實(shí)用性不強(qiáng);啟發(fā)法通過(guò)采用期望的人工機(jī)器調(diào)度規(guī)則,重復(fù)迭代產(chǎn)生遞增的特征子集,復(fù)雜度略低于窮舉法,但是只能獲取近似最優(yōu)解;隨即方法分為完全隨機(jī)方法和概率隨機(jī)方法兩種,對(duì)參數(shù)設(shè)置的依賴性較強(qiáng)。
如果按照特征評(píng)價(jià)標(biāo)準(zhǔn)來(lái)分,根據(jù)評(píng)價(jià)函數(shù)與模型的關(guān)系,可以分為篩選器和封裝器兩種,篩選器的評(píng)價(jià)函數(shù)與模型無(wú)關(guān),封裝器采用模型的錯(cuò)誤概率作為評(píng)價(jià)函數(shù)。篩選器的評(píng)價(jià)函數(shù)可以細(xì)分為距離測(cè)度、信息測(cè)度、相關(guān)性測(cè)度和一致性測(cè)度。距離測(cè)度用距離來(lái)衡量樣本之間的相似度,信息測(cè)度利用最小不確定性特征來(lái)分類。
我自己的理解是在訓(xùn)練模型前必要的工作就是特征抽取和特征值處理,所以特征選擇方法這做一個(gè)總結(jié),至于特征值處理不同模型有不同數(shù)值要求,歸一化或離散化大概是必要的。
1、去掉取值變化小的特征 Removing features with low variance
一般用在特征選擇前作為一個(gè)預(yù)處理的工作,即先去掉取值變化小的特征,然后再使用其他的特征選擇方法選擇特征。
假設(shè)某特征的特征值只有0和1,并且在所有輸入樣本中,95%的實(shí)例的該特征取值都是1,那就可以認(rèn)為這個(gè)特征作用不大。如果100%都是1,那這個(gè)特征就沒(méi)意義了。當(dāng)特征值都是離散型變量的時(shí)候這種方法才能用,如果是連續(xù)型變量,就需要將連續(xù)變量離散化之后才能用,而且實(shí)際當(dāng)中,一般不太會(huì)有95%以上都取某個(gè)值的特征存在,悲劇的是我自己在delta比賽中就遇到一個(gè)特征80%以上都是某個(gè)值。
2、單變量特征選擇 Univariate feature selection
單變量特征選擇能夠?qū)γ恳粋€(gè)特征進(jìn)行測(cè)試,衡量該特征和響應(yīng)變量之間的關(guān)系,根據(jù)得分扔掉不好的特征。對(duì)于回歸和分類問(wèn)題可以采用卡方檢驗(yàn)等方式對(duì)特征進(jìn)行測(cè)試。
卡方檢驗(yàn)是用方差來(lái)衡量某個(gè)觀測(cè)頻率和理論頻率之間差異性的方法。皮爾森卡方檢驗(yàn)是一種最常用的卡方檢驗(yàn)方法,它有兩個(gè)用途:1)計(jì)算某個(gè)變量對(duì)某種分布的擬合程度,2)根據(jù)兩個(gè)觀測(cè)變量的Contingencytable來(lái)計(jì)算這兩個(gè)變量是否是獨(dú)立的;主要有三個(gè)步驟:第一步用方差和的方式來(lái)計(jì)算觀測(cè)頻率和理論頻率之間卡方值;第二步算出卡方檢驗(yàn)的自由度(行數(shù)-1乘以列數(shù)-1);第三步比較卡方值和對(duì)應(yīng)自由度的卡方分布,判斷顯著性。
p-value就是為了驗(yàn)證假設(shè)和實(shí)際之間一致性的統(tǒng)計(jì)學(xué)意義的值,即假設(shè)檢驗(yàn)。也叫右尾概率,根據(jù)卡方值和自由度可以算出一個(gè)固定的p-value。
零假設(shè)(nullhypothesis) ,在相關(guān)性檢驗(yàn)中,一般會(huì)取“兩者之間無(wú)關(guān)聯(lián)”作為零假設(shè),而在獨(dú)立性檢驗(yàn)中,一般會(huì)取“兩者之間是獨(dú)立”作為零假設(shè)。與零假設(shè)相對(duì)的是備擇假設(shè)(對(duì)立假設(shè)),即希望證明是正確的另一種可能。
2.1 Pearson相關(guān)系數(shù)?Pearson Correlation
皮爾森相關(guān)系數(shù)是體現(xiàn)特征和響應(yīng)變量(模型的輸入是explanatroy variables,模型的輸出是responsevariables,驗(yàn)證該特征對(duì)結(jié)果所造成的影響)之間關(guān)系的方法,該方法衡量的是變量之間的線性相關(guān)性,結(jié)果的取值區(qū)間為[-1,1],-1表示完全的負(fù)相關(guān)(這個(gè)變量下降,那個(gè)就會(huì)上升),+1表示完全的正相關(guān),0表示沒(méi)有線性相關(guān)。
Pearson相關(guān)系數(shù)的一個(gè)明顯缺陷是,作為特征排序機(jī)制,他只對(duì)線性關(guān)系敏感。如果關(guān)系是非線性的,即便兩個(gè)變量具有一一對(duì)應(yīng)的關(guān)系,Pearson相關(guān)性也可能會(huì)接近0。
2.2?互信息和最大信息系數(shù)?Mutual information and maximal information coefficient (MIC)
這就是經(jīng)典的互信息公式,要把互信息直接用于特征選擇有三點(diǎn)不足:1、它不屬于度量方式,也沒(méi)有辦法歸一化,在不同數(shù)據(jù)及上的結(jié)果無(wú)法做比較;2、對(duì)于連續(xù)變量的計(jì)算不是很方便(X和Y都是集合,x,y都是離散的取值),通常變量需要先離散化,而互信息的結(jié)果對(duì)離散化的方式很敏感。
最大信息系數(shù)(MIC)克服了這兩個(gè)問(wèn)題。它首先尋找一種最優(yōu)的離散化方式,然后把互信息取值轉(zhuǎn)換成一種度量方式,取值區(qū)間在[0,1]。
2.3?距離相關(guān)系數(shù)?(Distance correlation)
距離相關(guān)系數(shù)是為了克服Pearson相關(guān)系數(shù)的弱點(diǎn)而生的。在Pearson相關(guān)系數(shù)為0的情況,也不能斷定這兩個(gè)變量是獨(dú)立的(有可能是非線性相關(guān));但如果距離相關(guān)系數(shù)是0,那就可以說(shuō)這兩個(gè)變量是獨(dú)立的。
盡管有MIC和距離相關(guān)系數(shù)的改進(jìn),但當(dāng)變量之間的關(guān)系接近線性相關(guān)的時(shí)候,Pearson相關(guān)系數(shù)仍然是不可替代的。第一、Pearson相關(guān)系數(shù)計(jì)算速度快,這在處理大規(guī)模數(shù)據(jù)的時(shí)候很重要。第二、Pearson相關(guān)系數(shù)的取值區(qū)間是[-1,1],而MIC和距離相關(guān)系數(shù)都是[0,1]。這個(gè)特點(diǎn)使得Pearson相關(guān)系數(shù)能夠表征更豐富的關(guān)系,符號(hào)表示關(guān)系的正負(fù),絕對(duì)值能夠表示強(qiáng)度。當(dāng)然,Pearson相關(guān)性有效的前提是兩個(gè)變量的變化關(guān)系是單調(diào)的。
2.4?基于學(xué)習(xí)模型的特征排序?(Model based ranking)
這種方法的思路是直接用訓(xùn)練模型的算法,針對(duì)每個(gè)單獨(dú)的特征和響應(yīng)變量建立預(yù)測(cè)模型。其實(shí)Pearson相關(guān)系數(shù)等價(jià)于線性回歸里的標(biāo)準(zhǔn)化回歸系數(shù)。假如某個(gè)特征和響應(yīng)變量之間的關(guān)系是非線性的,可以用基于樹(shù)的方法(決策樹(shù)、隨機(jī)森林)、或者擴(kuò)展的線性模型等。基于樹(shù)的方法比較易于使用,因?yàn)樗麄儗?duì)非線性關(guān)系的建模比較好,并且不需要太多的調(diào)試。但要注意過(guò)擬合問(wèn)題,因此樹(shù)的深度最好不要太大,再就是運(yùn)用交叉驗(yàn)證。
3?線性模型和正則化
單變量特征選擇方法獨(dú)立的衡量每個(gè)特征與響應(yīng)變量之間的關(guān)系,另一種主流的特征選擇方法是基于機(jī)器學(xué)習(xí)模型的方法。有些機(jī)器學(xué)習(xí)方法本身就具有對(duì)特征進(jìn)行打分的機(jī)制,或者很容易將其運(yùn)用到特征選擇任務(wù)中,例如回歸模型、SVM、決策樹(shù)、隨機(jī)森林等等。這種方法也叫wrapper類型,大概意思是說(shuō),特征排序模型和機(jī)器學(xué)習(xí)模型是耦合在一起的,對(duì)應(yīng)的非wrapper類型的特征選擇方法叫做filter類型。
在用回歸模型的系數(shù)來(lái)選擇特征時(shí),越是重要的特征在模型中對(duì)應(yīng)的系數(shù)就會(huì)越大,而跟輸出變量越是無(wú)關(guān)的特征對(duì)應(yīng)的系數(shù)就會(huì)越接近于0。在噪音不多的數(shù)據(jù)上,或者是數(shù)據(jù)量遠(yuǎn)遠(yuǎn)大于特征數(shù)的數(shù)據(jù)上,如果特征之間相對(duì)來(lái)說(shuō)是比較獨(dú)立的,那么即便是運(yùn)用最簡(jiǎn)單的線性回歸模型也一樣能取得非常好的效果。
在很多實(shí)際的數(shù)據(jù)當(dāng)中,往往存在多個(gè)互相關(guān)聯(lián)的特征,這時(shí)候模型就會(huì)變得不穩(wěn)定,數(shù)據(jù)中細(xì)微的變化就可能導(dǎo)致模型的巨大變化(模型的變化本質(zhì)上是系數(shù),或者叫參數(shù),可以理解成W),這會(huì)讓模型的預(yù)測(cè)變得困難,這種現(xiàn)象也稱為多重共線性。例如,假設(shè)有個(gè)數(shù)據(jù)集,它的真實(shí)模型應(yīng)該是Y=X1+X2,當(dāng)我們觀察的時(shí)候,發(fā)現(xiàn)Y’=X1+X2+e,e是噪音。如果X1和X2之間存在線性關(guān)系,例如X1約等于X2,這個(gè)時(shí)候由于噪音e的存在,我們學(xué)到的模型可能就不是Y=X1+X2了,有可能是Y=2X1,或者Y=-X1+3X2。在同一個(gè)數(shù)據(jù)上加入了一些噪音,這個(gè)時(shí)候可以用隨機(jī)森林算法進(jìn)行特征選擇。
3.1?正則化模型
正則化就是把額外的約束或者懲罰項(xiàng)加到已有模型(損失函數(shù))上,以防止過(guò)擬合并提高泛化能力。損失函數(shù)由原來(lái)的E(X,Y)變?yōu)?/span>E(X,Y)+alpha||w||,w是模型系數(shù)組成的向量(有些地方也叫參數(shù)parameter,coefficients),||·||一般是L1或者L2范數(shù),alpha是一個(gè)可調(diào)的參數(shù),控制著正則化的強(qiáng)度。當(dāng)用在線性模型上時(shí),L1正則化和L2正則化也稱為Lasso和Ridge。
3.2 L1正則化/Lasso
L1正則化將系數(shù)w的l1范數(shù)作為懲罰項(xiàng)加到損失函數(shù)上,由于正則項(xiàng)非零,這就迫使那些弱的特征所對(duì)應(yīng)的系數(shù)變成0。因此L1正則化往往會(huì)使學(xué)到的模型很稀疏(系數(shù)w經(jīng)常為0),這個(gè)特性使得L1正則化成為一種很好的特征選擇方法。
3.3 L2正則化/Ridge regression
L2正則化將系數(shù)向量的L2范數(shù)添加到了損失函數(shù)中。由于L2懲罰項(xiàng)中系數(shù)是二次方的,這使得L2和L1有著諸多差異,最明顯的一點(diǎn)就是,L2正則化會(huì)讓系數(shù)的取值變得平均。對(duì)于關(guān)聯(lián)特征,這意味著他們能夠獲得更相近的對(duì)應(yīng)系數(shù)。還是以Y=X1+X2為例,假設(shè)X1和X2具有很強(qiáng)的關(guān)聯(lián),如果用L1正則化,不論學(xué)到的模型是Y=X1+X2還是Y=2X1,懲罰都是一樣的,都是2alpha。但是對(duì)于L2來(lái)說(shuō),第一個(gè)模型的懲罰項(xiàng)是2alpha,但第二個(gè)模型的是4*alpha??梢钥闯?#xff0c;系數(shù)之和為常數(shù)時(shí),各系數(shù)相等時(shí)懲罰是最小的,所以才有了L2會(huì)讓各個(gè)系數(shù)趨于相同的特點(diǎn)。
可以看出,L2正則化對(duì)于特征選擇來(lái)說(shuō)一種穩(wěn)定的模型,不像L1正則化那樣,系數(shù)會(huì)因?yàn)榧?xì)微的數(shù)據(jù)變化而波動(dòng)。所以L2正則化和L1正則化提供的價(jià)值是不同的,L2正則化對(duì)于特征理解來(lái)說(shuō)更加有用:表示能力強(qiáng)的特征對(duì)應(yīng)的系數(shù)是非零
4?隨機(jī)森林
隨機(jī)森林具有準(zhǔn)確率高、魯棒性好、易于使用等優(yōu)點(diǎn),這使得它成為了目前最流行的機(jī)器學(xué)習(xí)算法之一。隨機(jī)森林提供了兩種特征選擇的方法:mean decrease impurity和meandecrease accuracy。
4.1?平均不純度減少?mean decrease impurity
隨機(jī)森林由多個(gè)決策樹(shù)構(gòu)成。決策樹(shù)中的每一個(gè)節(jié)點(diǎn)都是關(guān)于某個(gè)特征的條件,為的是將數(shù)據(jù)集按照不同的響應(yīng)變量一分為二。利用不純度可以確定節(jié)點(diǎn)(最優(yōu)條件),對(duì)于分類問(wèn)題,通常采用基尼不純度或者信息增益,對(duì)于回歸問(wèn)題,通常采用的是方差或者最小二乘擬合。當(dāng)訓(xùn)練決策樹(shù)的時(shí)候,可以計(jì)算出每個(gè)特征減少了多少樹(shù)的不純度。對(duì)于一個(gè)決策樹(shù)森林來(lái)說(shuō),可以算出每個(gè)特征平均減少了多少不純度,并把它平均減少的不純度作為特征選擇的值。
4.2?平均精確率減少?Mean decrease accuracy
另一種常用的特征選擇方法就是直接度量每個(gè)特征對(duì)模型精確率的影響。主要思路是打亂每個(gè)特征的特征值順序,并且度量順序變動(dòng)對(duì)模型的精確率的影響。很明顯,對(duì)于不重要的變量來(lái)說(shuō),打亂順序?qū)δP偷木_率影響不會(huì)太大,但是對(duì)于重要的變量來(lái)說(shuō),打亂順序就會(huì)降低模型的精確率。
5?頂層特征選擇算法
之所以叫做頂層,是因?yàn)樗麄兌际墙⒃诨谀P偷奶卣鬟x擇方法基礎(chǔ)之上的,例如回歸和SVM,在不同的子集上建立模型,然后匯總最終確定特征得分。
5.1?穩(wěn)定性選擇?Stability selection
穩(wěn)定性選擇是一種基于二次抽樣和選擇算法相結(jié)合較新的方法,選擇算法可以是回歸、SVM或其他類似的方法。它的主要思想是在不同的數(shù)據(jù)子集和特征子集上運(yùn)行特征選擇算法,不斷的重復(fù),最終匯總特征選擇結(jié)果,比如可以統(tǒng)計(jì)某個(gè)特征被認(rèn)為是重要特征的頻率(被選為重要特征的次數(shù)除以它所在的子集被測(cè)試的次數(shù))。理想情況下,重要特征的得分會(huì)接近100%。稍微弱一點(diǎn)的特征得分會(huì)是非0的數(shù),而最無(wú)用的特征得分將會(huì)接近于0。
5.2?遞歸特征消除?Recursive feature elimination (RFE)
遞歸特征消除的主要思想是反復(fù)的構(gòu)建模型(如SVM或者回歸模型)然后選出最好的(或者最差的)的特征(可以根據(jù)系數(shù)來(lái)選),把選出來(lái)的特征放到一遍,然后在剩余的特征上重復(fù)這個(gè)過(guò)程,直到所有特征都遍歷了。這個(gè)過(guò)程中特征被消除的次序就是特征的排序。因此,這是一種尋找最優(yōu)特征子集的貪心算法。
RFE的穩(wěn)定性很大程度上取決于在迭代的時(shí)候底層用哪種模型。例如,假如RFE采用的普通的回歸,沒(méi)有經(jīng)過(guò)正則化的回歸是不穩(wěn)定的,那么RFE就是不穩(wěn)定的;假如采用的是Ridge,而用Ridge正則化的回歸是穩(wěn)定的,那么RFE就是穩(wěn)定的。
6、總結(jié)
對(duì)于理解數(shù)據(jù)、數(shù)據(jù)的結(jié)構(gòu)、特點(diǎn)來(lái)說(shuō),單變量特征選擇是個(gè)非常好的選擇。盡管可以用它對(duì)特征進(jìn)行排序來(lái)優(yōu)化模型,但由于它不能發(fā)現(xiàn)冗余(例如假如一個(gè)特征子集,其中的特征之間具有很強(qiáng)的關(guān)聯(lián),那么從中選擇最優(yōu)的特征時(shí)就很難考慮到冗余的問(wèn)題)。
正則化的線性模型對(duì)于特征理解和特征選擇來(lái)說(shuō)是非常強(qiáng)大的工具。L1正則化能夠生成稀疏的模型,對(duì)于選擇特征子集來(lái)說(shuō)非常有用;相比起L1正則化,L2正則化的表現(xiàn)更加穩(wěn)定,由于有用的特征往往對(duì)應(yīng)系數(shù)非零,因此L2正則化對(duì)于數(shù)據(jù)的理解來(lái)說(shuō)很合適。由于響應(yīng)變量和特征之間往往是非線性關(guān)系,可以采用basisexpansion的方式將特征轉(zhuǎn)換到一個(gè)更加合適的空間當(dāng)中,在此基礎(chǔ)上再考慮運(yùn)用簡(jiǎn)單的線性模型。
隨機(jī)森林是一種非常流行的特征選擇方法,它易于使用,一般不需要featureengineering、調(diào)參等繁瑣的步驟,并且很多工具包都提供了平均不純度下降方法。它的兩個(gè)主要問(wèn)題,一是重要的特征有可能得分很低(關(guān)聯(lián)特征問(wèn)題),二是這種方法對(duì)特征變量類別多的特征越有利(偏向問(wèn)題)。盡管如此,這種方法仍然非常值得在你的應(yīng)用中試一試。
特征選擇在很多機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘場(chǎng)景中都是非常有用的。在使用的時(shí)候要弄清楚自己的目標(biāo)是什么,然后找到哪種方法適用于自己的任務(wù)。當(dāng)選擇最優(yōu)特征以提升模型性能的時(shí)候,可以采用交叉驗(yàn)證的方法來(lái)驗(yàn)證某種方法是否比其他方法要好。當(dāng)用特征選擇的方法來(lái)理解數(shù)據(jù)的時(shí)候要留心,特征選擇模型的穩(wěn)定性非常重要,穩(wěn)定性差的模型很容易就會(huì)導(dǎo)致錯(cuò)誤的結(jié)論。對(duì)數(shù)據(jù)進(jìn)行二次采樣然后在子集上運(yùn)行特征選擇算法能夠有所幫助,如果在各個(gè)子集上的結(jié)果是一致的,那就可以說(shuō)在這個(gè)數(shù)據(jù)集上得出來(lái)的結(jié)論是可信的,可以用這種特征選擇模型的結(jié)果來(lái)理解數(shù)據(jù)。?
理論參考:http://blog.csdn.net/fjssharpsword/article/details/70145130
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的机器学习知识点(三十七)特征选择方法总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java机器学习库ML之二Feature
- 下一篇: Java机器学习库ML之三Samplin