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