1. 线性回归中的特征选择:Lasso、Rdige回归
对线性回归进行正则化,即在线性回归的基本公式后面加上对于线性回归系数的惩戒因子。
这个意义就是不放任每个特征值参与线性回归的模型计算,即防止过拟合。是一个tradeoff的过程。
按范数1、2型,分为了Lasso和Ridge。
如使用Lasso进行特征值选择,则需要找到适合的Lambda值。
在python中一般先拟定lambda的值,然后用数据集通过k-fold交叉验证进行确定。
然后依据图中反映的Lasso,可以在最优的Lambda值的位置可以将特征划分为系数0和系数不为0的两个特征集,从而筛选出主要特征。
2. random forest的特征选择
首先要知道RF的模型的基本原理。
RF模型的基本原理是,在bagging(bootstrap aggregation)的原理上。
一、用重抽样方法(bootstrap)选出多组样本;
二、随机选择一个特征集合的子集,各自生成归类树,找出每一组重抽样样本中,最合适的生成方法;
三、将每组样本中的划分方法用到原数据集中,找出不纯度,即误差最小的划分方法。
可以看出RF自带选择特征集合的子集的功能。
因此在python中,可以从fit到的RF模型中,通过feature_improtances_导出按特征的重要程度排列的特征集合。
由此可以选择排名靠前的特征,从而实现特征选择。
3. RFE(Recursive feature elimination),递归特征消除
顾名思义,用选定的模型去fit数据集。
RFE的原理是通过每次淘汰最重要的特征,在此递归,然后再剔除次之重要的特征,如此反复得到特征按重要程度排列的list。
而鉴别特征是否重要,我个人理解:
对于线性回归,观察p值,看p值最小,即最不可能为0的特征,也就是最有关联的特征值;
对于Ramdom forest,则像上文阐述过的那样,应该是通过特征在各子集中出现的count,来判定重要程度。etc
4. F_regression
(一句话就能讲清楚: 每个特征 X 单独拎出来和 Y 计算相关系数, 并排序. 特征选择就是基于 X 和 Y 的相关程度.
当然实际操作还是分了三步:
计算相关系数;
转化为 F score;
计算 p 值;
最后排名是根据 F score, 可以选择输出 p 值.)——转自https://www.h3399.cn/201808/609067.html
5. VarianceThreshold
通过特征的方差来提取特征,为小于设定阈值的特征被剔除。