机器学习:特征工程
特征選擇直接影響模型靈活性、性能及是否簡潔。
好特征的靈活性在于它允許你選擇不復雜的模型,同時運行速度也更快,也更容易理解和維護。
特征選擇
四個過程:產生過程,評價函數,停止準則,驗證過程。
目的:過濾特征集合中不重要特征,挑選一組最具統計意義的特征子集,從而達到降維的效果。
選擇標準:特征項和類別項之間的相關性(特征重要性)。
- - -搜索特征子空間的產生過程- - -
搜索的算法分為完全搜索(Complete),啟發式搜索(Heuristic),?隨機搜索(Random) 3大類。
完全搜索包括(4種):廣度優先搜索(窮舉法)、分支限界搜索(窮舉法+剪枝)、?定向搜索(選擇TopN)、最優優先搜索(TopN問題不限制N)
啟發式搜索包括(6種):
序列前向選擇SFS(簡單貪心,每次選使評價函數達到最優的特征)、序列后向選擇SBS(簡單貪心,每次剔除特征)、?雙向搜索BDS(SFS與SBS同時開始,碰撞時結束);
增L去R選擇算法 LRS(空集開始先加L后去R、全集開始先去R后加L)、序列浮動選擇(LRS法不固定L與R)、決策樹搜索(讓樹充分生長、然后剪枝,通過信息熵評價)
隨機算法搜索(3種):隨機產生序列選擇算法RGSS(隨機產生特征子集,運行SFS或SBS)、模擬退火算法SA(克服序列搜索局部最優、但最優解區域很小時不適用)、遺傳算法GA(隨機產生特征子集,評分,然后交叉、突變等繁衍出下一代特征子集)
- - - - 特征選擇與評價函數 - - - -
評價函數的作用是評價產生過程所提供的特征子集的好壞。
評價函數根據其工作原理,主要分為篩選器(Filter)、封裝器( Wrapper )兩大類。
封裝器實質上是一個分類器,封裝器用選取的特征子集對樣本集進行分類,分類的錯誤率作為衡量特征子集好壞的標準。
篩選器通過分析特征子集內部的特點來衡量其好壞。篩選器一般用作預處理,與分類器的選擇無關。特征選擇法主要指篩選器的選擇方法。
篩選器選擇特征:
預處理:首先去掉取值變化小的特征(對系統影響最小、最不重要的特征),接下來有四種方法:
單變量的特征選擇方法、基于機器學習模型的選擇法、隨機森林法、頂層特征選擇法(基于不同的模型選擇法)
1.單變量的特征選擇方法
獨立地衡量每個特征與響應變量之間的關系,分為兩大類:
基于距離計算的特征選擇——Pearson相關系數,Gini-index(基尼指數),IG(信息增益)、常規距離公式;
基于樹與交叉驗證的特征選擇法——適用于非線性關系。
(1)?Pearson相關系數
按照大學的線性數學水平來理解, 它可以看做是兩組數據的向量夾角的余弦。
皮爾遜相關的約束條件:兩變量獨立、兩個變量間有線性關系、變量是連續變量、均符合正態分布且二元分布也符合正態分布。
評價:
Pearson相關系數結果取值區間為[-1,1],-1表示完全的負相關(這個變量下降,那個就會上升),+1表示完全的正相關,0表示沒有線性相關。
優點:速度快、易于計算,經常在拿到數據(經過清洗和特征提取之后的)之后第一時間就執行。
缺點:只對線性關系敏感。如果關系是非線性的,即便兩個變量具有一一對應的關系,Pearson相關性也可能會接近0。
(2)?Gini-index(基尼指數)
基尼公式其中,X代表各組的人口比重,Y代表各組的收入比重,V代表各組累計的收入比重,i=1,2,3,…,n,n代表分組的組數。 GiniIndex的算法為IBM智能挖掘所使用的方法。 (3) IG(信息增益)
G(D,A)=H(D)-H(D|A)?
系統信息熵:
條件熵(指特征X被固定為值xi時):?
條件熵(指特征X被固定時):
信息增益:
(4) 常規距離公式 (Distance Metrics )
運用距離度量進行特征選擇是基于這樣的假設:好的特征子集應該使得屬于同一類的樣本距離盡可能小,屬于不同類的樣本之間的距離盡可能遠。
常用的距離度量(相似性度量)包括歐氏距離、標準化歐氏距離、馬氏距離等。
(5)?基于樹與交叉驗證的特征選擇法
假如某個特征和響應變量之間的關系是非線性的,可以用基于樹的方法(決策樹、隨機森林)、交叉驗證、擴展的線性模型等。
基于樹的方法比較易于使用,因為他們對非線性關系的建模比較好,并且不需要太多的調試。但要注意過擬合問題,因此樹的深度最好不要太大。
2.基于機器學習模型的選擇法
有些機器學習方法本身就具有對特征進行打分的機制,或者很容易將其運用到特征選擇任務中,例如回歸模型,SVM,決策樹,隨機森林等等。
在一些地方叫做wrapper類型,大意是,特征排序模型和機器學習模型是耦盒在一起的,對應的非wrapper類型的特征選擇方法叫做filter類型。
例如在回歸模型中利用的系數來選擇特征。越是重要的特征在模型中對應的系數就會越大,而跟輸出變量越是無關的特征對應的系數就會越接近于0。在噪音不多的數據上,或者是數據量遠遠大于特征數的數據上,如果特征之間相對來說是比較獨立的,那么即便是運用最簡單的線性回歸模型也一樣能取得非常好的效果。同樣的方法和套路可以用到類似的線性模型上,比如邏輯回歸。
正則化模型:就是把額外的約束或者懲罰項加到已有模型(損失函數)上,以防止過擬合并提高泛化能力。損失函數由原來的E(X,Y)變為E(X,Y)+alpha||w||,w是模型系數組成的向量(有些地方也叫參數parameter,coefficients),||·||一般是L1或者L2范數,alpha是一個可調的參數,控制著正則化的強度。當用在線性模型上時,L1正則化和L2正則化也稱為Lasso和Ridge。
3.?隨機森林
隨機森林具有準確率高、魯棒性好、易于使用等優點,這使得它成為了目前最流行的機器學習算法之一。
隨機森林提供了兩種特征選擇的方法:平均不純度減少、平均精確率減少。
(1) 平均不純度減少 (mean decrease impurity)
隨機森林由多個決策樹構成。決策樹中的每一個節點都是關于某個特征的條件,為的是將數據集按照不同的響應變量一分為二。利用不純度可以確定節點(最優條件),對于分類問題,通常采用基尼不純度或者信息增益,對于回歸問題,通常采用的是方差或者最小二乘擬合。當訓練決策樹的時候,可以計算出每個特征減少了多少樹的不純度。對于一個決策樹森林來說,可以算出每個特征平均減少了多少不純度,并把它平均減少的不純度作為特征選擇的值。
使用基于不純度的方法的時候,要注意:
1、這種方法存在偏向,對具有更多類別的變量會更有利;
2、對于存在關聯的多個特征,其中任意一個都可以作為指示器(優秀的特征),并且一旦某個特征被選擇之后,其他特征的重要度就會急劇下降,因為不純度已經被選中的那個特征降下來了,其他的特征就很難再降低那么多不純度了,這樣一來,只有先被選中的那個特征重要度很高,其他的關聯特征重要度往往較低。在理解數據時,這就會造成誤解,導致錯誤的認為先被選中的特征是很重要的,而其余的特征是不重要的,但實際上這些特征對響應變量的作用確實非常接近的(這跟Lasso是很像的)。
特征隨機選擇方法稍微緩解了這個問題,但總的來說并沒有完全解決。
(2)?平均精確率減少 (Mean decrease accuracy)
主要思路是直接度量每個特征對模型精確率的影響,通過打亂每個特征的特征值順序,來度量順序變動對模型的精確率的影響。
很明顯,對于不重要的變量來說,打亂順序對模型的精確率影響不會太大,但是對于重要的變量來說,打亂順序就會降低模型的精確率。
4.?兩種頂層特征選擇算法
之所以叫做頂層,是因為他們都是建立在基于模型的特征選擇方法基礎之上的,例如回歸和SVM,在不同的子集上建立模型,然后匯總最終確定特征得分。
有兩種方法:穩定性選擇 (Stability selection);遞歸特征消除RFE (Recursive feature elimination)
穩定性選擇是一種基于二次抽樣和選擇算法相結合較新的方法,選擇算法可以是回歸、SVM或其他類似的方法。它的主要思想是在不同的數據子集和特征子集上運行特征選擇算法,不斷的重復,最終匯總特征選擇結果。比如可以統計某個特征被認為是重要特征的頻率(被選為重要特征的次數除以它所在的子集被測試的次數)。理想情況下,重要特征的得分會接近100%。稍微弱一點的特征得分會是非0的數,而最無用的特征得分將會接近于0。
遞歸特征消除的主要思想是反復的構建模型(如SVM或者回歸模型)然后選出最好的(或者最差的)的特征(可以根據系數來選),把選出來的特征放到一遍,然后在剩余的特征上重復這個過程,直到所有特征都遍歷了。這個過程中特征被消除的次序就是特征的排序。因此,這是一種尋找最優特征子集的貪心算法。
- - - -?過濾器方法的簡單比較?- - - -?
Lasso能夠挑出一些優質特征,同時讓其他特征的系數趨于0。當如需要減少特征數的時候它很有用,但是對于數據理解來說不是很好用。(例如在結果中,X11,X12,X13的得分都是0,好像他們跟輸出變量之間沒有很強的聯系,但實際上不是這樣的)
MIC對特征一視同仁,這一點上和關聯系數有點像。另外,它能夠找出X3和響應變量之間的非線性關系。
隨機森林基于不純度的排序結果非常鮮明。在得分最高的幾個特征之后的特征,得分急劇的下降。從表中可以看到,得分第三的特征比第一的小4倍。而其他的特征選擇算法就沒有下降的這么劇烈。
Ridge將回歸系數均勻的分攤到各個關聯變量上,從表中可以看出,X11,…,X14和X1,…,X4的得分非常接近。
穩定性選擇常常是一種既能夠有助于理解數據又能夠挑出優質特征的這種選擇。像Lasso一樣,它能找到那些性能比較好的特征(X1,X2,X4,X5),同時,與這些特征關聯度很強的變量也得到了較高的得分。
最后給一個實例分析:廣告點擊率預估中的特征選擇
參考資料:
機器學習中,有哪些特征選擇的工程方法?
機器學習中的數據清洗與特征處理綜述
機器學習之特征工程
干貨:結合Scikit-learn介紹幾種常用的特征選擇方法
總結
- 上一篇: 阮一峰相关自留
- 下一篇: 问题三十五: 怎么用ray tracin