包裹式選擇與過濾式選擇不考慮後續學習器不同,直接把最終使用的學習器的效能作為特徵子集的評價準則。換言之,包裹式選擇的目的就是為給定學習器選擇最有利於其效能、「量身定做」的特徵子集。
【與過濾式選擇的區別】:
遞迴特徵消除(recursive feature elimination)使用乙個基模型(學習器)來進行多輪訓練,每輪訓練後移除若干特徵,再基於新的特徵集進行下一輪訓練。
【sklearn 官方解釋】:對特徵含有權重的**模型,rfe 通過遞迴減少待考察特徵集規模來選擇特徵。
首先,**模型在原始特徵集上進行訓練,通過 coef_ 屬性或 feature_importances_ 屬性為每個特徵指定乙個權重;
然後,剔除那些權重絕對值較小的特徵;
如此迴圈,直到剩餘的特徵數量達到所需的特徵數量。
需要注意的是,rfe 的穩定性很大程度上取決於迭代時,底層使用的**模型。如果 rfe 採用的是普通的邏輯回歸,沒有經過正則化的回歸是不穩定的,因此 rfe 也不穩定。若採用的是脊回歸 ridge 或 lasso,則 rfe 穩定。
關於 rfe 的具體介紹可參考 sklearn 的 rfe 傳送門
【**實現】:回歸問題
from sklearn.feature_selection import rfe
from sklearn.linear_model import lasso
# 引入資料集
dataset_boston = load_boston(
)data_boston = dataset_boston.data
target_boston = dataset_boston.target
rfe = rfe(estimator=lasso(
), n_features_to_select=4)
rfe.fit(data_boston, target_boston)
print
(rfe.support_)
# 輸出
array(
[false
,false
,false
,false
,false
,true
,false
,true
,false
,false
,true
,false
,true
])
【**實現】:分類問題
from sklearn.feature_selection import rfe
# 引入資料集
dataset_iris = load_iris(
)data_iris = dataset_iris.data
target_iris = dataset_iris.target
rfe = rfe(estimator=decisiontreeclassifier(
), n_features_to_select=2)
rfe.fit(data_iris, target_iris)
print
(rfe.support_)
array(
[false
,false
,true
,true
])
sklearn 還提供 rfecv 方法,該方法通過交叉驗證的方式執行 rfe,以此來選擇最佳數量的特徵:對於乙個數量為 d 的特徵集合,它的所有子集的個數是 2d−
12^d-1
2d−1
。例如 d = 3 時,子集個數為 23−
1=72^3-1=7
23−1=7
。舉個例子,特徵集為 ,那麼其所有特徵子集為 、、、、、、。
rfe 找出所有的特徵子集後,分別計算所有特徵子集的驗證誤差,選擇誤差最小的特徵子集作為挑選的特徵。
【**實現】:
from sklearn.feature_selection import rfecv
rfecv = rfecv(estimator=decisiontreeclassifier())
rfecv.fit(data_iris, target_iris)
print
(rfecv.support_)
# 輸出
array(
[false
,false
,true
,true
])
lvw 是乙個典型的包裹式特徵選擇方法,它在拉斯維加斯(las vegas method)框架下使用隨機策略來進行子集搜尋,並以最終分類器的誤差為特徵子集評價準則。
【演算法】:
初始化誤差 e 為正無窮,d = |a|,a* = a,t = 0;
進入迴圈,迴圈停止條件為 while t < t;
隨機產生特徵子集 a』,設定 d』 = |a』|;
選擇特徵子集對應部分的資料集 da′
d^da
′,使用交叉驗證法來估計學習器 σ
\varsigma
σ 的誤差。誤差是特徵子集 a』 上的誤差,若它比當前特徵子集 a 上的誤差更小,或誤差相當但 a』 中包含的特徵數更少,則執行(a),否則執行(b)。
輸出特徵子集 a*。
【注意】:由於 lvw 演算法中特徵子集搜尋採用了隨機策略,而每次特徵子集評價都需要訓練學習器,計算開銷很大,因此演算法設定了停止條件控制引數 t。然而,整個 lvw 演算法是基於拉斯維加斯方法框架,若初始特徵數很多(即 |a| 很大)、t 設定較大,則演算法可能執行很長時間都達不到停止條件。換言之,若有執行時間限制,則有可能給不出解。
另外還有乙個經典的演算法——蒙特卡羅方法。這兩個以著名賭城名字命名的隨機化方法的主要區別是:若有時間限制,則拉斯維加斯方法或者給出滿足要求的解,或者不給出解;而蒙特卡羅方法一定會給出解,雖然給出的解未必滿足要求;若無時間限制,則兩者都能給出滿足要求的解。
特徵選擇 單變數特徵選擇
1.selectkbest可以依據相關性對特徵進行選擇,保留k個評分最高的特徵。方差分析 分類問題使用f classif,回歸問題使用f regression。f classif 分類任務 跟目標的分類,將樣本劃分成n個子集,s1,s2,sn,我們希望每個子集的均值 1,2,n不相等。我們假設h0 ...
模型選擇與特徵選擇
模型選擇 對備選的m個模型 a1,a2,a3,am 分別計算每個模型的誤差 可以用所有樣本訓練誤差或者k重交叉檢驗 k一般取10,k越大對資料的利用率越高 得到的誤差,總之用一種手段評判模型的好壞 然後選擇其中最好的乙個。特徵選擇 1 前向搜尋 設定初始特徵集為空,然後逐步新增特徵,如選擇加入後能使...
特徵選擇概述
維基百科定義 在機器學習和統計學中,特徵選擇 英語 feature selection 也被稱為變數選擇 屬性選擇或變數子集選擇。它是指 為了構建模型而選擇相關特徵 即屬性 指標 子集的過程。特徵選擇的目標是尋找最優特徵子集。特徵選擇能剔除不相關 irrelevant 或冗餘 redundant 的...