1. 程式人生 > >機器學習之特徵選擇方法整理

機器學習之特徵選擇方法整理

三個問題

1、為什麼特徵選擇?
在有限的樣本數目下,用大量的特徵來設計分類器計算開銷太大而且分類效能差。

2、特徵選擇是什麼?
將高維空間的樣本通過對映或者是變換的方式轉換到低維空間,達到降維的目的,然後通過特徵選取刪選掉冗餘和不相關的特徵來進一步降維。

3、如何進行特徵選取?
獲取儘可能小的特徵子集,不顯著降低分類精度、不影響類分佈以及特徵子集應具有穩定適應性強等特點。

三種方法

1、Filter方法
其主要思想是:對每一維的特徵“打分”,即給每一維的特徵賦予權重,這樣的權重就代表著該維特徵的重要性,然後依據權重排序。

  1. Chi-squared test(卡方檢驗)
  2. information gain(資訊增益)
  3. correlation coefficient scores(相關係數)

2、Wrapper方法
其主要思想是:將子集的選擇看作是一個搜尋尋優問題,生成不同的組合,對組合進行評價,再與其他的組合進行比較。這樣就將子集的選擇看作是一個是一個優化問題,這裡有很多的優化演算法可以解決,尤其是一些啟發式的優化演算法,如:

  1. GA
  2. PSO
  3. DE
  4. 人工蜂群演算法(ABC)
  5. 粒子群演算法(PSO)”
  6. 遞迴特徵消除演算法

3、Embedded方法
其主要思想是:在模型既定的情況下學習出對提高模型準確性最好的屬性。這句話並不是很好理解,其實是講在確定模型的過程中,挑選出那些對模型的訓練有重要意義的屬性。

  1. 嶺迴歸(Ridge Regression)”嶺迴歸就是在基本線性迴歸的過程中加入了正則項。

特徵選擇方法具體分細節

1 去掉取值變化小的特徵 Removing features with low variance
該方法一般用在特徵選擇前作為一個預處理的工作,即先去掉取值變化小的特徵,然後再使用其他的特徵選擇方法選擇特徵。

2 單變數特徵選擇 Univariate feature selection
單變數特徵選擇能夠對每一個特徵進行測試,衡量該特徵和響應變數之間的關係,根據得分扔掉不好的特徵。對於迴歸和分類問題可以採用卡方檢驗等方式對特徵進行測試。
2.1 Pearson相關係數 Pearson Correlation
皮爾森相關係數是一種最簡單的,能幫助理解特徵和響應變數之間關係的方法,該方法衡量的是變數之間的線性相關性,結果的取值區間為[-1,1],-1表示完全的負相關(這個變數下降,那個就會上升),+1表示完全的正相關,0表示沒有線性相關。
2.2 互資訊和最大資訊係數 Mutual information and maximal information coefficient (MIC)
想把互資訊直接用於特徵選擇其實不是太方便:1、它不屬於度量方式,也沒有辦法歸一化,在不同資料及上的結果無法做比較;2、對於連續變數的計算不是很方便(X和Y都是集合,x,y都是離散的取值),通常變數需要先離散化,而互資訊的結果對離散化的方式很敏感。
2.3 距離相關係數 (Distance correlation)
距離相關係數是為了克服Pearson相關係數的弱點而生的。Pearson相關係數是0,我們也不能斷定這兩個變數是獨立的(有可能是非線性相關);但如果距離相關係數是0,那麼我們就可以說這兩個變數是獨立的。
2.4 基於學習模型的特徵排序 (Model based ranking)
這種方法的思路是直接使用你要用的機器學習演算法,針對每個單獨的特徵和響應變數建立預測模型。其實Pearson相關係數等價於線性迴歸裡的標準化迴歸係數。假如某個特徵和響應變數之間的關係是非線性的,可以用基於樹的方法(決策樹、隨機森林)、或者擴充套件的線性模型等。基於樹的方法比較易於使用,因為他們對非線性關係的建模比較好,並且不需要太多的除錯。但要注意過擬合問題,因此樹的深度最好不要太大,再就是運用交叉驗證。

3 線性模型和正則化
單變數特徵選擇方法獨立的衡量每個特徵與響應變數之間的關係,另一種主流的特徵選擇方法是基於機器學習模型的方法。有些機器學習方法本身就具有對特徵進行打分的機制,或者很容易將其運用到特徵選擇任務中,例如迴歸模型,SVM,決策樹,隨機森林等等。
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和mean decrease 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就是穩定的。

巨人的肩膀:

原理-巨人0的肩膀
code-巨人1的肩膀
code-巨人2的肩膀