現有的特徵選擇算法,從不一樣的角度,能夠分爲不一樣的類型。按數據標籤的獲取狀況,能夠分爲有監督、半監督和無監督特徵選擇;按是否須要額外的學習算法參與特徵選擇過程,以及具體的參與方式,能夠分爲封裝型(wrapper)、嵌入式(embedded)和過濾型(filter)。再細緻一些,能夠分爲基於信息論的特徵選擇、基於統計的特徵選擇、基於類似性的特徵選擇、基於稀疏學習的特徵選擇,等等。這裏簡單收集並持續更新php
上述說起的第一種分類方式,是機器學習中最爲常見的,對於有監督/半監督方法利用標籤的形式,有直接經過迴歸項引入標籤信息,也有間接經過圖來引入標籤信息(即在構建圖的過程當中引入)。第二種分類方式,我的感受在近年來,對某些方法的歸屬類別,不一樣學者開始出現一些分歧,緣由可能跟近年來引發衆多研究者關注的正則化技術有關,使得本來的界線劃分變得比較模糊,不過也正說明,這種分類方式自己就沒有一個很嚴格的定義,只是概念上的大體區分。最後提到的分類方式,是根據特徵選擇算法具體用到的準則/技術來劃分,因此一種算法同時分屬不一樣的類別也是可能的,我我的更樂意把這裏所謂的類別名,稱爲某一算法的組成成分。
html
Chi-squared test(卡方檢驗)算法
information gain(信息增益)數組
correlation coefficient scores(相關係數)app
查看帶選擇特徵與目標值的關聯度,能夠經過預設指定閾值來篩選特徵,變量關聯關係能夠經過spearman、pearson、kendall等方法,固然在選擇具體算法前要分析數據的分佈狀況以適應個算法的需求機器學習
其主要思想是:將子集的選擇看做是一個搜索尋優問題,生成不一樣的組合,對組合進行評價,再與其餘的組合進行比較。這樣就將子集的選擇看做是一個是一個優化問題,這裏有不少的優化算法能夠解決,尤爲是一些啓發式的優化算法,如GA,PSO,DE,ABC等,詳見「優化算法——人工蜂羣算法(ABC)」,「優化算法——粒子羣算法(PSO)」。函數
主要方法有: (遞歸特徵消除算法) 學習
其主要思想是:在模型既定的狀況下學習出對提升模型準確性最好的屬性。這句話並非很好理解,實際上是講在肯定模型的過程當中,挑選出那些對模型的訓練有重要意義的屬性。測試
簡單易學的機器學習算法——嶺迴歸(Ridge Regression)」,嶺迴歸就是在基本線性迴歸的過程當中加入了正則項。優化
這應該是最簡單的特徵選擇方法了:假設某特徵的特徵值只有0和1,而且在全部輸入樣本中,95%的實例的該特徵取值都是1,那就能夠認爲這個特徵做用不大。若是100%都是1,那這個特徵就沒意義了。當特徵值都是離散型變量的時候這種方法才能用,若是是連續型變量,就須要將連續變量離散化以後才能用,並且實際當中,通常不太會有95%以上都取某個值的特徵存在,因此這種方法雖然簡單可是不太好用。能夠把它做爲特徵選擇的預處理,先去掉那些取值變化小的特徵,而後再從接下來提到的的特徵選擇方法中選擇合適的進行進一步的特徵選擇。
單變量特徵選擇可以對每個特徵進行測試,衡量該特徵和響應變量之間的關係,根據得分扔掉很差的特徵。對於迴歸和分類問題能夠採用卡方檢驗等方式對特徵進行測試。
這種方法比較簡單,易於運行,易於理解,一般對於理解數據有較好的效果(但對特徵優化、提升泛化能力來講不必定有效);這種方法有許多改進的版本、變種。
2.1 相關係數 spearman、pearson、kendall
pandas裏面有相關實現,這裏需注意選用不一樣計算相關係數的方式的前提是肯定合適的數據分佈
2.2 互信息和最大信息係數 Mutual information and maximal information coefficient (MIC)
以上就是經典的互信息公式了。想把互信息直接用於特徵選擇其實不是太方便:一、它不屬於度量方式,也沒有辦法歸一化,在不一樣數據及上的結果沒法作比較;二、對於連續變量的計算不是很方便(X和Y都是集合,x,y都是離散的取值),一般變量須要先離散化,而互信息的結果對離散化的方式很敏感。
2.3 距離相關係數 (Distance correlation)
距離相關係數是爲了克服Pearson相關係數的弱點而生的。Pearson相關係數是0,咱們也不能判定這兩個變量是獨立的(有多是非線性相關);但若是距離相關係數是0,那麼咱們就能夠說這兩個變量是獨立的。
2.4 基於學習模型的特徵排序 (Model based ranking)
這種方法的思路是直接使用你要用的機器學習算法,針對每一個單獨的特徵和響應變量創建預測模型。其實Pearson相關係數等價於線性迴歸裏的標準化迴歸係數。假如某個特徵和響應變量之間的關係是非線性的,能夠用基於樹的方法(決策樹、隨機森林)、或者擴展的線性模型等。基於樹的方法比較易於使用,由於他們對非線性關係的建模比較好,而且不須要太多的調試。但要注意過擬合問題,所以樹的深度最好不要太大,再就是運用交叉驗證。
單變量特徵選擇方法獨立的衡量每一個特徵與響應變量之間的關係,另外一種主流的特徵選擇方法是基於機器學習模型的方法。有些機器學習方法自己就具備對特徵進行打分的機制,或者很容易將其運用到特徵選擇任務中,例如迴歸模型,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正則化對於特徵理解來講更加有用:表示能力強的特徵對應的係數是非零
隨機森林具備準確率高、魯棒性好、易於使用等優勢,這使得它成爲了目前最流行的機器學習算法之一。隨機森林提供了兩種特徵選擇的方法: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就是穩定的。
七、特徵獲取方法的選取原則
a、處理的數據類型
b、處理的問題規模
c、問題須要分類的數量
d、對噪聲的容忍能力
e、無噪聲環境下,產生穩定性好、最優特徵子集的能力。
yj對xi的互信息定義爲後驗機率與先驗機率比值的對數。
互信息越大,代表yj對於肯定xi的取值的貢獻度越大。
實際上,互信息衡量的是xi與y的獨立性,若是他倆獨立,則互信息發值爲零,則xi與y不相關,則能夠剔除xi,反之,若是互信息發值越大則他們的相關性越大
p(ci|w)表示在出現詞條w時文檔屬於類別ci的機率。
交叉熵反應了文本類別的機率分佈與在出現了某個詞條的狀況下文本類別的機率分佈之間的距離。詞條的交叉熵越大,對文本類別分佈影響也就越大。
若是使用具備對稱性的交叉熵,那公式就變成了
特徵選擇->前向搜索,後向搜索
https://www.tuicool.com/articles/ieUvaq
scikit-feature feature selection repository
http://www.escience.cn/people/fpnie/index.html
https://blog.csdn.net/fighting_one_piece/article/details/38441865
https://blog.csdn.net/fighting_one_piece/article/details/37912051