特征工程与表示学习:人工 vs 自动

1.相关概念

正因为数据表示的重要性,机器学习一般有两种思路来提升原始数据的表达:

  1. 特征学习(feature learning),又叫表示学习(representation learning)或者表征学习,一般指的是自动学习有用的数据特征
  2. 特征工程(feature engineering),主要指对于数据的人为处理提取,有时候也代指“洗数据”

不难看出,两者的主要区别在于前者是“学习的过程”,而后者被认为是一门“人为的工程”。用更加白话的方式来说,特征学习是从数据中自动抽取特征或者表示的方法,这个学习过程是模型自主的。而特征工程的过程是人为的对数据进行处理,得到我们认为的、适合后续模型使用的样式。根据这个思路,机器学习模型对于数据的处理可以被大致归类到两个方向:

1. 表示学习:模型自动对输入数据进行学习,得到更有利于使用的特征(*可能同时做出了预测)。代表的算法大致包括:

    • 深度学习,包括大部分常见的模型如CNN/RNN/DBN等
    • 某些无监督学习算法,如主成分分析(PCA)及自编码器(autoencoder)通过对数据转化而使得输入数据更有意义
    • 某些树模型可以自动的学习到数据中的特征并同时作出预测

2. 特征工程:模型依赖人为处理的数据特征,而模型的主要任务是预测,比如简单的线性回归期待良好的输入数据(如离散化后的数据)

总结:要想自动学习到数据的良好表达,就需要大量的数据。这个现象也解释了为什么「特征工程」往往在中小数据集上表现良好,而「表示学习」在大量复杂数据上更有用武之地。

---------------------------------页面分割线-------------------------------------

2.相关问题:

参考原文:https://www.zhihu.com/question/264417928/answer/283087276

1.是不是自动的特证抽取(表示学习)总是更好?

答案是不一定的:

1.在数据量不够的时候,自动特征抽取的方法往往不如人为的特征工程

2,当使用者对于数据和问题有深刻的理解时,人工的特征工裎注注效果更好。

同时也值得注意,表示字习的另一好处是高度抽象化的特征注往可以被应用于相关的领域上,这也是我们常说的迁移学习(transferlearning)的思路。比如有了大量猫的图片以后,不仅可以用于预测—个物体是不是猫,也可以用于将抽取到的特征再运用于其它类似的领域从而节省数据开销。

2.特征学习(表示学习),特证工程,特证选择,维度压缩之间有什么关系?

从某个角度来看,表示学习有"嵌入式的特征选择"(embeddedfeatureselection)的特性,其表示学习嵌入到了模型中。举个简单的例子,决策树模型在训练过裎中可以同时字习到不同特征的重要性,而这个过程是建模的一部分,是一种嵌入式的特征选择。

巧合的看,表示学习也是一种嵌入表示(embeddedrepresentation)。如维度压缩方法PCA,也是一种将高维数据找到合适的低维嵌入的过程,前文提到的word2vec也是另一种"嵌入''。至于这种"嵌入"是否必须是高维到低维,不一定,但往往是因为特征被抽象化了。以上提到的两种嵌入一种是对于模型的嵌入,一种是在维度上的嵌入,一种是名字上的巧合。

3.理解不同数据处理方法对于我们有什么帮助?

首先对于模型选择有一定的帮助:

当我们数据量不大,且对于数据非常理解时,人为的特征处理也就是特征工程是合适的。比如去掉无关数据,选择适合的数据,合并数据,对数据离散化等。

当数据量较大或者我们的人为先验理解很有限时可以尝试表示学习,如依赖一气呵成的深度学习,效果往往不错。

4.为什么有的模型拥有表示学习的能力,而有的没有?

这个问题需要分模型讨论。以深度字习为例,特征学习是一种对于模型的理解,并不是唯一的理解,而为什么泛化效果好,还缺乏系统的理论研究。

5.特征工程指的是对于数据的清理,和学习有什么关系?

如果所使用的模型拥有对于数据的简化、特证表示和抽取能力,我们都可以认为它是有表示学习的特性。而狭义的特证工程指的是处理缺失值,特征选择,维度压缩等各种预处理手段,而从更大的角度看主要目的是提高数据的表示能力。对于数据的人为提炼使其有了更好的表达,这其实是人工的表示宇习。
---------------------------------页面分割线-------------------------------------

猜你喜欢

转载自blog.csdn.net/qq_19446965/article/details/82082321