机器学习之一:模型评估与选择(第一章+第二章)

写在前面:

这个系列是清华大学周志华《机器学习》的学习笔记,向周教授致敬,希望大家去买书。


1.绪论

计算机科学如果是研究“算法”,机器学习就是研究“学习算法”的学问。

对于数据预测,离散值预测的学习任务称为“分类”(classification),连续值的学习任务称为“回归”(regression)。

学习的得到模型适用于新样本的能力,称为“泛化”(generalization)能力。如果没有泛化能力(只有归纳能力没有演绎能力),就是所谓的“机械学习”。


归纳偏好

任何一个有效的机器学习算法必有其归纳偏好,否则可能得到几个不同的但都符合训练集的假设,而没有确定的学习结果。

“奥卡姆剃刀”(Occam's razor)是一种常用的、自然科学研究中最基本的原则,即“若有多个假设与观测一致,则选那个最简单的那个。”

脱离具体问题,空谈“什么学习算法更好”毫无意义,因为“天下没有免费午餐”NFL定律,任何两个算法在训练集以外的误差期望是相同的。(这个点证明过于理论)


2.模型选择与评估

2.1 经验误差与过拟合

“过拟合”(overfitting):当学习器把训练样本学的“太好”了时候,很可能把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,导致泛化能力下降。是机器学习的重要障碍。机器学习面临的问题的通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内运行完成,如果可以彻底避免过拟合,意味着我们构造性的证明了“P=NP”。因此过拟合无法避免

“欠拟合”(underfitting):训练样本的一般性质尚未学习好。容易克服,如神经网络中增加训练轮数。

2.2 评估方法

泛化误差无法直接过去,训练误差又存在过拟合,如何评估一个学习模型呢?

答案是采用“测试集”(testing set)。尽可能与训练集互斥。

如何从一个数据集中产生训练集和测试集?方法如下:

2.2.1 留出法

直接划分为两个互斥的集合,尽可能保持数据的一致性,保留类别比例的采样方法成为“分层采样”,如保持正反例比例相同。

此外,即使比例相同,划分方式也多种多样,影响训练结果。因此留出法一般采用若干次随机划分、重复进行试验评估后取平均值作为评估结果。

一般将2/3~4/5的样本用于训练。

2.2.2 交叉验证法

将数据集划分为k个大小相似的互斥子集,每个子集尽可能保持数据分布一致性。然后每次用k-1个子集作为训练集,剩下的那个做测试集,就可以得到k组数据,最后去k组测试结果的均值。k常取10,称为10折交叉验证。

与留出法类似,也可以采用多种方式划分。如采用10中划分方式,称为10次10折交叉验证。

2.2.3 自助法

给定大小为m的数据集D,进行采样得到数据集D'。过程为m次有放回的抽样。那么一部分样本在D'中多次出现,而一些样本不出现。样本在m次采样中市容不被采到的概率是(1-\frac{1}{m})^m,取极限得:

\lim_{m \to \infty} (1-\frac{1}{m})^m=\frac{1}{e}\approx 0.368

然后将D'作为训练集,D\D'作为测试集。

自助法在数据集较小、难以有效划分是很有用。但改变了初始数据集的分布,所以当数据足够时,采用留出法和交叉验证更好。

注:模型实际应用中碰到的数据集成为测试数据,为加以区分,将模型评估与选择中用于评估测试的数据集成为“验证集”(validation set)。

2.3 性能度量

有了评价方法,还要有评价指标。如回归任务最常用的性能度量是“均方误差”。

2.3.1 容错率和精度

2.3.2 查准率P、查全率R和F1

P跟R一般矛盾,可绘制P-R曲线。P=R的点称为平衡点(Break-Even Point ,BEP),可用平衡点来衡量优劣。

BEP还是过于简化,常用F1进行度量。是一个调和平均相关的值。

2.3.3 ROC与AUC

2.3.4 代价敏感错误率与代价曲线

2.4 比较检验

检验方法的部分,等日后有了自己的算法,需要检验的时候再进行补充,暂缺。

 

你可能感兴趣的:(机器学习)