机器学习案例分析(基于Python语言)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 基础知识

1.1 机器学习简介

1.1.1 基本概念

机器学习(Machine Learning,ML)是人工智能的一个分支,它是一门多领域交叉学科,专门研究计算机怎样模拟或实现人类的学习行为,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。利用机器学习方法解决实际问题时,涉及模型结构设计、学习目标(也称优化目标、目标函数或损失函数)设计、优化算法设计等方面的工作。机器学习的目标是根据已有数据(训练数据,也称训练样本)设计模型并学习模型参数,使得学习后的模型能够在未知数据(测试数据,也称测试样本)上展现出较好的性能(具有较低的泛化误差,或具有较强的泛化能力)。需要注意,在进行模型设计和参数学习时只能使用训练数据,而不能使用任何测试数据。

机器学习模型可简单表示为

y=f ( x;θ) (1.1)

其中,f是机器学习模型的数学表示(一个映射函数),x是模型的输入,y是模型的输出,θ是模型的参数。模型设计和参数学习过程,实际上就是根据训练数据进行映射函数f的设计,并按预先定义的优化目标(如预测输出与目标输出之间的平方误差)进行参数θ的学习。模型应用过程,实际上就是根据设计好的映射函数f及学习好的参数θ,对于一个数据通过模型给出其预测输出。例如,对于2.2节将要介绍的鸢尾花分类问题,输入数据x是由花萼长度、花萼宽度、花瓣长度和花瓣宽度组成的一个包含4个元素的特征向量(此时称该数据的特征维度为4),而目标输出数据t则是某个鸢尾花子类(山鸢尾、变色鸢尾或维吉尼亚鸢尾,通常用整数表示不同类别,如0、1、2等);通过设计模型及基于训练数据的模型参数学习,使模型能够根据输入的测试数据x',得到预测输出数据y',并且y'与目标输出数据t'应尽可能接近。

在机器学习模型的设计中,需要避免两种情况,即欠拟合和过拟合。如图1-1所示,是欠拟合和过拟合的一个简单示例。所谓欠拟合,是指所设计的机器学习模型过于简单,无法表示数据中蕴含的复杂规律。出现欠拟合情况时,机器学习模型在训练数据和测试数据上的性能相近,但均表现较差。所谓过拟合,是指所设计的机器学习模型过于复杂,其能够完美地对训练数据进行拟合,但在训练过程中未使用的测试数据上表现则很差。出现过拟合情况时,机器学习模型在训练数据上性能很好,但在测试数据上性能很差。无论是欠拟合,还是过拟合,都会使得模型在测试数据上表现出不好的性能(较高的泛化误差,或较差的泛化能力),无法满足实际应用需要。因此,如何设计复杂度适中的机器学习模型,使其具有较强的泛化能力(模型在测试集上有较好的表现),是机器学习中一个非常重要的问题。

图1-1 欠拟合和过拟合示例

为了能够在不使用任何测试数据的情况下,设计出复杂度适中的机器学习模型,在实际应用中通常会将可用于训练的数据进一步分为两部分,分别是训练数据和验证数据。验证数据仅用于预测模型的泛化能力,而不参与模型的参数学习过程。当可用于训练的数据本身就很少时,通常采用K折交叉验证方法来进行模型的设计。所谓K折交叉验证,是指将可用于训练的数据近似等分为K份,每次训练时使用其中K-1份作为训练数据进行模型参数学习,而没有参与训练的那一份作为验证数据,用于进行模型泛化能力的预测。K份数据中的每一份都用作一次验证数据后,K次实验结果的平均值即该模型泛化能力的预测依据。

1.1.2 机器学习分类

从不同的角度,可以对机器学习方法进行不同的分类。从训练数据是否包含目标值的角度,机器学习可以分为有监督学习方法和无监督学习方法;从目标值是不是连续值的角度,机器学习可以分为用于分类任务的方法和用于回归任务的方法。这里简单介绍一下这些方法的基本概念。

1.有监督学习

在有监督学习中,每一条训练数据既包含特征向量x,也包含目标值t(目标值可以是单个数值,也可以是一个向量)。通过预先设计好的机器学习模型和优化目标函数,根据这些训练数据进行模型参数学习,使得每一条训练数据的特征向量输入模型后,模型能够给出与目标值尽可能接近的预测值(当然,这里也要注意避免前面所提到的过拟合问题),即使得

尽可能小。其中,S是训练数据集合,ys是机器学习模型对训练数据s的预测输出,ts是训练数据s的目标值,D是某种距离度量函数(如欧氏距离等)。

2.无监督学习

在无监督学习中,每一条训练数据仅包含特征向量x,而没有目标值t。聚类(Clustering)是无监督学习的一个重要应用,其自动根据数据之间的相似度,对数据进行分类,从而发掘数据之间的关联关系(如通过分析社交网站上用户与用户之间的关系,将用户分成不同的群体,以进行相关内容推荐)。除聚类以外,主成分分析这种特征降维方法也采用无监督学习方式。关于聚类和主成分分析,我们会在后面介绍更详细的信息和具体使用方法。

3.分类

在一个机器学习任务中,如果每一条数据的目标值是离散的,则该任务是一个分类任务。通常用不同的整数代替实际的目标值来进行模型的训练和应用。例如,假设有若干物体的图片,每一幅图片的目标值是狗、猫、轮船、飞机中的一个,则可以将目标值编码为0、1、2、3,其对应关系是0→狗、1→猫、2→轮船、3→飞机。我们的任务就是设计并训练模型,使其可以对输入的图片产生0~3的整数输出,而0~3这4个整数分别对应4种不同的物体。

需要注意,对于分类任务,通常也使用One-Hot(独热)向量编码形式表示目标值,One-Hot是指向量中只有一个元素的值为1,其余元素的值均为0。例如,对于前面提到的图片分类的例子,可以将狗、猫、轮船、飞机这4个目标值分别编码为(1,0,0,0)、(0,1,0,0)、(0,0,1,0)和(0,0,0,1)。

4.回归

在一个机器学习任务中,如果每一条数据的目标值是连续的,则该任务是一个回归任务。例如,假设要对某种产品的价格进行预测,该产品的价格是连续值,因此,该问题是一个回归问题。需要注意,因为计算机通常用有限的二进制数来表示数据,所以计算机中任何类型的数据实质上都是可数的。通常来说,如果一个任务的目标值在一定精度下可以连续取值,则认为该目标值是连续的。

可见,回归任务和分类任务的区别就在于目标值是连续的,还是离散的。在实际设计机器学习模型时,很多机器学习模型既可以用于回归任务,也可以用于分类任务。