【数据竞赛】懒人特征筛选算法!
作者:杰少
Kaggle競賽知識點--RFE!
簡 介
Recursive Feature Elimination(RFE)算法是數(shù)據(jù)競賽中最為流行的特征篩選方案之一,和我們平時在做try and error的思路相似:
每次我們從數(shù)據(jù)集中找到最不重要的特征,然后將其刪除,再基于新數(shù)據(jù)集重新訓練,重新篩選......
因而非常多的數(shù)據(jù)科學家都會推薦大家使用其作為非常強的Baseline。
RFE是一種wrapper類型的特征篩選算法,也就是說:
我們給定一個機器學習算法,該機器學習算法被RFE包裹,然后一起做特征選擇。
因為RFE的使用需要同時輸入模型以及保留的特征數(shù),但是保留多少的特征是一個未知的事情,較難控制,這個時候我們需要用到RFECV,一種結合了交叉驗證以及RFE的方案,該方案能自動篩選出保留的特征個數(shù),在實踐中效果也非常的不錯。
本文就重點介紹RFE以及REFCV特征篩選算法。
Recursive Feature Elimination
1. RFE
遞歸特征消除(RFE)方法的工作步驟為:
輸入用于特征篩選的模型以及需要保留的特征數(shù);
對指定的模型使用所有的特征進行訓練;
依據(jù)模型給出的特征重要性,刪除最不重要的少數(shù)幾個特征;
特征一般是按照模型輸出的特征重要性排序的;
將剩余的特征重新輸入指定模型進行訓練,刪除最不重要的少數(shù)幾個特征,依次類推,直至最后我們的特征數(shù)目小于等于我們要保留的數(shù)目之后停止。
2.RFECV
RFE方法使用所有數(shù)據(jù)進行訓練,再依據(jù)模型給出特征重要性進行特征的篩選,之后再依據(jù)篩選之后的數(shù)據(jù)重新訓練模型,再篩選,直到剩下的特征數(shù)達到我們設定的閾值時就停止,這么做受到一個非常大的限制:
保留的特征數(shù)需要預先人為設定,但很多時候我們并不知道需要保留多少特征;
所以最終我們得到的結果往往是次優(yōu)的。為了緩解該問題,我們將交叉策略與RFE進行結合;我們通過計算在不同特征數(shù)時模型的交叉分數(shù),然后選擇交叉分數(shù)最好的特征數(shù)進行輸出。
代 碼
1. 基于RFC的特征選擇
#?!pip?install?yellowbrick from?yellowbrick.datasets?import?load_credit? import?numpy?as?np from?numpy?import?mean from?numpy?import?std? from?sklearn.model_selection?import?cross_val_score from?sklearn.model_selection?import?RepeatedStratifiedKFold from?sklearn.feature_selection?import?RFECV,RFE from?sklearn.pipeline?import?Pipeline from?sklearn.preprocessing?import?MinMaxScaler,StandardScaler from?sklearn.linear_model?import?LogisticRegression? from?sklearn.tree?import?DecisionTreeClassifier import?pandas?as?pd #?1.構建數(shù)據(jù)集 X,?y?=?load_credit()? columns?=?X.columns X?=?X[:5000] X?=?StandardScaler().fit_transform(X) y?=?y[:5000]?輸出每個特征的排名
輸出保留的特征名
2.基于REFCV的特征選擇
輸出我們每個特征的排名
輸出保留的特征名
適用問題
Recursive Feature Elimination(RFE)算法是Wrapper類型的特征篩選算法,我們只需要簡單的改變輸入模型就可以得到篩選的特征,非常簡單易懂,RFE幾乎是適用于目前見到的90%的問題的,可以作為特征篩選的一個重要的Baseline。
因為RFE算法需要每次都重新訓練進行特征篩選,當數(shù)據(jù)集非常大的時候,時間成本非常大,如果使用RFECV則還需要進行N折的交叉驗證,帶來的時間成本會變?yōu)樵鹊膸妆?#xff0c;一般建議充分考慮計算資源以及數(shù)據(jù)大小再使用。
參考文獻
Recursive Feature Elimination (RFE) for Feature Selection in Python
Recursive Feature Elimination
Feature Ranking RFE, Random Forest, linear models
Recursive Feature Elimination (RFE) example
sklearn.feature_selection.RFECV
sklearn.feature_selection.RFE
總結
以上是生活随笔為你收集整理的【数据竞赛】懒人特征筛选算法!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【图网络】如何用Python实现算法:规
- 下一篇: win11文件夹怎么放到文件栏