特征选择是特征工程中的重要问题(另一个重要的问题是特征提取),坊间常说:**数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。**由此可见,特征工程尤其是特征选择在机器学习中占有相当重要的地位。通常而言,特征选择是指选择获得相应模型和算法最好性能的特征集,
使用特征选择通常有两个原因:
1。减少特征数量,减少过度拟合并改进模型的泛化。
2.更好地理解特征及其与响应变量的关系。

这两个目标通常彼此不一致,因此需要不同的方法:取决于手头的数据,有利于目标(1)的特征选择方法不一定对目标(2)有利,反之亦然。然而,似乎经常发生的事情是人们不加选择地使用他们喜欢的方法(或者从他们选择的工具中最方便地获得的任何方法),尤其是更适合于(1)实现(2)的方法

工程上常用的方法有以下:

  1. 计算每一个特征与响应变量的相关性:工程上常用的手段有计算皮尔逊系数和互信息系数,皮尔逊系数只能衡量线性相关性而互信息系数能够很好地度量各种相关性,但是计算相对复杂一些,好在很多toolkit里边都包含了这个工具(如sklearn的MINE),得到相关性之后就可以排序选择特征了;
  2. 构建单个特征的模型,通过模型的准确性为特征排序,借此来选择特征,另外,记得JMLR’03上有一篇论文介绍了一种基于决策树的特征选择方法,本质上是等价的。当选择到了目标特征之后,再用来训练最终的模型;
  3. 通过L1正则项来选择特征:L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过L2正则方法交叉检验;
  4. 训练能够对特征打分的预选模型:RandomForest和Logistic Regression等都能对模型的特征打分,通过打分获得相关性后再训练最终模型;
  5. 通过特征组合后再来选择特征:如对用户id和用户特征最组合来获得较大的特征集再来选择特征,这种做法在推荐系统和广告系统中比较常见,这也是所谓亿级甚至十亿级特征的主要来源,原因是用户数据比较稀疏,组合特征能够同时兼顾全局模型和个性化模型,这个问题有机会可以展开讲。
  6. 通过深度学习来进行特征选择:目前这种手段正在随着深度学习的流行而成为一种手段,尤其是在计算机视觉领域,原因是深度学习具有自动学习特征的能力,这也是深度学习又叫unsupervised feature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。
  7. 整体上来说,特征选择是一个既有学术价值又有工程价值的问题,目前在研究领域也比较热,值得所有做机器学习的朋友重视

参考:https://www.zhihu.com/question/28641663?sort=created

特征选择的工程方法?相关推荐

  1. 机器学习中,有哪些特征选择的工程方法?

    机器学习中,有哪些特征选择的工程方法? 数据和特征决定了机器学习的上限,而模型和算法调参只是逼近这个上限而已. 0,特征本身是否具有基础的表征能力或者判别性,例如方差筛选法.方差是衡量一个变量的离散程 ...

  2. 一些改进模型速度/精度的工程方法

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:Captain Jack https://zhuanlan.z ...

  3. 《基于场景的工程方法》作者问答录

    <基于场景的工程方法>(Scenario-Focused Engineering,本书中文版正在翻译中)一书描述了在开发与交付基于软件的产品时,一种以客户为中心的精益与敏捷方法.本书所描述 ...

  4. 软件产品线工程方法:如何在OpenExpressApp做客户化工作

    很多产品都会遇到客户化问题,也就是在通用产品之上针对一些客户会进行配置和定制工作,也就是处理721问题(为了简单描述这类问题,我们简单的使用721术语,7为通用功能,2为可变功能,3为个性功能,这里7 ...

  5. 测试分析设计工程方法

    产品的测试分析设计包括:测试需求分析.测试方案设计.测试用例实现,这三个阶段.测试分析设计工程方法是针对于前两个阶段的,现实中往往需要灵活运用多个工程方法,重点需要掌握各个工程方法的思路,在实践中不断 ...

  6. VC6命令行编译工程方法

    VC6命令行编译工程方法 昨天下载一个界面库wxWidgets,编译里面的库很痛苦,有好几个工程,我的在一边等待,痛苦!!于是上网找到命令行编译的方法,可以写一个批处理文件,呵呵,想起以前经理编译工程 ...

  7. Lambda 架构:强大的数据工程方法

    在大数据和分析领域,高效且有效地处理和管理大量数据是一项关键挑战.数据工程师在设计和实施处理此类数据洪流的解决方案方面发挥着关键作用.近年来越来越流行的一种方法是 Lambda 架构,这是一个强大的框 ...

  8. (转)VC6.0同时打开两个工程方法

    Win7系统:在Win7操作系统下,如果是以Administrator登陆,则VC6.0打开工程文件的时候,不能同时打开多个工程文件,后打开的工程会将前一个工程close掉,这样,VC6.0只能出现一 ...

  9. 常用特征工程方法总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 摘要:对于数据挖掘项目,本文将学习应该从哪些角度做特征工程?从哪些 ...

最新文章

  1. 灰度图像--图像分割 Scharr算子
  2. 用eclipse阅读编辑android和kernel,uboot的源代码
  3. [翻译]SQL Server 2005 Analysis Services性能指南
  4. Hadoop的HA机制
  5. pyqt 取鼠标处文字_爱剪辑:炫彩的动态标题文字特效,这招让视频片头LOGO更酷炫...
  6. seo代码优化工具_企业seo该怎么优化
  7. 用K2设计一个工作流程
  8. [转]关于jQuery性能优化
  9. foreman架构的引入4-安装Foreman1.6.3架构(foreman与puppetmaster分离)
  10. Codeforces Round #568 (Div. 2)A
  11. LQ-1600K打印机色带传动故障分析
  12. 最新地形测量全套实习任务指导
  13. Android平台语言支持状态(MTK6589)
  14. 微信小程序 px和rpx px和pt 深度解析
  15. IIS上发布网站遇到的问题总结
  16. 漫画:程序员找工作—外包公司
  17. 明日传奇第三季/全集Legends of Tomorrow迅雷下载
  18. python 问题Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER.
  19. 判断二维字符数组是否存在回文字符串例如:char a[] [10]={“asd“,“asa“,“werew“,“yuyu“}; 提示存在回文字符串,回文字符串对称
  20. eclipse写程序从hdfs上下载文件到本地报错:at org.apache.hadoop.util.Shell.runCommand

热门文章

  1. C# 设计模式 (一)
  2. Nginx配置优化解读
  3. SpringMVC:学习笔记(1)——理解MVC及快速入门
  4. 关于spring+springMVC+myBatis的一些基础配置以及整合
  5. C#中upd分包与发送,已经实现全部代码
  6. 查看eclipse使用的jre版本
  7. 使用 ADO 向数据库中存储一张图片
  8. Advice只有切面化之后才能显现出AOP的巨大优势
  9. c#中类的简单使用学习
  10. Q80:平坦着色(Flat Shading)和平滑着色(Smooth Shading)——“Q79:怎么用三角形网格(Triangle Mesh)细分曲面”(补充)