特征工程:数据科学家的秘密武器!

选文:Aileen 翻译:杨天朦,黄文畅 校对:姜范波,Aileen

导读:数据科学从业者们更倾向于选择用著名的算法来解决给定的问题。但仅仅靠算法并不能提供一个最优的解决方案,通过精心设计和选择的特征所建造的模型能够提供更好的结果。此篇作者总结了很多常见且有效的特征转化的方法,有些方法附有简单说明。具体的应用方法可以在网络上搜索公开信息。

“任何一个有智力的笨蛋都可以把事情搞得更大,更复杂,也更激烈。往相反的方向前进则需要一点天分,以及很大的勇气。” –阿尔伯特·爱因斯坦

复杂的模型不易解释,难以调整。简单的算法配合更好的特征或者更多的数据,比脆弱的假设配合复杂的算法会得到更好的结果。

◆ ◆

什么是好?

好的特征代表了灵活性、更简单的模型和更好的结果,不相关的特征则会影响模型的泛化性。因此特征选择和特征工程并非是互相排斥的,而是相辅相成的。有效的特征工程能够帮助我们提炼数据的代表。接着问题就来了,什么才是好的代表?

代表的好坏取决于里面所包含信息的好坏。熵(Entropy,熵值越高,数据中所包含的信息越多),方差(Variance,方差越大,数据中所包含的信息越多),更好的分离映射(Projection for better separation,最高的方差所对应的映射包含更多得信息),特征对类别的关联(feature to class association),等。所有这些都解释了数据中所包含的信息。

特征工程是建模过程中很重要的一个步骤,但也很难实现自动化。它需要专业知识和很多数据的探索性分析。

◆ ◆

常见做法

1. 单一变量的基础转换:x, x^2,sqrt x ,log x, 缩放

2. 如果变量的分布是长尾的,应用Box-Cox转换(用log转换虽然快但不一定是一个好的选择)

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):

  • 执行聚类(clustering)并使用点和聚类中心的距离作为一个特征 主成分分析/奇异值分解 (PCA/SVD)

这是用来分析变量之间的相互关系和在信息损失最小的情况下执行降维的有效技术。

*找到透过数据中,拥有最大方差的轴。

*在下一个正交轴上重复该步骤,直到你用完了数据或维度。每个轴都代表着一个新特征。

37.稀疏编码(sparse coding)

选择基元:基于你能如何用一个基元来重建输入值和它有多稀疏来评估该基元;采取一些梯度步骤,以改进该评估。

  • 有效的稀疏编码算法
  • 深度自编码

38. 随机森林:训练一部分决策树:使用每个叶子作为一个特征

原文:https://www.linkedin.com/pulse/feature-engineering-data-scientists-secret-sauce-ashish-kumar

原文发布于微信公众号 - 大数据文摘(BigDataDigest)

原文发表时间:2016-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张宏顺的专栏

机器学习在HEVC 视频编码中的实践

本文是对HEVC CU深度快速选择方法的思考和实践,将机器学习引入到编码器优化上,是个较大胆的尝试,而且从效果来看,编码速度提升显著,且压缩性能下降不多,说明该...

1.5K30
来自专栏机器之心

入门 | 机器学习研究者必知的八个神经网络架构

395130
来自专栏机器学习算法与Python学习

你必须知道的神经网络基础,文末有福利!

人工神经网络表示一类机器学习的模型,最初是受到了哺乳动物中央神经系统研究的启发。网络由相互连接的分层组织的神经元组成,这些神经元在达到一定条件时就会互相交换信息...

7100
来自专栏ATYUN订阅号

RNN示例项目:详解使用RNN撰写专利摘要

我第一次尝试研究RNN时,我试图先学习LSTM和GRU之类的理论。在看了几天线性代数方程之后(头疼的要死),我在Python深度学习中发生了以下这段话:

20710
来自专栏CDA数据分析师

教你如何使用深度学习识别交通标志,准确度高达93%

原作者 Priya Dwivedi 编译 CDA 编译团队 本文为 CDA 数据分析师原创作品,转载需授权 自动驾驶已经迎来发展的热潮。自动驾驶车在行驶时,需...

84850
来自专栏PPV课数据科学社区

机器学习系列:(五)决策树——非线性回归与分类

决策树——非线性回归与分类 前面几章,我们介绍的模型都是广义线性模型,基本方法都是通过联接方程构建解释变量与若干响应变量的关联关系。我们用多元线性回归解决回归问...

41560
来自专栏Jayden的专栏

机器学习的一些术语

卷积神经网络最初是用来处理多维数组数据,比如,一张由三个2D数组组成、包含三个彩色通道像素强度的彩色图像。大量的数据模式都是多个数组形式:1D用来表示信号和序列...

16600
来自专栏深度学习自然语言处理

近期有哪些值得读的QA论文?

■ 论文 | Making Neural QA as Simple as Possible but not Simpler

21630
来自专栏数据派THU

基于多篇经典论文综述Attention模型方法(附源码)

先简单谈一谈 attention 模型的引入。以基于 seq2seq 模型的机器翻译为例,如果 decoder 只用 encoder 最后一个时刻输出的 hid...

31350
来自专栏人工智能头条

李理:自动梯度求解 反向传播算法的另外一种视角

20340

扫码关注云+社区

领取腾讯云代金券