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

简介:



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


 ◆ 

什么是好?


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

 

代表的好坏取决于里面所包含信息的好坏。熵(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. 随机森林:训练一部分决策树:使用每个叶子作为一个特征


原文发布时间为:2016-08-15

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关文章
|
3月前
|
机器学习/深度学习 算法 数据挖掘
从零到精通:Scikit-learn在手,数据分析与机器学习模型评估不再难!
【10月更文挑战第4天】在数据科学领域,模型评估是连接理论与实践的桥梁,帮助我们理解模型在未知数据上的表现。对于初学者而言,众多评估指标和工具常令人困惑。幸运的是,Scikit-learn 这一强大的 Python 库使模型评估变得简单。本文通过问答形式,带你逐步掌握 Scikit-learn 的评估技巧。Scikit-learn 提供了丰富的工具,如交叉验证、评分函数(准确率、精确率、召回率、F1 分数)、混淆矩阵和 ROC 曲线等。
61 1
|
4月前
|
机器学习/深度学习 自然语言处理
机器学习查漏补缺
机器学习查漏补缺
|
6月前
|
机器学习/深度学习 自然语言处理 数据挖掘
机器学习不再是梦!PyTorch助你轻松驾驭复杂数据分析场景
【7月更文挑战第31天】机器学习已深深嵌入日常生活,从智能推荐到自动驾驶皆为其应用。PyTorch作为一个开源库,凭借简洁API、动态计算图及GPU加速能力,降低了学习门槛并提高了开发效率。通过一个使用PyTorch构建简单CNN识别MNIST手写数字的例子,展现了如何快速搭建神经网络。随着技能提升,开发者能运用PyTorch及其丰富的生态系统(如torchvision、torchtext和torchaudio)应对复杂场景,如自然语言处理和强化学习。掌握PyTorch,意味着掌握了数据时代的关键技能。
51 1
|
8月前
|
机器学习/深度学习 数据采集 数据可视化
基于数据挖掘与机器学习揭秘脱发主因
基于数据挖掘与机器学习揭秘脱发主因
|
机器学习/深度学习 自然语言处理 算法
浅显易懂的机器学习(三)—— 特征工程
本文讲述了将数据送入模型中需要做的一些基础的工作——特征工程
452 0
|
机器学习/深度学习 人工智能 自然语言处理
五个给机器学习和数据科学入门者的学习建议
我从没写过代码。 当人们发现我的作品,他们通常会私信并提问。我不一定知道所有的答案,但我会尽量回复。人们最常问的问题是:「该从哪开始?」,其次是:「我需要多少数学基础?」
136 0
|
机器学习/深度学习 编解码 人工智能
机器学习在ABR算法中的应用纵览
本文整理自LiveVideoStack线上分享第三季,第五期,由清华大学计算机系网络技术研究所博士生王莫为为大家介绍近些年ABR算法的发展,探讨基于机器学习的ABR算法的优劣势,并结合AiTrans比赛分析其在直播场景中的应用问题。
731 0
机器学习在ABR算法中的应用纵览
|
机器学习/深度学习 Python 算法
干货 | 五个给机器学习和数据科学入门者的学习建议
「我想学习机器学习和人工智能,该从哪开始呢?」 从这里开始。
3008 0
干货 | 五个给机器学习和数据科学入门者的学习建议
|
机器学习/深度学习 算法 数据挖掘
对数据科学家来说最重要的算法和统计模型
本文提供了工业中常用的关键算法和统计技术的概要,以及与这些技术相关的短缺资源。
18980 0
|
机器学习/深度学习 Kubernetes 测试技术
“机器学习还是很难用!”
机器学习仍然很难用,但情况开始有所改善了。