[機器學習]特徵選擇(feature selection)
特徵選擇與降維差異
知乎回答的說明:
數據降維,一般說的是維數約簡(Dimensionality reduction)。它的思路是:將原始高維特徵空間裡的點向一個低維空間投影,新的空間維度低於原特徵空間,所以維數減少了。在這個過程中,特徵發生了根本性的變化,原始的特徵消失了(雖然新的特徵也保持了原特徵的一些性質)。
而特徵選擇,是從 n 個特徵中選擇 d (d<n) 個出來,而其它的 n-d 個特徵捨棄。所以,新的特徵只是原來特徵的一個子集。沒有被捨棄的 d 個特徵沒有發生任何變化。這是二者的主要區別。
特徵選擇(feature selection)
特徵選擇scikit-learning文檔
特徵選擇是從所有特徵中選出一組相關的特徵(特徵子集),而去掉無關的特徵,而這個過程可以看做是一個降維過程。
包裝類方法
(Wrapper)使用預測模型給特徵子集打分。每個新子集都被用來訓練一個模型,然後用驗證數據集來測試。通過計算驗證數據集上的錯誤次數(即模型的錯誤率)給特徵子集評分。由於包裝類方法為每個特徵子集訓練一個新模型,所以計算量很大。不過,這類方法往往能為特定類型的模型找到性能最好的特徵集。
過濾類方法
(Filter)採用代理指標,而不根據特徵子集的錯誤率計分。所選的指標算得快,但仍然能估算出特徵集好不好用。常用指標包括互信息、逐點互信息、皮爾遜積矩相關係數、每種分類/特徵的組合的幀間/幀內類距離或顯著性測試評分。過濾類方法計算量一般比包裝類小,但這類方法找到的特徵子集不能為特定類型的預測模型調校。由於缺少調校,過濾類方法所選取的特徵集會比包裝類選取的特徵集更為通用,往往會導致比包裝類的預測性能更為低下。不過,由於特徵集不包含對預測模型的假設,更有利於暴露特徵之間的關係。許多過濾類方法提供特徵排名,而非顯式提供特徵子集。要從特徵列表的哪個點切掉特徵,得靠交叉驗證來決定。過濾類方法也常常用於包裝方法的預處理步驟,以便在問題太複雜時依然可以用包裝方法。
嵌入類方法
(Embedded)包括了所有構建模型過程中用到的特徵選擇技術。這類方法的典範是構建線性模型的LASSO方法。該方法給回歸係數加入了L1懲罰,導致其中的許多參數趨於零。任何回歸係數不為零的特徵都會被LASSO算法「選中」。 LASSO的改良算法有Bolasso和FeaLect。 Bolasso改進了樣本的初始過程。 FeaLect根據回歸係數組合分析給所有特徵打分。另外一個流行的做法是遞歸特徵消除(Recursive Feature Elimination)算法,通常用於支持向量機,通過反覆構建同一個模型移除低權重的特徵。這些方法的計算複雜度往往在過濾類和包裝類之間。
Filter
不限離散或連續target
方差選擇法
使用方差選擇法,先要計算各個特徵的方差,然後根據閾值,選擇方差大於閾值的特徵,缺點是有些特徵有做standardization或者特徵方差大小根本與target無關。
F檢驗
互信息和最大信息係數(MIC)
http://www.omegaxyz.com/2018/01/18/mic/
https://www.deeplearn.me/1466.html
https://scikit-learn.org/stable/auto_examples/feature_selection/plot_f_test_vs_mi.html#sphx-glr-auto-examples-feature-selection-plot-f-test-vs-mi-py
回歸問題
相關係數法
皮爾遜積差相關係數衡量兩個等距尺度或等比尺度變數之相關性。是最常見的,也是學習統計學時第一個接觸的相關係數。
分類問題
卡方檢驗
卡方檢驗
test用來檢測可以用來做特徵選擇,它能夠檢驗兩個分類變量之間是否是獨立無關的,通常檢測X特徵與Y標籤的相關性,CHI值越大,說明兩個變量相關性越高,只需要計算,並按照 的值從大到小將特徵排序,然後選擇閾值,大於閾值的特徵留下,小於閾值的特徵刪除。這樣就篩選出一組特徵子集了。
Wrapper
遞歸特徵消除(Recursive feature elimination)
Embedded
使用SelectFromModel選擇特徵
regularization
Feature selection using SelectFromModel