[关闭]
@qiutaohanse 2017-09-29T11:07:16.000000Z 字数 4303 阅读 44

《统计学习方法》—— 第一章 统计学习方法概论

监督学习 模型 策略 算法


这里写李航的《统计学习方法》的相关笔记,加了很多私货,因为我是按照我的理解来写的,而不是纯粹的笔记,因此难免有所错误,若发现错误请指正。

概要

本章介绍了统计学习里的基本概念,全面讲解了监督学习的相关基础内容。实际上,统计学习方法这本书总体上是偏重于监督学习的,所以后面都会直接说监督学习,而不是统计学习。

最常见的机器学习的类别划分就是监督学习、半监督学习和无监督学习,当然还有增强学习等等很多。监督学习就是指需要使用训练集来训练模型及模型参数的学习方式。

第一章主要讲解了统计学习的三要素,但是在具体讲三要素之前,个人认为必须要深刻理解“数据”这一块的内容。最需要牢记的一点是,大部分我们所说的机器学习方法都是基于同一个假设:数据是独立同分布的。数据这一块有很多子领域,如大规模数据[1]、数据可靠性与真实性发现[2]、非独立数据等;从数据处理的角度,有特征选择、特征提取、降维、可视化等;从数据类型的角度,有文本、图像、序列、时间序列、动态/流、图/网络、社交网络、空间、视频、音频、时空等类型,更深入地结合这些数据而非单独使用某一类数据,又出现了multi-media、mutli-modality、multi-view等等研究方向;从数据的隐私角度,出现了隐私保护、基于加密数据的机器学习方法等方向,剩下的就不再列举,有兴趣自己可以去查找相关资料。

我们使用机器学习的时候通常都是为了求解一个能很好解决我们想要解决的问题的模型,在这里,我们称模型为假设,同种模型的集合称为假设空间(更严谨的数学描述这里不深入)。那么,问题自然而然就来了,我们应该选择哪种假设空间?如何衡量不同的假设空间的效果,以及在确定了假设空间后,哪个假设才是最优?如何解出最优的假设?我花了大量的时间和精力思考了这些问题,下面是我的回答。

第一个问题,我们应该选择哪种假设空间?

选择假设空间是在进行机器学习/数据挖掘任务时最耗费时间与精力的事情。目前来说并没有什么系统的方法和理论,基本都是靠经验。但是,也有一些基本原则,最重要的就是:我们必须深刻理解我们所拥有的东西和我们所要做的东西。所拥有的东西包括数据、硬件资源、知识储备等,所要做的东西就是指我们也要解决的问题、任务时间限制、成本限制、特殊应用环境限制(如手机)等。

在设计或使用机器学习方法时,我们必须要先观察数据理解问题。观察数据最基本包括可视化观察、统计分析、数据特有的性质(如图数据的同质性等)、结合问题的分析、结合直觉的分析等,理解问题要和观察数据结合起来,总体上就是输入、输出、目的、特殊要求、形式化表达、直觉上的解决方法、结合数据特性的解决方法等。通过观察数据和理解问题,再加上相关策略,我们就基本能确定出一个或者几个假设空间了,注意,很多时候我们很难说清我们所确定的假设空间,但我们可以表达出不同的目标函数,不同的目标函数就可以认为是不同的假设空间。

选择假设空间是一个长期的工程,只有当任务完成时,才能真正地说确定了假设空间。通常我们就是不断地分析、提出、实验、调整,然后再分析、提出、实验、调整这样轮回下去直到找到了一个满足现有条件的模型,虽然可能不是最优也不是很完美,但是只要能够较好地完成问题达到标准即可。

第二个问题,如何衡量不同的假设空间的效果,以及在确定了假设空间后,哪个假设才是最优?

我们会不断地提出了各种假设空间,那么如何衡量最优的假设空间和最优的假设的“最优”就很重要。这一个问题可以分成两个问题,但实际上这两个问题本质上都是同一个问题,因为在找最优的假设空间的时候我们通常用某种假设空间里最优的假设的效果来代表假设空间的效果,所以,本质上这个问题就是变成“如何比较两个假设的效果?”。

仍然是前面提到的,我们拥有什么,我们又要解决什么。在监督学习上,我们拥有训练集,对于一个实例(输入),如果它在训练集里我们就有它的正确输出,我们还有模型给出的输出,我们要解决的问题是给定一个输入,模型能够尽可能正确地给出输出,即输出尽可能接近真实结果,并且,我们希望能在任意一个输入的情况下都能达到这样的效果。

接下来,就很明白了。我们的模型应该对未知的数据(假设数据的分布为)有很强的预测能力。那么,衡量两个模型的效果就只需要比较这两个数据对未知数据的预测能力即可。对未知数据的预测能力称为泛化能力,对所有可能的输入所做的预测造成的误差(即预测的结果与真实结果的偏离程度)之和称之为泛化误差(即,也称之为期望风险)。

然而,实际上我们无法获取所有可能的输入对应的正确的输出,也很难获取分布的表达式,也就是说我们无法量化泛化误差,但我们又必须要用。所以,测试集出现了,测试集中的数据有输入和正确的输出,并且没有在训练集中出现过,我们可以得到测试误差(测试集上所有样本的预测的误差和)。当测试集的数量足够多的时候,测试误差就接近于泛化误差,所以,从某种程度上,在测试集上表现好我们就可以认为其泛化能力好。

