第 5 章 分析方法初步 5.1机器学习基础 5.1.1何为机器学习 1. 机器学习的定义 在日常生活中人们经常会根据经验来解决遇到的问题,例如看到朋友有黑 眼圈,精神状态差,人们推测可能他没有休息好;看到天空颜色变暗,狂风骤起, 燕子低飞,人们预测可能马上会下雨。为什么人们会做出这样的预测呢? 因为 人们已经总结了足够多的类似情况,所以在新的问题发生时,可以根据以往的 经验做出较为准确的预测,例如人们根据经验学习到了燕子低飞这个特征与快 要下雨相关联。 上面对于经验的利用以及新的结果的预测是通过人来实现的,那么计算机 是否也可以模仿人来完成这个工作呢? 机器学习就是一门致力于通过数据以 及以往的经验,优化计算机程序性能的学科。机器学习是一门多领域交叉学 科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科,专门研 究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织 已有的知识结构使之不断改善自身的性能。 机器学习有3个要素,分别为任务(Task)、性能(Performance)、经验 (Experience)。假设采用T代表任务,P代表任务T的性能,E代表经验,机器 学习研究的主要内容是利用经验E通过“学习算法”(LearningAlgorithm)提高 任务T的性能P,最终从经验中产生“模型”(Model)。下面举例说明机器学习 的基本要素。 1)鸢尾花分类系统 (1)任务T:对给定鸢尾花进行分类,即判断鸢尾花的品种。 (2)性能指标P:分类的准确率。 (3)经验来源E:大量的鸢尾花数据以及其对应的品种 。 2)垃圾邮件分类系 统 (1)任务T:判断给定邮件是否垃圾邮件。 (2)性能指标P:分类的准确度。 第5章分析方法初步171(3)经验来源E:大量的邮件数据以及其对应的类别。 2.机器学习的应用 机器学习在很多应用领域具有十分广泛的应用,被证明拥有非常大的实用价值,尤其 表现在以下几个方面[4]。 (1)数据挖掘:数据挖掘的主要任务是从大量的数据中通过算法搜索隐藏于其中信 息的研究工作。数据挖掘目前主要应用于数据统计分析、销售数据、网络数据分析、流量 数据分析、风险评估等多个方面。 (2)计算机视觉:计算机视觉是使用计算机及相关的设备对生物视觉的一种模拟, 通过对采集的图片或者视频进行处理,最终获取所需被拍摄对象的数据和信息的一门学 科。计算机视觉目前主要用于医学图像处理、导弹制导以及无人机和无人驾驶车辆等应 用领域。 (3)自然语言处理:自然语言处理主要研究实现人与计算机之间通过自然语言进行 有效通信的理论与方法。自然语言即人们日常使用的语言,通过自然语言处理,主要实现 文本分类与聚类、信息检索和过滤、机器翻译等多种应用。 (4)生物特征识别:生物特征识别主要利用人体固有的生理特征(虹膜、指纹、声纹、 DNA等固有特征)或行为特征(步态、签名等习惯)实现个人身份鉴定的技术。目前较为 火热的研究方向有人脸识别、亲子鉴定、指纹识别、虹膜识别等身份鉴定技术。 1.基本术语 5.2 机器学习是一类算法的总称,这些算法企图从大量历史数据中挖掘出其中隐含的规 律,并用于对新的数据进行预测或者分类。更具体地说,机器学习可以看作是寻找一个函 数,输入是大量的样本数据,输出是期望结果。 要进行机器学习,必须要获取经验E,而计算机中经验一般以数据的形式存在,通过 使用学习算法对数据进行学习最终可以获取模型。假定我们获取一批鸢尾花的数据,收 集每个鸢尾花的花萼长度、花萼宽度、花瓣长度以及花瓣宽度4个值,单位为厘米。数据 的组织形式例如(2,1,2,2),(3,1,2,2),…,(1,1,2,2)。这些数据的集合称为一个数据集 (DataSet),每条数据称为一个样本(Sample)或者示例(Instance)。其中花萼长度、花萼 宽度等称为鸢尾花数据的属性(Atribute)或者特征(Feature)。属性上的值例如2cm,被 称为属性值。如果按照花萼长度、花萼宽度等4个属性建立四维空间,那么每一个鸢尾花 都可以在空间中找到自己的坐标向量,所以示例也可以被称为特征向量(Feature Vector)。 从数据中学得模型的过程被称为学习或训练,在通过使用学习算法对数据进行训练 的过程中,每一个样本被称为训练样本,训练样本组成的数据集被称为训练集。训练模型 的目的是预测关于数据的某种潜在的规律,通过学习过程逐渐逼近这个规律。学习过程 只依靠前面的样本的数据信息是不够的,需要知道拥有这些特征的数据到底会产生什么 样的结果,例如当样本属性值为(1,2) 当样本属性值为(1,2) 2,2,时是山鸢尾, 3,2,时是杂 色鸢尾。其中样本信息的结果“山鸢尾”“杂色鸢尾”被称为标记(Label)。 172数据科学导论 获取对样本的属性值与样本的标记的组合之后,人们采用学习算法逐渐习得其内部 存在的规律,实现学习任务。根据人们预测的结果不同可以将学习任务分为不同类别。 如果需要预测的是离散值,例如“山鸢尾”“杂色鸢尾”“弗吉尼亚鸢尾”,则将此类任务称为 分类(Classification);如果预测的是连续值,例如鸢尾花的绽放程度为0.9、0.1,则将此类 任务称为回归(Regression)。学得模型后可以对未知的新样本进行预测,过程称为测试, 被预测的样本称为测试样本。例如在习得f之后,对测试样本x进行测试,测试的标记 为y=f(x)。 除了对鸢尾花数据集进行回归与分类任务,还可以对鸢尾花数据集进行聚类 (Clustering),即将数据集分成若干个组,每个组称为一个簇(Cluster)。这些生成的簇可 能对应一些潜在的概念划分,使得同一个类的样本相似,不同类的样本之间尽量不同。例 如基于颜色的划分,“蓝色花”“紫色花”等,或者基于形状的划分,“花骨朵”“绽放的花”等。 而究竟按照何种策略进行聚类是没有预先定义的,是其通过聚类算法在学习过程中自己 生成的区分概念。 按照训练数据有无标记信息可以将学习任务大致分为两大类:监督学习(Supervised Learning)和无监督学习(UnsupervisedLearning),其中分类和回归是监督学习的代表, 聚类是无监督学习的代表。 5.1.3模型评估与性能度量 机器学习的目标是由训练集学得的模型可以适用于非训练集样本的预测。人们希望 对于未出现在训练集中的数据采用预测模型也可以得到较好的预测效果。学得模型适用 于新样本的能力称为泛化(Generalization)。模型设计虽然只是基于整个样本空间很少 的部分进行预测,但是人们的目标是其在整个样本空间都有较好的预测能力,所以必须保 证模型拥有较强的泛化能力。 机器学习的目标是使模型具有较好的泛化能力,所以采用相同的数据集进行模型的 构建与评估是不合理的,这样会严重高估模型的准确率,没有办法衡量模型的泛化能力。 所以可以初步把数据集划分为训练集与测试集,使用训练集进行训练,使用测试集进行模 型的评估。模型评估方法是对数据集 D 如何划分为训练集 S 和测试集 T 的方法。为了 得到更加准确的测试结果,测试集应该与训练集互斥,即测试样本不在训练集中出现,未 在训练过程中使用过。目前常见的方法有留出法(Hold-Out)、交叉验证法(Cros Validation)以及自助法(Bootstrap)。 (1)留出法:将数据集 D 划分为两个互斥的集合,其中一个集合作为训练集S,另一 个集合作为测试集T。在 S 上训练出模型后,用 T 来评估其测试误差,作为对泛化误差 的估计。训练集和测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程 引入额外的偏差而对最终结果产生影响。例如如果存在数据集D,其中包含600个正样 本、400个负样本,数据集 D 划分为70%样本的训练集和30%样本的测试集。为了保证 训练和测试正负样本的比例与数据 D 比例相同,采用分层抽样的方法。先从600个正样 本随机抽取420次,从400个负样本随机抽取280次,然后剩下的样本集作为测试集,分 层抽样保证了训练集的正负样本的比例与数据集 D 的正负样本比例相同。 第5章分析方法初步173(2)交叉验证法:采用留出法实现样本的不同划分方式会导致模型评估的相应结果 也会有差别,会使得对模型的评估存在误差。交叉验证法先将数据集D划分为k个大小 相似的互斥子集,每个子集Di通过分层采样得到(如留出法所述,保证正负样本的比例与 数据集D的比例相同)。然后用k-1个子集的并集作为训练集,余下的子集作为测试 集;这样就获得k组训练/测试集。从而进行k次训练和测试,最终返回的是这k个测试 结果的均值。通常把交叉验证法称为k折交叉验证法,k最常用的取值是10,此时称为 10折交叉验证;如果k取值为1,则交叉验证退化为留出法。如果D中包含m个样本,k 取值为m时,则每个子集只有一个样本数据,得到了交叉验证法的一个特例,即留一法 (Leave-One-Out,LOO )。尽管这种方法可以非常接近准确评估,但是数据集较大时,训 练m个模型计算开销太大。 (3)自助法:人们希望评估的是用原始数据集D训练出的模型,但是留出法和交叉 验证法训练的数据集比原始的数据集D小,这必然会引入因训练数据集不同导致的估计 偏差,所以引入了自助法进行模型评估。自助法是有放回抽样,给定包含m个样本的数 据集D,对它进行采样产生数据集D';每次有放回地随机从D中挑选一个样本,将该样 本复制并放入D';重复执行m次,就得到了包含m个样本的数据集D',这就是自助法采 样的结果。初始数据集D中有一部分样本会在数据集D'中多次出现,也有一部分样本 不会在数据集D'中出现。通过自助法采样,初始数据集D中约有36.8%的样本未出现 在采样数据集D于是可将D没在训练集 '中, '用作训练集,我们仍有数据总量约1/3的、 中出现的样本作为测试集用于测试。 留出法、交叉验证法、自助法的对比如表5-1所示。 表5- 1 模型评估方法对比 方法名 特点 采样方法 与原始数据 分布是否相同 相比原始数 据集的容量 是否适用小 数据集 是否适用大 数据集 是否存在 估计偏差 留出法分层抽样否变小否是是 交叉验证法分层抽样否变小否是是 自助法放回抽样否不变是否是 对机器学习的泛化性能进行评估不仅需要有效可行的模型评估方法,还需要有权衡模 型泛化性能的评价标准,这就是性能度量(PerformanceMeasure)。性能度量反映了需求,在 对比不同的模型时需要采用不同的性能度量指标。例如分类时常用的精度、查准率、查全 率,回归时常用的均方误差、3节和5. 均方根误差等。具体性能度量指标将在5.4节介绍。 在分类任务中,经常衡量模型的精度(Acuracy),即正确分类与全部分类数据的比 值,与之对应,衡量错误分类数据在全部数据所占的比例叫作错误率(ErorRate)。错误 率与精度是衡量模型性能的最常用的方式,但在特定任务中还需要额外的度量方式。例 如在垃圾邮件分类任务中,如果目标分别是“将所有的垃圾邮件选取出来”以及“选取出来 的都是垃圾邮件”两类任务,采用精度很难衡量,所以引入了查准率(Precision)与查全率 174数据科学导论 (Recall)两个概念。为了更好地介绍查准率与查全率,以二分类问题为例,将分类器预测 结果分为以下4种情况。 真正(TruePositive,TP):被模型预测为正的正样本。 假正(FalsePositive,FP):被模型预测为正的负样本。 假负(FalseNegative,FN):被模型预测为负的正样本。 真负(TrueNegative,TN):被模型预测为负的负样本。 以上4种情况组成表5-2,称为混淆矩阵(ConfusionMatrix),它是一种特定的矩阵, 用来呈现算法性能的可视化效果,每一列代表预测值,每一行代表的是实际的类别。 表5-2混淆矩阵 真实数据 预测结果 正样本负样本 正样本TP FN 负样本FP TN 由表5-2可得,精度表示正确分类的测试实例的个数占测试实例总数的比例,计算公 式为 accuracy=(TP+TN)/(TP+FN+FP+TN) (5-1) 查准率针对预测正确的正样本而不是所有预测正确的样本,表示正确分类的正例个 数占分类为正例的实例个数的比例,其计算公式为 (precision=TP/(TP+FP) 5-2) 查全率,也称为召回率,表示正确分类的正例个数占实际正例个数的比例,其计算公 式为 recal=TP/(TP+FN) (5-3) 在实际应用中,例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确 实是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,更希望尽可能少漏掉 逃犯,此时查全率更重要。 查准率和查全率是“鱼”与“熊掌”的关系,通常来讲,查准率高时,查全率往往偏低;而 查全率高时,查准率往往偏低。以垃圾邮件分类为例,如果想将垃圾邮件都选取出来,可 以将所有邮件都标记为垃圾邮件,则查全率为1,但这样查准率就会比较低;如果希望垃 圾邮件分类模型的查准率足够高,那么可以让分类器挑选最有可能是垃圾邮件的邮件,但 这样往往会有大量的垃圾邮件被误识别为正常邮件,此时查全率就会比较低。所以又引 入一种新的性能度量指标,称为F1度量(F1Score),F1度量的由来是加权调和平均,更 接近于两个数较小的那个,所以查准率和查全率接近时,F1值最大。F1度量的定义为 2×precision×recal (F1= precision+recal 5-4) 除以上指标外,分类性能度量还有P-R曲线、平衡点、ROC曲线以及AUC等指标, 这里不再赘述。 第5章分析方法初步175 下面介绍回归任务的性能度量标准。回归任务的目标是,通过给定数据集 D ={x1, x2,…,xm }预测对应的标签Y={y1,^2,…,y^}, ^ 尽可能接近数据的标 y1,ym ^^y使其预测结果Y 签Y={y2,…,}。下面介绍几种常用的性(m) 能度量标准。 平均绝对误差(MeanAbsoluteEror,MAE):MAE又称为L1范数损失,其衡量预 测值与观察值之间的绝对误差的平均值,其公式如下: ^ Σ(n) |yi-yi| MAE= i=1(5-5) n 均方误差(MeanSquaredEror,MSE):MSE又称为L2范数损失,表示预测值与观 察值之间的误差平方的平均值,其公式如下: 2 (^ Σ(n) yi-yi) MSE= i=1 (5-6) n 均方根误差(RMSE),其公式如下: RMSE= MSE (5-7) 以上3种回归评价指标的取值大小与应用场景有关,很难定义统一的规则评判模型 的好坏。下面引入决定系数的概念,其类似于分类中的评价指标,取值范围为0~1,在不 同的应用场景下都可以使用这一评价标准。 决定系数R2(R-Square):决定系数中分母为标签 Y 的方差,分子为MSE 。可以根据 决定系数的取值,判断模型性能的好坏。R2 的取值范围为[0,1]。如果模型的决定系数 为0,表示模型的拟合效果很差,R2 取值越大,说明模型的拟合效果越好。如果结果为1, 说明拟合曲线无错误。其定义为 Σ(yi-yi) 2 ^R2=1- i -(5-8) 2 Σ(yi-yi) 针对随着样本数量的增加R2 值会随之增(i) 加,无法定量地说明准确程度的问题,引入 了校正决定系数(AdjustedR2)的概念,其抵消了样本数量对R2 的影响,可以定量地说明 准确程度。公式定义为 (1-R2)( n-1) n 为样本数量, AdjustedR2=1-n-p-1 (5-9) 其中, p 为特征数量。 聚类也有性能度量标准,聚类性能度量也称为聚类有效性指标,用来评估聚类结果的 好坏。聚类结果的簇内相似度越高且保证簇间相似度越低,则认为聚类的性能越好。聚 类性能度量分为外部指标与内部指标两类。 聚类的外部指标是将聚类结果与某个“参考模型”进行比较,例如与领域专家的划分 结果进行比较(类似对数据进行标记)。默认参考模型的性能指标是对样本的最优划分, 度量的目的就是使聚类结果与参考模型尽可能相近。核心思想是聚类结果中被划分在同 一簇样本与参考模型样本也被同样划分到一个簇的概率越高越好。常用的外部指标有 176 数据科学导论 Jacard系数、FM 指数、Rd指数。 对于给定数据集D ={x(n) (a) 1,x2,…,xn },经过聚类算法划分的簇为C={C1,C2,…, Ck },参考模型给出的簇划分为C*={1,C* Cs *}。同时令 l 与l*分别表示数据在 C* 2,…, C 与C*中的簇标记向量。将样本两两配对考虑,定义: a=|SS|,xjlj ,= i < class 'numpy.ndarray'> 数据集中包含三种鸢尾花,分别是山鸢尾(setossa)、变色鸢尾(versicolor)和弗吉尼 亚鸢尾(virginica)。可以通过以下代码获取对应名称。 In[4]: print(Iris.target_names) Out[4]: ['setosa' 'versicolor' 'virginica'] 数据集中的样本包含4个属性特征,分别为花萼长度、花萼宽度、花瓣长度、花瓣宽 度。可通过以下代码查看对应属性。 In[5]: print(Iris.feature_names) Out[5]: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] 数据集三类数据每类包含50个样本,共150个样本。每个样本包含4个特征向量和 1个类别向量(label)。