第一章 绪论
我们常会利用经验做出预判,但是计算机如何做呢?
机器学习旨在研究如何通过计算的手段,利用经验来改善系统的性能。
在计算机系统中,经验
通常以数据
的形式存在。机器学习所研究的主要内容就是关于在计算机上从数据中产生模型
的算法,即学习算法
。本书用模型
泛指从数据中学得的结果,有时也将模型称为学习器
,可看做学习算法在给定数据和参数空间上的实例化。学得模型对应了关于数据的某种潜在规律,因此亦称假设(hypothesis)
。
分类(classification)任务:预测的离散值
回归(regression)任务:预测的连续值
机器学习的目标是使学得的模型能很好地适用于新样本
,而不仅仅是在训练样本上工作得很好。学得模型适用于新样本的能力,称为泛化(generalization)
能力。
假设空间
归纳(induction)
和演绎(deduction)
是科学推理的两大基本手段。归纳是从特殊到一般,演绎是从一般到特殊,从样例中学习显然是一个归纳过程,因此亦称归纳学习(inductive learning)
。
我们可以把学习过程看作一个在所有假设(hypothesis)组成的空间中进行搜索的过程,搜索目标是找到与训练集匹配(fit)的假设。
然而,在现实问题中我们常面临很大的假设空间,但学习过程是基于有限样本训练集进行的,因此可能有多个假设与训练集一致,即存在一个与训练集一致的假设集合
。
归纳偏好
通过学习得到的模型
对应了假设空间中的一个假设
。应该采用哪个模型(或假设)呢?学习算法本身的偏好
就会起关键作用。
机器学习算法在学习过程中对某种类型假设的偏好,称为归纳偏好(inductive bias)
。任何一个有效的机器学习算法必有其归纳偏好,否则无法产生确定的学习结果。
归纳偏好可以看作学习算法在一个可能很庞大的假设空间中对假设进行选择的启发式
或价值观
。那么,有没有一般性的原则来引导算法确立“正确的”偏好呢?奥卡姆剃刀(Occam's razor)
是一种常用的自然科学研究中的基本原则,即若有多个假设与观察一致,则选最简单的那个
。比如存在多条曲线与有限样本训练集一致,则我们会偏好更平滑(简单)的曲线。
归纳偏好对应了学习算法本身所做的关于什么样的模型更好的假设。在具体的现实问题中,算法的归纳偏好是否与问题本身匹配,大多数时候直接决定了算法能否取得好的性能。
没有免费的午餐
对于一个学习算法A,如果它在某些问题上比学习算法B好,则必然存在另一些问题,在那里B比A好。这个结论对任何算法均成立。
这就是没有免费的午餐(No Free Lunch,NFL)
定理。
既然所有学习算法的期望都和随机胡猜差不多,那还有什么好学的?
需要注意的是,NFL定理有一个重要前提
:所有问题出现的机会相同,或所有问题同等重要。但实际情形并不是这样,我们只关注自己想要解决的问题(比如某个具体任务),希望为它找到一个解决方案,至于该解决方案在别的问题上的效果如何,我们并不关心。
NFL定理最重要的寓意是告诉我们,脱离具体问题,空泛地谈“什么学习算法更好”毫无意义。因为若考虑所有潜在的问题,则所有学习算法都一样好。
机器学习的发展历程
![](https://img.haomeiwen.com/i5551994/f803264a8024dcb8.png)
第二章 模型评估与选择
模型在训练集上的误差称为训练误差
或经验误差
,在新样本上的误差称为泛化误差
。我们希望得到泛化误差小的学习器,但是实际能做的是努力使经验误差最小化。
模型选择
在现实任务中,我们往往有多种学习算法可供选择,甚至对同一个学习算法,使用不同参数配置时,也会产生不同的模型。我们该选用哪一个模型?
理想的解决方案当然是选择泛化误差最小
的模型,然而,我们无法直接获得泛化误差。
因此,我们通常使用测试集
来测试模型对新样本的判别能力,然后以测试集上的测试误差
作为泛化误差
的近似。我们假设测试样本也是从样本真实分布中独立同分布
采样而得,但需注意,测试集应该尽可能与训练集互斥。
-
留出法(hold-out)
直接将数据集划分为两个互斥的集合,分别作为训练集和测试集。但需要注意,训练/测试集的划分要尽可能保持数据分布的一致性。一般将大约2/3 ~ 4/5
的样本用于训练,剩余样本用于测试。
单次使用留出法得到的估计结果往往不够稳定可靠,因此一般要采用若干次随机划分、重复进行实验评估后取平均值作为最后的结果。 -
交叉验证法(cross validation)
先将数据集划分为
个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即通过分层采样得到。然后每次用
个子集的并集作为训练集,余下的那个子集作为测试集;这样可以获得
组训练/测试集,进行
次训练和测试,最终返回这
个测试结果的均值。
与留出法类似,将数据集划分为
个子集同样存在多种划分方式,一般要随机使用不同的划分
次,最终的评估结果是这
次
折交叉验证结果的均值,比如10次10折交叉验证。
-
自助法(bootstrapping)
给定包含个样本的数据集
,每次随机从
中挑选一个样本,将其拷贝放入
,然后再将该样本放回
中,使得其在下次采样时仍有可能被采到;重复这个过程
次后,我们就得到了包含
个样本的数据集
,这就是自助采样的结果。
通过自助采样,数据集中约有36.8%的样本未出现在采样数据集
中,于是我们可以将这些样本(
)作为测试集。
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外由于其从初始数据集中产生了多个不同的训练集,这对集成学习等方法有很大好处。但是自助法改变了初始数据集的分布,会引入估计偏差,因此,在数据量足够时,留出法和交叉验证法更常用。
性能度量
回归任务:均方误差(mean squared error, mse)
分类任务:
-
错误率与精度:分类错误/正确的样本数占样本总数的比例
-
Precision、Recall、F1:
- Precision: 预测为正例的样本中实际为正例的比例 (挑出的西瓜中有多少比例是好瓜)
- Recall: 实际为正例的样本中预测为正例的比例 (所有好瓜中有多少比例被挑了出来)
- F1: Precision和Recall是一对矛盾的度量,F1是二者的调和平均
-
ROC与AUC
- ROC: 横轴是假正例率(假正例 / 实际为反例,没病说有病,误检率),纵轴是真正例率(真正例 / 实际为正例,有病说有病,查出率)。对角线表示随机猜测,总能得到相等的查出率和误检率。左上角(0,1)表示所有正例排在所有反例之前的理想模型,而越靠近右下角,算法性能越低。
- AUC: ROC曲线下各部分的面积之和
偏差与方差
对学习算法除了通过实验估计其泛化性能,人们往往还希望了解它为什么
具有这样的性能。偏差-方差分解(bias-variance decomposition)
是解释学习算法泛化性能
的一种重要工具。
针对基于均方误差的回归任务,算法的期望泛化误差可分解为偏差、方差、噪声之和。
偏差
度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差
度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声
则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
《西瓜书》
《南瓜书》
一文带你彻底理解ROC曲线和AUC值
ROC分析
网友评论