综上,可以用测试误差来比较两个模型的效果。

接下来的问题是,如何衡量预测结果与真实结果的偏离程度(也称之为损失函数)?通常可以从两种角度来进行,第一种就是概率角度,使用信息论中的KL离散度等概念来计算现有分布与真实分布的偏离程度,第二种是从距离的角度,最常见的就是矩阵论中的范数的概念,其他的还有余弦相似度、Jaccard系数、对数损失、正确率、召回率等等。

在理解了上面的内容后,我们就要考虑该怎么解出最优的假设。

第三个问题,如何解出最优的假设?

上面我们最终说明了可以用测试误差来比较模型的效果。但是,在比较之前,我们要先求解出模型才行,求解模型一般就是指解出模型的参数。最符合的直觉方式就是让模型在训练集上的效果最好,即训练误差(也称之为经验误差)最小,这就是经验风险最小化原则。

实际上,只要训练集足够多,训练误差也接近于泛化误差,从书中给出的泛化误差上界的证明很容易看出来,泛化误差和训练误差的差值随着训练集的增加而减小,随模型复杂度的减小而减小。从这个结论其实还可以得出另一个有用的东西,即奥克姆剃刀原则,当效果相同时,模型越简单越好,因为模型越简单,泛化误差越接近训练误差,效果越好。具体证明过程不详细叙述,书中的证明是PAC理论[3]的一个基础证明,证明过程主要使用了Hoeffding不等式,证Hoeffding不等式要先证Hoeffding引理,这个引理可由切比雪夫不等式证出。

然而,实验证明,在训练集上最优的模型在测试集上不一定最优,即随着训练误差减小,测试误差先减小再增大(也就是过拟合现象)。因为相比于所有可能的数据,我们的训练集永远都太小了,所以我们的模型会面对许多训练集里未曾出现过的各种情况的数据。

那么,如何解决过拟合?主要有两种思路,第一种是使用交叉验证的方式,即从训练集中划分出一个验证集,用训练集训练模型,然后用验证集来选择模型,如k-折交叉验证就是将数据划分为k个互不相交的大小相同的子集,然后利用k-1个子集的数据训练模型,用剩下的一个子集测试模型,将这一过程对可能的k种选择重复进行,最后选出k次评测中测试的平均误差最小的模型;第二种是使用正则化,正则化就是指在经验风险最小化的目标函数上加上一个衡量模型复杂度的量(这也称之为结构风险最小化,加上去的东西叫做正则项或者惩罚项),模型越复杂,该值越大,这么做是因为过拟合本质上就是模型太复杂而导致其能很好地拟合训练数据却不能很好地拟合没见过的数据。最常见的正则化就是正则,因为某种程度上模型的参数的个数可以反应模型的复杂度,而参数向量的L1,L2范数能够很好地描述参数空间的大小(见最小描述长度等概念)。

也就是说,我们有两种策略,经验风险最小化策略和结构风险最小化策略。注意,当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化等价于极大似然估计,结构风险最小化等价于最大后验估计,此时正则项就是模型的概率。证明过程就是直接式子写出来,然后利用Log函数的性质就可以看出来了。

在确定模型和策略后,我们就可以写出目标函数,然后表示出优化问题。求解优化问题就是数值优化里的内容了,具体的基础内容见数值计算的笔记。

这里,我花了大量的篇幅讲了这三个问题,因为我觉得这三个问题非常重要,希望我的回答能让人有所启示。接下来讲一些监督学习的基础内容。

监督学习的基础内容

监督学习最基本的任务是分类和回归,还有一些特殊任务,如标注(一个输入的不同部分有不同的类别)、多标签(一个输入同时属于多个类)等。需要注意的是分类任务,分类任务中训练的时候使用的损失函数和测试的时候使用的不一定相同,最主要的原因是类似准确率这种评判标准无法很方便地进行数值优化,所以通常不会用这些来作为训练时的损失函数。

分类任务的性能评估主要使用正确率(Accuracy)、精确率(Precision)、召回率(Recall)、F-score等,主要计算方式可以直接从下表表示出:

预测与实际 实际结果是真(Positive) 实际结果是负(Negative)
预测为正(True) TP (正确的正) FP (错误的正)
预测为负(False) FN (错误的负) TN (正确的负)

所以,精确率P就是预测为真里实际正确的占比,召回率R就是实际为真的数据里预测为真的占比



实际上,分类任务还有很多性能评估方法,如Precision@N、Hit@N等等。

通常,监督学习的模型可以分为生成模型和判别模型,简单来说,一般生成模型都用到了概率里的贝叶斯定理,除此之外都是判别模型。

以上就是我对第一章的理解,希望对大家有所帮助。


[1] Challenges and Opportunities with Big Data
[2] Yaliang Li, Jing Gao, Chuishi Meng, Qi Li, Lu Su, Bo Zhao, Wei Fan, Jiawei Han. A Survey on Truth Discovery. SIGKDD Explorations Newsletter, 17(2): 1-16, 2015
[3] PAC理论推荐书籍《Foundations of Machine Learning》
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注