数据科学家和机器学习工程师,为什么一定要掌握特征工程?

2019-07-08 15:46发布

我们先来看看下面这段人与AI 客服系统的对话。

这种系统令人兴奋,足以撼动市场,因为如此复杂的系统竟然可以十分简洁。让我们仔细分析一下。从表面上看,你有可能觉得,这问题很简单啊!提问很简单,回答也很简单,只是接收一个请求,给出一个回复。“您好,我的手机死机了,应该怎么办?”很简单,重启就好了。当然,表面上看起来一定是这样的。

from Arty import AI
AI.respond_to("my phone froze, what should I do?")
>> "reset it."

问题的难点在于要从AI 的角度看问题。AI 没有完整的人类经验,它既没读过古希腊史诗《伊利亚特》,也没看过儿童故事书《大红狗克里弗》,没办法消化信息。核心问题就是,AI 没有什么阅读的经验。它怎么能得出这种回复呢?

人们给这个AI 几十万份(乃至几百万份)之前的人类聊天日志,让其从中发现规律。但这个过程中包含很多问题。

上文中AI 系统的训练数据节选如下。

数据分为两列,请求表示最终用户输入客服聊天框的内容,回复则表示客服对所收到消息的回复。

在读过数千条包含错别字、脏话和中途掉线的聊天记录后,AI 开始认为自己可以胜任客服工作了。于是,人类开始让AI 处理新收到的消息。虽然人类没有意识到自己的错误,但是开始注意到AI 还没有完全掌握这项本领。AI 连最简单的消息都识别不了,返回的消息也没有意义。人类很容易觉得AI 只是需要更多的时间和更多的数据,但是这些解决方案只是更大问题的小修小补,而且很多时候根本不管用。

这个例子中的潜在问题很有可能是AI 的原始输入数据太差,导致AI 认识不到语言中的细微差别。例如,问题可能出在这些地方。

  • 错别字会无故扩大AI 的单词量。“你哈哦”和“你好”是两个无关的词。
  • AI 不能理解同义词。用来打招呼的“你好”和“嗨”字面上看起来毫不相似,人为地增加了问题的难度。

为了解决实际问题,数据科学家和机器学习工程师要收集大量数据。因为他们想要解决的问题经常具有很高的相关性,而且是在混乱的世界中自然形成的,所以代表这些问题的原始数据有可能未经过滤,非常杂乱,甚至不完整。

因此,过去几年来,类似数据工程师的职位应运而生。这些工程师的唯一职责就是设计数据流水线和架构,用于处理原始数据,并将数据转换为公司其他部门——特别是数据科学家和机器学习工程师——可以使用的形式。尽管这项工作和机器学习专家构建机器学习流水线一样重要,但是经常被忽视和低估。

在数据科学家中进行的一项调查显示,他们工作中超过80%的时间都用在捕获、清洗和组织数据上。构造机器学习流水线所花费的时间不到20%,却占据着主导地位。此外,数据科学家的大部分时间都在准备数据。超过75%的人表示,准备数据是流程中最不愉快的部分。

上面提到的调查结果如下。

下图展示了数据科学家进行不同工作的时间比例。

从上图可见,数据科学家的工作占比如下。

  • 设置训练集:3%
  • 清洗和组织数据:60%
  • 收集数据集:19%
  • 挖掘数据模式:9%
  • 调整算法:5%
  • 其他:4%

下图展示了数据科学家最不喜欢的流程。

在一项类似的调查中,数据科学家认为他们最不喜欢的流程如下。

  • 设置训练集:10%
  • 清洗和组织数据:57%
  • 收集数据集:21%
  • 挖掘数据模式:3%
  • 调整算法:4%
  • 其他:5%

上面第一幅图表示了数据科学家在流程中的不同部分所花费的时间比例。数据科学家有超过80%的时间花在了准备数据上,以便进一步利用数据。第二幅图则表示了数据科学家最不喜欢的步骤。超过75%的人表示,他们最不喜欢准备数据。

数据源:https://whatsthebigdata.com/2016/05/01/data-scientists-spend-most-of-theirtime-cleaning-data/。

好的数据科学家不仅知道准备数据很重要,会占用大部分工作时间,而且知道这个步骤很艰难,没人喜欢。

很多时候我们会觉得,像机器学习竞赛和学术文献中那样干净的数据是理所当然的。然而实际上,超过90%的数据(最有趣、最有用的数据)都以原始形式存在,就像在之前AI 聊天系统的例子中一样。

准备数据的概念很模糊,包括捕获数据、存储数据、清洗数据,等等。之前的图中显示,清洗和组织数据占用的工作时间十分可观。数据工程师在这个步骤中能发挥最大作用。清洗数据的意思是将数据转换为云系统和数据库可以轻松识别的形式。组织数据一般更为彻底,经常包括将数据集的格式整体转换为更干净的格式,例如将原始聊天数据转换为有行列结构的表格。

清洗数据和组织数据的区别如下图所示。

图片上半部分的转换代表清洗服务器日志,包含数据和服务器状态的描述文本。注意在清洗时,Unicode 字符&被转换为了更可读的&。清洗前后,文档的格式基本保持不变。下半部分的组织转换则彻底得多,把原始数据转换为了行列结构,其中每行代表服务器的一次操作,每列代表服务器操作的属性(attribute)。在这个例子中,两个属性是日期和文本。

