首先我们以一个生活中的例子来介绍机器学习中的一些基本概念,包括样本、特征、标签、模型、学习算法等。本节参考了《机器学习》(周志华,2016)中购买西瓜的例子。假设我们要到市场上购买芒果,但是之前毫无挑选芒果的经验,那么我们如何通过学习来获取这些知识?
首先,我们从市场上随机选取一些芒果,列出每个芒果的特征(Feature),特征也可以称为属性(Attribute),包括颜色、大小、形状、产地、品牌,以及我们需要预测的标签(Label)。标签可以是连续值(比如关于芒果的甜度、水分以及成熟度的综合打分),也可以是离散值(比如好、坏两类标签)。这里,每个芒果的标签都可以通过直接品尝来获得,也可以通过请一些经验丰富的专家来进行标记。
一个标记好特征以及标签的芒果可以看作是一个样本(Sample)。样本也叫示例(Instance)。一组样本构成的集合称为数据集(Data Set)。一般将数据集分为两部分:训练集(Training Set)和测试集(Test Set)。训练集中的样本是用来训练模型的,也叫训练样本(Training Sample),而测试集中的样本是用来检验模型好坏的,也叫测试样本(Test Sample)。
我们通常用一个 d 维向量 x =[ x 1 , x 2 …, x d ] T 表示一个芒果的所有特征构成的向量,称为特征向量(Feature Vector),其中每一维表示一个特征。并不是所有的样本特征都是数值型,需要通过转换表示为特征向量。而芒果的标签通常用标量 y 来表示。假设训练集由 N 个样本组成,其中每个样本都是独立同分布(Identically and Independently Distributed,IID)的,即独立地从相同的数据分布中抽取的,记为:
给定训练集 D ,我们希望让计算机从一个函数集合 F ={ f 1 ( x ), f 2 ( x )…}中自动寻找一个最优的函数 f* ( x )来近似每个样本特性向量 x 和标签 y 之间的真实映射关系。对于一个样本 x ,我们可以通过函数 f *( x )来预测其标签的值:
或标签的条件概率:
如何寻找这个最优的函数 f* ( x )是机器学习的关键,一般需要通过学习算法(Learning Algorithm) A 来完成。在有些文献中,学习算法也叫作学习器(Learner)。这个寻找过程通常称为学习(Learning)或训练(Training)过程。
这样,下次从市场上买芒果(测试样本)时,可以根据芒果的特征,使用学习到的函数 f *( x )来预测芒果的好坏。为了评价的公正性,我们还是独立同分布地抽取一组芒果作为测试集 D ′,并在测试集中所有芒果上进行测试,计算预测结果的准确率:
其中, I (·)为指示函数,| D ′|为测试集大小。
机器学习的基本流程是对一个预测任务,输入特征向量为 x ,输出标签为 y ,我们选择一个函数集合F,通过学习算法A和一组训练样本D,从F中学习到函数 f *( x )。这样对于新的输入 x ,就可以用函数 f *( x )进行预测。