? ? 1.1 Wrapper包裝法
? ? ? ? 包裝法也是一個(gè)特征選擇和算法訓(xùn)練同時(shí)進(jìn)行的方法,與嵌入法十分相似,它也還一個(gè)依賴(lài)于算法自身的選擇,比如coef_和feature_importances_屬性來(lái)完成特征選擇,不同的是,我們往往使用一個(gè)目標(biāo)函數(shù)作為黑盒來(lái)幫助我們選取特征,而不是自己輸入某個(gè)評(píng)估指標(biāo)或統(tǒng)計(jì)量的閾值。包裝法在初始特征集上訓(xùn)練評(píng)估器,并且通過(guò)coef_和feature_importances_屬性獲得每個(gè)特征的重要性,然后,從當(dāng)前的一組特征中修剪最不重要的特征,接著在修剪過(guò)的集合上遞歸地重復(fù)該過(guò)程,直到最終得到所需數(shù)量的特征。區(qū)別于過(guò)濾法和嵌入法的易車(chē)訓(xùn)練解決所有問(wèn)題,包裝法需要使用特征子集進(jìn)行多次訓(xùn)練,因此他所需要的計(jì)算成本最高。

? ??????注意,在這個(gè)圖中的“算法”,指的不是我們最終用來(lái)導(dǎo)入數(shù)據(jù)的分類(lèi)或回歸算法,而是專(zhuān)業(yè)的數(shù)據(jù)挖掘算法,即我們的目標(biāo)函數(shù)。這些數(shù)據(jù)挖掘算法的核心功能就是選取最佳特征子集。
? ? ? ? 最經(jīng)典的目標(biāo)函數(shù)是遞歸特征消除法(Recursive feature elimination,簡(jiǎn)寫(xiě)為RFE),它是一種貪婪的優(yōu)化算法,旨在找到性能最優(yōu)的特征子集,它反復(fù)創(chuàng)建模型,并在每次迭代時(shí)保留最佳特征或是剔除最差特征,下一次迭代時(shí),它會(huì)使用上一次建模中沒(méi)有被選中特征來(lái)構(gòu)建下一個(gè)模型,直到所有的特征都耗盡為止。然后,它根據(jù)子集保留或是剔除特征的順序來(lái)對(duì)特征進(jìn)行排名,最后選出一個(gè)最佳子集。包裝法的效果是所有特征選擇方法中最利于提升模型表現(xiàn)的,它可以使用很少的特征達(dá)到很優(yōu)秀的效果。除此之外,在特征數(shù)目相同時(shí),包裝法和嵌入法的效果能夠匹敵,不過(guò)它比嵌入法算得更見(jiàn)緩慢,所以也不適用于太大型的數(shù)據(jù)。相比之下,包裝法是最能保證模型效果的特征選擇方法
? ? 1.2 feature_selection.RFE,遞歸特征消除法
????class sklearn.feature_selection.RFE (estimator, n_features_to_select=None, step=1, verbose=0)
????????參數(shù)estimator是需要填寫(xiě)的實(shí)例化后的評(píng)估器,n_features_to_select是想要選擇的特征個(gè)數(shù),step表示每次迭代中希望移除的特征個(gè)數(shù)。除此之外,RFE類(lèi)有兩個(gè)很重要的屬性, .support_:返回所有的特征的是否最后被選中的布爾矩陣,以及.ranking_返回特征的按數(shù)次迭代中綜合重要性的排名。類(lèi)feature_selection.RFECV會(huì)在交叉驗(yàn)證循環(huán)中執(zhí)行RFE以找到最佳數(shù)量的特征,增加參數(shù)cv,其他用法都和RFE一模一樣。

? ? 1.3 特征選擇總結(jié)
? ??????經(jīng)驗(yàn)來(lái)說(shuō),過(guò)濾法更快速,但更粗糙。包裝法和嵌入法更精確,比較適合具體到算法去調(diào)整,但計(jì)算量比較大,運(yùn)行時(shí)間長(zhǎng)。當(dāng)數(shù)據(jù)量很大的時(shí)候,優(yōu)先使用方差過(guò)濾和互信息法調(diào)整,再上其他特征選擇方法。使用邏輯回歸時(shí),優(yōu)先使用嵌入法。使用支持向量機(jī)時(shí),優(yōu)先使用包裝法。迷茫的時(shí)候,從過(guò)濾法走起,看具體數(shù)據(jù)具體分析。其實(shí)特征選擇只是特征工程中的第一步。真正的高手,往往使用特征創(chuàng)造或特征提取來(lái)尋找高級(jí)特征。在Kaggle之類(lèi)的算法競(jìng)賽中,很多高分團(tuán)隊(duì)都是在高級(jí)特征上做文章,而這是比調(diào)參和特征選擇更難的,提升算法表現(xiàn)的高深方法。