机器学习 特征选择(过滤法 封装法 嵌入法)
特征选择
在机器学习工程中,特征工程才是最重要,特征决定着算法的上限,特征工程中最为重要和最为基础的两种技术,就是特征选择和特征降维。特征选择和特征降维的目的很简单,就是选择出或变换出更优的特征,从而更利于我们学习算法的学习。
这特征选择的目的和特征降维的目的类似,但是特征选择和特征降维具有本质的区别,特征降维的主要特点是通过一个数学变换进行降维,而特征选择就是从众多特征中剔除不重要的特征,从而保留重要的特征。虽然简单粗暴,但是极其容易实现,并易于使用,所以在工程中特征选择的使用频率要高于特征降维。下面给大家说一下特征选择。
通常来说,我们需要从两点来考虑:
- 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
- 特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除移除低方差法外,本文介绍的其他方法均从相关性考虑。
根据不同的形式,我们可以将特征选择分为三种:
- 过滤法(Filter):按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
- 封装法(Wrapper):根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
- 嵌入法(Embedded):先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。
过滤法(Filter)
方差选择法:计算各个特征方差,选择方差大于阈值的特征。当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用。可以把它作为特征选择的预处理,先去掉那些取值变化小的特征,然后再从接下来提到的的特征选择方法中选择合适的进行进一步的特征选择。可以从from sklearn.feature_selection import VarianceThreshold 使用这个方法。
相关系数法:计算各个特征的Pearson相关系数 (对于回归问题(y连续)),前阵子写的文章介绍这些系数和python代码实现。 https://blog.csdn.net/weixin_43172660/article/details/83960665
卡方(Chi2)检验:就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小**(对于分类问题(y离散)),卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合。可以从from sklearn.feature_selection import chi2**使用这个方法。下面介绍一个例子,从4个特征里面筛选出两个最重要的特征。
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
iris = load_iris()
X, y = iris.data, iris.target
X.shape
(150, 4)
#移除得分前 k 名以外的所有特征(取top k)
X_new = SelectKBest(chi2, k=2).fit_transform(X, y)
X_new.shape
(150, 2)
- 互信息法:计算各个特征的信息增益
以上就是一些常用的过滤法,对于过滤法,优点: 快速, 只需要基础统计知识。缺点:特征之间的组合效应难以挖掘。
封装法(Wrapper)
- 递归消除特征法:递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,移除平方值最小的那个序号i对应的特征,再基于新的特征集进行下一轮训练。以此类推,直到剩下的特征数满足我们的要求为止。下面是一篇具体实现的文章:https://blog.csdn.net/fontthrone/article/details/79004874
优点: 直接面向算法优化, 不需要太多知识。缺点: 庞大的搜索空间, 需要定义启发式策略。
嵌入法(Embedded)
- 使用带惩罚项的基模型进行特征选择:比如LR加入正则。通过L1正则项来选择特征:L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过L2正则方法交叉检验。
from sklearn.svm import LinearSVC
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectFromModel
iris = load_iris()
X, y = iris.data, iris.target
X.shape
(150, 4)
lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y)
model = SelectFromModel(lsvc, prefit=True)
X_new = model.transform(X)
X_new.shape
(150, 3)
- 树模型的特征选择(随机森林、决策树):训练能够对特征打分的预选模型:RandomForest和Logistic Regression等都能对模型的特征打分,通过打分获得相关性后再训练最终模型。
from sklearn.ensemble import ExtraTreesClassifierfrom sklearn.datasets import load_irisfrom sklearn.feature_selection import SelectFromModeliris = load_iris()X, y = iris.data, iris.targetX.shape(150, 4)clf = ExtraTreesClassifier()clf = clf.fit(X, y)clf.feature_importances_ array([ 0.04..., 0.05..., 0.4..., 0.4...])model = SelectFromModel(clf, prefit=True)X_new = model.transform(X)X_new.shape (150, 2)
优点:效果最好速度最快,模式单调,快速并且效果明显。缺点:但是如何参数设置, 需要深厚的背景知识。
总结
各个方法有各个的特点,具体选用哪个方法,需要我们多进行尝试!
机器学习 特征选择(过滤法 封装法 嵌入法)相关推荐
- 特征选择—过滤法(Filter)、嵌入法(Embedded)和包装法(Wrapper)
一.过滤法(Filter) 目的:在维持算法表现的前提下,帮助算法们降低计算成本 特点:独立操作,不与后续分类(或者回归)模型相关 过程: 目标对象:需要遍历特征或升维的算法.最近邻算法KNN,支持向 ...
- 特征选择过滤法之方差选择、双样本t检验、方差分析、相关系数法、卡方检验、互信息法
特征选择过滤法之方差选择.双样本t检验.方差分析.相关系数法.卡方检验.互信息法 目录
- 机器学习特征选择方法
文章目录 前言 特征选择 过滤法 Pearson系数 卡方检验 互信息和最大信息系数 距离相关系数 方差选择法 包装法 嵌入法 总结 前言 最近在看吴恩达的深度学习机器学习课程.地址:deeplear ...
- 关于机器学习特征选择的方法总结
机器学习特征选择的方法总结 1.特征选择的重要性 随着深度学习的发展, 大大缩减了特征提取和设计的任务. 不过, 特征工程依然是各种机器学习应用领域的重要组成部分.其中对于特征选择(排序)的研究对于数 ...
- 机器学习 特征选择篇——python实现MIC(最大信息系数)计算
机器学习 特征选择篇--python实现MIC(最大信息系数)计算 摘要 python实现代码 计算实例 摘要 MIC(最大信息系数) 可以检测变量之间的非线性相关性,常用于特征工程中的特征选择,即通 ...
- python分类预测降低准确率_十分钟掌握python机器学习特征选择
十分钟掌握python机器学习特征选择-1.jpg (33.2 KB, 下载次数: 0) 2018-6-26 23:01 上传 在机器学习中,特征选择是实践中的一步, 帮你在所有特征中选择对结果贡献最 ...
- 机器学习 | 朴素贝叶斯法知识总结
机器学习 | 朴素贝叶斯法理论知识 贝叶斯决策论是概率框架下实施决策的基本方法.对分类任务来说,在所有相关概率都已知的理想情况下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记.朴素贝 ...
- 机器学习模型调优方法(过拟合、欠拟合、泛化误差、集成学习)
机器学习模型调优方法 过拟合和欠拟合 降低过拟合风险的方法 降低欠拟合风险的方法 泛化误差.偏差和方差 泛化误差 偏差和误差 模型评估 Holdout检验 交叉检验 自助法 集成学习 Boosting ...
- 特征选择(过滤法、包装法、嵌入法)
文章目录 Filter过滤式方法 方差选择法 相关系数法 卡方检验 互信息法和最大信息系数Mutual information and maximal information coefficient ...
- 特征选择过滤法-方差过滤、F检验、互信息法
过滤法 过滤法通常用作预处理步骤,特征选择完全独立于任何机器学习算法.它是根据各种统计检验分数和相关性指标来选择特征. 全部特征--->最佳特征子集--->算法---> ...
最新文章
- 买了一个软件测试就业班课程,不知道值不值
- springboot+swagger传递参数的几种格式
- mapreduce 算法_MapReduce算法–了解数据联接第二部分
- 解决android混淆编译出现Proguard returned with error code 1和文件名、目录名或卷标语法不正确错误...
- Android攻略--单位转化器UC--Units Converter(学习笔记)
- Dovecot 邮件假删除、回收站功能 (使用lazy-expunge插件)
- html设置网页字体大小,CSS根据用户需求设置网页字体大小
- Qt:warning: control reaches end of non-void function
- 三菱化学控股公司:关于代表执行董事的人事变动通知
- 网上赚钱怎么赚?锁定一个项目,才是赚钱的王道!
- 两个ip linux,教你ipconfig有两个ip地址的解决方法
- 投票动态代理proxy案例(java)
- 浅谈ACX带通滤波器应用
- 什么是 Linux ?什么是操作系统
- Altium Designer 10 下载和安装破解教程
- Android Data Binding 详细介绍与使用
- DXO 做了哪些测试?
- JS之父再谈JS历史(一)
- 代理自动配置文件PAC的使用方法
- 工简教育:消防工程师证书的用途