机器学习之二 – 数据、特征工程与样本
除基本概念外,机器学习训练或应用时的输入输出也是我们了解机器学习时需要重点关注的内容。本篇我们将主要介绍机器学习中输入输出数据的形式,特征工程,以及训练数据是如何准备的,以增进各位读者对机器学习的工作流程知识的掌握。
机器学习-数据的表示形式
若要了解机器学习中的数据,首先要明确数据的形式,而在机器学习中,矩阵和向量是常用的数据表示形式。
(1)矩阵
“数学上,一个 m x n 的矩阵是一个由m行(row)n列(column)元素排列成的矩形阵列。矩阵里的元素可以是数字、符号或数学式。”
在机器学习领域,很多数据均会被转换成矩阵表示。比如,一张长宽都是256像素的图片,可以被用一个256×256的矩阵来表示,矩阵的每个元素表示对应像素点的灰度值。
模型内部的参数大多使用矩阵表示,模型的计算过程也会经常用到矩阵。
(2)向量
向量,最简单的理解就是一维向量。可以是行向量(一行n列),也可以是列向量(n行一列)。
举个例子:一个模型可以将一个分类结果输出为一个向量,比如要分为三类,输出结果是:(p1, p2, p3),每个元素表示结果属于对应分类的可能性大小。例如,三个类别分别是苹果、梨、西瓜,当结果是(0.7, 0.1, 0.2)时,表示结果有比较大的可能是苹果。
机器学习-输入数据和输出数据的举例
模型的输入和输出数据,一般都会使用矩阵(向量)的形式。下面我们将用一个例子具体解说输入数据和输出数据。
例:
任务:
- 判断一句话的情感(比如对商品的一条评论是肯定还是否定)
输入:
- 将这句话的每个词对应一个向量,这个向量的长度等于词典的长度,这个向量由很多0和1个1组成,1的位置与这个词在词典中对应的位置一致。例如:(0,1,0,0,…,0)表示词典中的第二个词。
- 将每个词对应的向量输入模型
输出:
- 一个在0和1之间的值,这个值越接近1表示这句话越积极(肯定)。
机器学习-特征工程
在机器学习的过程中,我们需要让机器对数据集进行学习,但不是所有的数据都可以直接用于机器学习,我们需要先对这些输入的原始数据进行预先的处理,将其转换为能够让机器学习(即便于模型处理的数据)。这个工作被称为特征工程,也称为数据的预处理。
在机器学习中,特征是指被观测对象的可测量性能或特性。例如:判断一句话的情感,需要考虑的特征或属性可以是:句子的长短、语调的高低等。特征工程是一系列的工作,不止包含对于原始数据进行特征提取,还包括对特征的选择等重要工作。下面逐一进行介绍。
(1)处理数据
实际运用中可以有很多种方法处理数据,下面是一些常规技术:
- 归一化:比如把数据变成(0,1)这个范围的小数。特征可能包括各种数据范围,各种量纲,比如,降水量是300毫米,风速是10米/秒等,当数据范围差异很大时,模型计算就容易产生偏差,更不必说量纲不一致所带来的困扰。因此要将数据映射到一致的范围。
- 转换:比如将体重,40公斤及以下对应到0,150公斤及以上对应到1,这样就使得特征表现得更鲜明。
- 分桶:比如把年龄转换为一个向量,(1,0,0)表示0-18岁,(0,1,0)表示18-50岁,(0,0,1)表示50岁以上。这就好象建了多个桶,根据值的不同,将数据放到对应桶中。
(2)对特征做选择,以及增加生成的特征
- 特征选择:比如,原始数据有几百个可用的特征,从中选出比较重要的10个,用于模型预测。
- 增加生成的特征:比如,特征中有一个是面积,再增加一个辅助特征:面积的平方根,然后再进行预测。至于为什么要增加生成的特征,是因为可能单纯用原始特征预测的效果不好。
如何选择特征,如何增加生成的辅助特征,需要对问题有深入的分析,也往往需要通过实验来找到较优的方案。从创新的角度,对于特征的选择和处理,可能是具有创造性的重要的方面。这也是专利领域需要重点关注的。
机器学习-训练数据是如何准备的
机器学习的核心便是深度学习,计算机通过不断的模型训练和模型预测,实现自我更新和改进。而要训练出一个模型,则需要大量的数据。模型预测的任务越复杂,需要的训练数据就越多。训练模型的方法也有很多种,我们会在未来的文章中再介绍。我们目前先围绕有监督学习,即需要训练数据和对应标签的情况来介绍。
在有监督学习中,会用不同的方式收集数据。比如,
- 可以使用业界通用的数据集
- 可以使用业务中积累的数据
- 可以用各种方式搜集数据,比如用程序上网自动爬取
- 可以动态生成某些数据
在训练数据的过程中,比起数据的收集和处理,训练数据的标签的获取更有难度。理想的情况下,获得数据的同时就能获得标签。如果数据不是自动带标签,最直接的方法就是人工标注,然而人工标注的成本会比较高。因此,发展出了一些为训练数据获得标签的方法(这种方法有时也和训练数据的生成方法相结合)。这往往也是可能出现创新的地方。
我们如果想要了解模型的训练,一定要了解,训练数据是怎么来的,特别是训练数据的标签是如何获得的。至于有了数据后模型的训练方法,在相当多的情况下,工程实施人员也是基于现成的方法来进行(其中要做些参数的调整);如果对训练方法也进行了创新,则属于比较深入的内容了,我们也会在后面再介绍。
总结:
模型训练是模型应用的基础,输入和输出是模型完成任务的关键点。理解模型的输入输出及其相关的特征工程,可以让我们在机器学习模型的基础概念基础上对其有了更深入的理解。