基本术语
-
一本经典教材的作者Mitchell给出了一个形式化的定义,假设:
-
P:计算机程序在某任务类T上的性能。
-
T:计算机程序希望实现的任务类。
-
E:表示经验,即历史的数据集。
若该计算机程序通过利用经验E在任务T上获得了性能P的改善,则称该程序对E进行了学习。数据集包含样本(sample)和特征(feature),这些特征张成了特征空间,一个样本可以称为一个特征向量
-
从数据学得模型的过程称为“学习”,学得模型称为假设(hypothesis),这一过程是为了找出对应关于数据的某种潜在规律(真相,ground truth)
-
若预测值为离散值,则该学习任务称为分类任务;若预测值为连续值,则该学习任务称为回归任务 根据训练数据是否具有标记信息,学习任务也可分为监督学习(supervised learning),例如分类和回归,和非监督学习(unsupervised learning),例如聚类(clustering)
-
机器学习的目标是提高模型的泛化能力,而不仅仅是在训练集上表现优异
假设空间
-
归纳学习:广义的归纳学习大体相当于从样例中学习,而狭义的归纳学习则要求从训练数据中学得概念,因此亦称为概念学习或概念形成
-
版本空间:存在着一个与训练集一致的假设集合,称之为“版本空间”
归纳偏好
-
机器学习算法在学习过程中对某种类型假设的偏好,称为归纳偏好(inductive bias)
-
奥卡姆剃刀原则:若有多个假设与观察一致,则选最简单的那个
模型评估与选择
经验误差与过拟合
-
将真实值与模型预测结果之间的差异称为误差
-
对于训练集上的误差称为训练误差(training error)或者经验误差(empirical error)
-
测试集上的误差称为测试误差(test error)
-
模型在所有新样本上的误差称为泛化误差(generalization error)
-
-
第一章中提到机器学习的目标是模型在新样本上表现优异,即得到泛化能力优秀的模型。因此,我们应该让学习器尽可能地从训练集中学出普适性的“一般特征”,这样在遇到新样本时才能做出正确的判别。当学习能力”过强”或者“过弱”时可能会发生
-
学习能力过强,以至于把训练样本所包含的不太一般的特性都学到了,称为:过拟合(overfitting)
-
学习能太差,训练样本的一般性质尚未学好,称为:欠拟合(underfitting)
-
评估方法
- 通常我们采用一个“测试集”来测试学习器对新样本的判别能力,然后以“测试集”上的“测试误差”作为“泛化误差”的近似。显然:我们选取的测试集应尽可能与训练集互斥
- 我们希望用一个“测试集”的“测试误差”来作为“泛化误差”的近似,因此我们需要对初始数据集进行有效划分,划分出互斥的“训练集”和“测试集”。下面介绍几种常用的划分方法
- 留出法
将数据集D划分为两个互斥的集合,一个作为训练集S,一个作为测试集T,满足D=S∪T且S∩T=∅,常见的划分为:大约2/3-4/5的样本用作训练,剩下的用作测试。需要注意的是:训练/测试集的划分要尽可能保持数据分布的一致性,以避免由于分布的差异引入额外的偏差,常见的做法是采取分层抽样。同时,由于划分的随机性,单次的留出法结果往往不够稳定,一般要采用若干次随机划分,重复实验取平均值的做法。 - 交叉验证法
每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就有K种训练集/测试集划分的情况,从而可进行k次训练和测试,最终返回k次测试结果的均值。交叉验证法也称“k折交叉验证”,k最常用的取值是10,下图给出了10折交叉验证的示意图。
特殊地当划分的k个子集的每个子集中只有一个样本时,称为“留一法”,显然,留一法的评估结果比较准确,但对计算机的消耗也是巨大的。 - 自助法
给定包含m个样本的数据集D,每次随机从D 中挑选一个样本,将其拷贝放入D',然后再将该样本放回初始数据集D 中,使得该样本在下次采样时仍有可能被采到。重复执行m 次,就可以得到了包含m个样本的数据集D'。可以得知在m次采样中,样本始终不被采到的概率取极限为:
优点:自助法在数据集较小,难以有效划分训练集/测试集时很有用
缺点:由于自助法产生的数据集(随机抽样)改变了初始数据集的分布,因此引入了估计偏差。在初始数据集足够时,留出法和交叉验证法更加常用。 - 调参
大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模型的性能往往有显著差别,这就是通常所说的"参数调节"或简称"调参" (parameter tuning)。
通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set).例如在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参
- 留出法
性能度量
- 性能度量(performance measure)是衡量模型泛化能力的评价标准,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果。
- 在回归任务中,即预测连续值的问题,最常用的性能度量是“均方误差”(mean squared error)
- 错误率与精度
更一般的,对于数据分布 D和概率密度函数p)错率与精度可分别描述为 - 查准率、查全率
对于二分类问题,分类结果混淆矩阵与查准/查全率定义如下:
P-R曲线定义如下:根据学习器的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是“正例”的样本排在前面,最不可能是“正例”的排在后面,按此顺序逐个把样本作为“正例”进行预测,每次计算出当前的P值和R值,如下图所示
若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优。 - P和R指标有时会出现矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure,又称F-Score。F-Measure是P和R的加权调和平均:
F1的一般形式如下所示:
β度量了查全率对查准率的相对重要性 - ROC与AUC
- 代价敏感错误率与代价曲线
上面的方法中,将学习器的犯错同等对待,但在现实生活中,将正例预测成假例与将假例预测成正例的代价常常是不一样的,例如:将无疾病-->有疾病只是增多了检查,但有疾病-->无疾病却是增加了生命危险。以二分类为例,由此引入了“代价矩阵”(cost matrix)
在非均等错误代价下,我们希望的是最小化“总体代价”,这样“代价敏感”的错误率为:
代价曲线的绘制很简单:设ROC曲线上一点的坐标为(TPR,FPR) ,则可相应计算出FNR,然后在代价平面上绘制一条从(0,FPR) 到(1,FNR) 的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC 曲线土的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价,如图所示:
比较检验
- 假设检验
统计假设检验(hypothesis test)为我们进行学习器性能比较提供了重要依据.基于假设检验结果我们可推断出,若在测试集上观察到学习器 A 比 B好则A 的泛化性能是否在统计意义上优于 B,以及这个结论的把握有多大下面我们先介绍两种最基本的假设检验,然后介绍几种常用的机器学习性能比较方法.为便于讨论,本节默认以错误率为性能度量,用 错误率 表示 - t检验
- 交叉验证t检验
- McNemar检验
- Friedman检验与Nemenyi后续检验
偏差与方差
- 偏差指的是预测的期望值与真实值的偏差,方差则是每一次预测值与预测值得期望之间的差均方。实际上,偏差体现了学习器预测的准确度,而方差体现了学习器预测的稳定性。通过对泛化误差的进行分解,可以得到:
- 期望泛化误差=方差+偏差
- 偏差刻画学习器的拟合能力
- 方差体现学习器的稳定性
- 在欠拟合时,偏差主导泛化误差,而训练到一定程度后,偏差越来越小,方差主导了泛化误差