清洗和组织数据都属于更大的数据科学范畴,就是我们接下来要讨论的主题——特征工程。

特征工程是什么

特征工程(feature engineering)是这样一个过程:将数据转换为能更好地表示潜在问题的特征,从而提高机器学习性能。

为了进一步理解这个定义,我们看看特征工程具体包含什么。

  • 转换数据的过程:注意这里并不特指原始数据或未过滤的数据,等等。特征工程适用于任何阶段的数据。通常,我们要将特征工程技术应用于在数据分发者眼中已经处理过的数据。还有很重要的一点是,我们要处理的数据经常是表格形式的。数据会被组织成行(观察值)和列(属性)。有时我们从最原始的数据形式开始入手,例如之前服务器日志的例子,但是大部分时间,要处理的数据都已经在一定程度上被清洗和组织过了。
  • 特征:从最基本的层面来说,特征是对机器学习过程有意义的数据属性。我们经常需要查看表格,确定哪些列是特征,哪些只是普通的属性。
  • 更好地表示潜在问题:我们要使用的数据一定代表了某个领域的某个问题。我们要保证,在处理数据时,不能一叶障目不见泰山。转换数据的目的是要更好地表达更大的问题。
  • 提高机器学习性能:特征工程是数据科学流程的一部分。如我们所见,这个步骤很重要,而且经常被低估。特征工程的最终目的是让我们获取更好的数据,以便学习算法从中挖掘模式,取得更好的效果。执行特征工程不仅是要获得更干净的数据,而且最终要在机器学习流水线中使用这些数据。

你一定在想:为什么我应该花时间来了解特征工程?我们觉得,很多人之所以不喜欢特征工程,是因为他们常常看不到这些工作的益处。

大部分公司会同时招聘数据工程师和机器学习工程师。数据工程师主要关注准备和转换数据,而机器学习工程师一般拥有算法知识,知道如何从清洗好的数据中挖掘出模式来。

这两种工作一般是分开的,但是会交织在一起循环进行。数据工程师把数据集交给机器学习工程师,机器学习工程师则会说结果不好,让数据工程师进一步转换数据,反反复复。这种过程不仅单调重复,而且影响大局。

如果工程师不具备特征工程和机器学习两方面的知识,则整个流程很有可能不会那么有效。特征工程,这个方法是以结果为导向的,我们认为,只有能提高机器学习效果的技术才是有用的技术。

所以分享大家了解特征工程的一本书。

本书的主题是特征工程。特征工程是数据科学和机器学习流水线上的重要一环,包括识别、清洗、构建和发掘数据的新特征,为进一步解释数据并进行预测性分析做准备。

本书囊括了特征工程的全流程,从数据检查到可视化,再到转换和进一步处理,等等。书中还会涉及各种或简单或复杂的数学工具,数据要经过这些工具处理、转换成适当的形式,才能进入计算机和机器学习流水线中进行处理。

作为数据科学家,我们将通过观察和变换来获取对数据的全新理解,这不仅会增强机器学习算法的效果,而且会增强我们对数据的洞悉力。

第1章 特征工程简介

  • 1.1 激动人心的例子:AI驱动的聊天
  • 1.2 特征工程的重要性
  • 1.3 特征工程是什么
  • 1.4 机器学习算法和特征工程的评
  • 1.5 特征理解:我的数据集里有什么
  • 1.6 特征增强:清洗数据
  • 1.7 特征选择:对坏属性说不
  • 1.8 特征构建:能生成新特征吗
  • 1.9 特征转换:数学显神通
  • 1.10 特征学习:以AI促AI
  • 1.11 小结

第2章 特征理解:我的数据集里有什么

  • 2.1 数据结构的有无
  • 2.2 定量数据和定性数据
  • 2.3 数据的4个等级
  • 2.4 数据等级总结
  • 2.5 小结

第3章 特征增强:清洗数据

  • 3.1 识别数据中的缺失值
  • 3.2 处理数据集中的缺失值
  • 3.3 标准化和归一化
  • 3.4 小结

第4章 特征构建:我能生成新特征吗

  • 4.1 检查数据集
  • 4.2 填充分类特征
  • 4.3 编码分类变量
  • 4.4 扩展数值特征
  • 4.5 针对文本的特征构建
  • 4.6 小结

第5章 特征选择:对坏属性说不

  • 5.1 在特征工程中实现更好的性能
  • 5.2 创建基准机器学习流水线
  • 5.3 特征选择的类型
  • 5.4 选用正确的特征选择方法
  • 5.5 小结

第6章 特征转换:数学显神通

  • 6.1 维度缩减:特征转换、特征选择与特征构建
  • 6.2 主成分分析
  • 6.3 线性判别分析
  • 6.4 LDA与PCA:使用鸢尾花数据集
  • 6.5 小结

第7章 特征学习:以AI促AI

  • 7.1 数据的参数假设
  • 7.2 受限玻尔兹曼机
  • 7.3 伯努利受限玻尔兹曼机
  • 7.4 在机器学习流水线中应用RBM
  • 7.5 学习文本特征:词向量
  • 7.6 小结

第8章 案例分析

  • 8.1 案例1:面部识别
  • 8.2 案例2:预测酒店评论数据的主题
  • 8.3 小结
文章来源: https://www.toutiao.com/group/6698207245269729799/