特征工程(Feature Engineering)
一、什么是特征工程?
"Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data."
简而言之,就是将原始数据转换为模型更容易理解的数据类型,从而提高模型的预测准确率。我认为包含三个方面:特征处理、特征选择、特征生成。
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程尤其是特征选择在机器学习中占有相当重要的地位。
二、特征工程的作用?
1)Better features means flexibility。伸缩性比较好,可以让你使用不太复杂的模型,运行速度更快,更容易理解,更容易维护。
2)Better features means simpler models. 就是说你即使没有选择最正确的模型和最优化的参数,依然能得到相当满意的效果。省去了大量去研究模型的时间。
3)Better features means better results。
为什么特征工程能产生这么好的效果呢?我从Jason Brownlee那里得到了启发,因为特征工程把特征之间、特征与目标变量之间的潜在关系统统挖掘并完整地展示出来了。所以,对模型来讲就很容易理解了,效果自然不错了!相当于你把一个难题已经分解的很透彻了,即使小学生也能很好的理解并给出答案了。
Jason Brownlee的主页:http://machinelearningmastery.com
三、特征工程的处理过程。
- Remove unnecessary features-去掉无用的特征
- Remove redundant features-去掉冗余的特征,如:共线特征
- Create new features-创造新特征
1)Combine existing features
2)Transform features
3)Use features from the context
4) Integrate external sources
- Modify feature types
e.g. from binary to numeric
- Modify feature values-修改特征的值,如特征的极大值、异常值、缺失值
四、特征工程举例
This is might be a foreign idea, so here are three examples:
- Categorical: You have a categorical attribute that had the values [red, green blue], you could split that into 3 binary attributes of red, green and blue and give each instance a 1 or 0 value for each.
- Real: You have a real valued quantity that has values ranging from 0 to 1000. You could create 10 binary attributes, each representing a bin of values (0-99 for bin 1, 100-199 for bin 2, etc.) and assign each instance a binary value (1/0) for the bins.
常见做法 :
1. 单一变量的基础转换:x, x^2,sqrt x ,log x, 缩放
2. 如果变量的分布是长尾的,应用Box-Cox转换,包括:对数转换、平方根转换、倒数转换、平方根后再取倒数、幂转换。
3. 你也可以检查残差(Residuals)或是log-odds(针对线性模型),分析是否是强非线性。
4. 对于基数比较大的数据,对于分类变量,创造一个表示每种类别发生频率的特征是很有用的。当然,也可以用占总量的比率或是百分比来表示这些类别。
5. 对变量的每一个可能取值,估计目标变量的平均数,用结果当做创造的特征。
6. 创造一个有目标变量比率的特征。
7. 选出最重要的两个变量,并计算他们相互之间、以及与其它变量之间的二阶交叉作用并放入模型中,比较由此产生的模型结果与最初的线性模型的结果。
8. 如果你想要的解决方案更平滑,你可以应用径向基函数核(Kadial Basis function kernel) 。这就相当应用一个平滑转换。
9. 如果你觉得你需要协变量(Covariates ),你可以应用多项式核,或者明确添加它们的协变量。
10.高基数特征:在预处理阶段,通过out-of-fold平均转换成数值变量。
两个变量组合而成的特征转换
以下为一些常见的由两个变量组合而成的特征转换:
11.加法转换
12. 相对于基数的差值
13. 乘法转换:交互效果
14. 除法转换:缩放/归一化
15. 对数值型特征设定阈值以获取其布尔值
16.笛卡儿积变换
17. 特征向量积:所有特征的向量积
试想一个特征A,它有两个可能的值:{ A1,A2 } 。假设B是一个具有两种可能性{ B1,B2 }的另一特征。那么, A和B之间的向量积(我们称之为AB)将采取以下值之一: { (A1 , B1),(A1 , B2),(A2 , B1),(A2 , B2) } 。你基本上可以赋予这些”组合”你喜欢的任何名称。但要记住,每个组合都表示一个由A和B的相应值包含的信息之间的协同作用。
18. 归一化/数据标准化变换
在机器学习算法中提出的隐含假设(对朴素贝叶斯而言,在某种程度上是显性假设)之一是:该特征服从正态分布。不过,有时我们可能会发现该特征不遵循正态分布,而是对数正态分布。那么在这种情况下常见的手段之一是取特征值的对数(即表现出对数正态分布的那些特征值),使得它展现出正态分布。如果在使用中的算法做出了正态分布的隐含/显性假设的话,则这种转化,即将一个服从对数正态分布的特征转化为正态分布,可以帮助改善该算法的性能。
19. 分位数分级转换 (Quantile Binning Transformation)
20. 白化数据 (Whitening the Data)
21. 窗体压缩化 (Windowing)
如果所有的点都分布在时间轴上,那么在同一个窗口里的先前的点往往包含丰富的信息。
22. 最小-最大归一化:不一定保留顺序
23. S型/正切/对数转换 (Sigmoid / Tanh / Log Transformations)
24. 用特殊方法处理0:对于计数特征有可能很重要
25. 去相关性/转换变量
26. 重构数量
27.将不频繁的分类变量划分到新的/独立的类别中。
28.按顺序应用一系列转换。
29.独特的编码方式
30.靶值率编码 (Target rate encoding)
31.哈希技巧 (Hash Trick)
常见的多个变量的特征转换
以下为一些常见的多个变量的特征转换:
32.主成分分析 (PCA)
33. 模型集成
34. 压缩感知 (Compressed Sensing)
35.“猜平均值”或是“猜通过变量X分段后的平均值”
36. 处理映射(hack projection):
特征工程(Feature Engineering)的更多相关文章
- 机器学习-特征工程-Feature generation 和 Feature selection
概述:上节咱们说了特征工程是机器学习的一个核心内容.然后咱们已经学习了特征工程中的基础内容,分别是missing value handling和categorical data encoding的一些 ...
- 特征工程(Feature Enginnering)学习记要
最近学习特征工程(Feature Enginnering)的相关技术,主要包含两块:特征选取(Feature Selection)和特征抓取(Feature Extraction).这里记录一些要点 ...
- AI学习---特征工程【特征抽取、特征预处理、特征降维】
学习框架 特征工程(Feature Engineering) 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已 什么是特征工程: 帮助我们使得算法性能更好发挥性能而已 sklearn主 ...
- 想搞机器学习,不会特征工程?你TM逗我那!
原文:http://dataunion.org/20276.html 作者:JasonDing1354 引言 在之前学习机器学习技术中,很少关注特征工程(Feature Engineering),然而 ...
- 2022年Python顶级自动化特征工程框架⛵
作者:韩信子@ShowMeAI 机器学习实战系列:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/artic ...
- 使用sklearn做单机特征工程(Performing Feature Engineering Using sklearn)
本文转载自使用sklearn做单机特征工程 目录 目录 特征工程是什么 数据预处理 1 无量纲化 11 标准化 12 区间缩放法 13 标准化与归一化的区别 2 对定量特征二值化 3 对定性特征哑编码 ...
- 谷歌大规模机器学习:模型训练、特征工程和算法选择 (32PPT下载)
本文转自:http://mp.weixin.qq.com/s/Xe3g2OSkE3BpIC2wdt5J-A 谷歌大规模机器学习:模型训练.特征工程和算法选择 (32PPT下载) 2017-01-26 ...
- 特征工程 vs. 特征提取
“特征工程”这个华丽的术语,它以尽可能容易地使模型达到良好性能的方式,来确保你的预测因子被编码到模型中.例如,如果你有一个日期字段作为一个预测因子,并且它在周末与平日的响应上有着很大的不同,那么以这种 ...
- 《转发》特征工程——categorical特征 和 continuous特征
from http://breezedeus.github.io/2014/11/15/breezedeus-feature-processing.html 请您移步原文观看,本文只供自己学习使用 连 ...
随机推荐
- 将sublime添加到右键菜单
sublime text 添加到鼠标右键功能: 把以下内容复制并保存到文件,重命名为:sublime_addright.reg,然后双击就可以了. (注意:需要把下面代码中的Sublime的安装目录( ...
- docker中crontab无法运行
yum install -y crontabssed -ri 's/.*pam_loginuid.so/#&/' /etc/pam.d/crond vi /etc/pam.d/crond ...
- Visual C++中对运行时库的支持
原文地址:http://blog.csdn.net/wqvbjhc/article/details/6612099 一.什么是C运行时库 1)C运行时库就是 C run-time library,是 ...
- 【Python】python和json数据相互转换,json读取和写入,repr和eval()使用
python数据转换json 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import jso ...
- Qt快速入门学习笔记(基础篇)
本文基于Qter开源社区论坛版主yafeilinux编写的<Qt快速入门系列教程目录>,网址:http://bbs.qter.org/forum.php?mod=viewthread&am ...
- BZOJ 1022 小约翰的游戏(anti-sg)
这是个anti-sg问题,套用sj定理即可解. SJ定理 对于任意一个Anti-SG游戏,如果定义所有子游戏的SG值为0时游戏结束,先手必胜的条件: 1.游戏的SG值为0且所有子游戏SG值均不超过1. ...
- BZOJ4310 跳蚤(后缀数组+二分答案)
注意到答案一定是原串的子串,于是考虑造出SA,二分答案是第几小的子串.第k小子串很容易在SA上求出.之后计算使他成为最大子串至少要在几个位置切割,对每个字典序比答案大的后缀,找到所有合法切割位置(求l ...
- P1315 观光公交
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
- [Leetcode] powx n x的n次方
Implement pow(x, n). 题意:计算x的次方 思路:这题的思路和sqrt的类似,向二分靠近.例如求4^5,我们可以这样求:res=4.4*4^4.就是将每次在res的基础上乘以x本身, ...
- 【题解】Casting Spells LA 4975 UVa 1470 双倍回文 SDOI 2011 BZOJ 2342 Manacher
首先要吐槽LRJ,书上给的算法标签是“有难度,需要结合其他数据结构”,学完Manacher才发现几乎一裸题 题目的意思是问原串中有多少个wwRwwR这样的子串,其中wR表示w的反串 比较容易看出来,w ...