《机器学习》读书笔记2

来源:互联网 发布:工程项目软件 编辑:程序博客网 时间:2024/06/05 15:06

第二章 模型评估与选择


2.1 经验误差与过拟合

经验误差(empirical error):指学习器在训练集上的误差期望。

泛化误差(generalization error):学习器在新样本上的误差期望。

机器学习的目标是得到泛化误差小的学习器,然而很难,退而求其次,希望得到经验误差小的学习器,但是即使经验误差小,也不必然意味着泛化误差低,特别是如果学习器存在过拟合,则学习器的泛化误差反而可能升高。

 

过拟合(overfitting):把训练样本的个性当做了共性

欠拟合(underfitting):训练样本中蕴含的共性没有学到

其中,过拟合是机器学习需要解决的主要障碍,过拟合也是不能彻底解决的,只能缓解

 

2.2 评估方法

评估学习器的基本思路是通过测试误差来比较。

测试误差(testing error):学习器在测试集上的误差期望。

 

2.2.1 留出法(hold-out)

留出法直接将数据集划分为训练集和测试集,在训练集上学习出模型,在测试集上评估其测试误差。

留出法中,为保证数据分布的一致性,可采取分层采样(stratified sampling)的方式进行训练集和测试集的划分。还可采取多次随机划分、重复进行实验评估后取测试误差平均值的方式来评估。

 

在数据集确定的情况下,训练集和测试集如何平衡呢?类似“偏差-方差”关系,测试集小时,评估结果的方差较大,测试集大时,评估结果的偏差较大。

 

2.2.2 交叉验证法(cross validation)

交叉验证法(k折交叉验证)是讲数据集划分为k个大小相似的互斥子集,每个子集保持数据分布一致性,然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,对这k组训练/测试集进行k次训练和测试,最终获得k个测试结果的均值作为测试误差用于评估。

 

k折交叉验证也可以随机使用不同的划分重复p次,然后对这p次再平均,如“10次10折交叉验证”。

 

留一法(leave-one-out LOO)是k折交叉验证的极端特例,它的优点是不受随机样本划分方式的影响。

 

2.2.3 自助法 (bootstrapping)

自助法是在给定的含有m个样本的数据集中,每次随机拷贝一个样本放入训练集中,重复m次后,可得到一个具有m个样本的训练集,余下的未拷贝入训练集中的样本作为测试集,然后进行训练和测试,进而评估,称为“包外估计”(out-of-bag estimate)。按照理论,测试集中会包含36.8%的数据集样本,训练集中会包含63.2%的样本。

 

自助法的不足之处在于改变了训练集和数据集的分布一致性,引入了偏差

 

2.2.4 调参(parameter tuning)与最终模型

机器学习的参数包括两类:一类是学习算法(learning algorithm)的参数,所谓“超参数”,一类是模型(model)的参数,前者个数可能不多,后者个数可能不少。二者都可以进行调参,现实中常对每个参数选定一个范围和步长来进行调参。

 

2.3 性能度量

回归任务常用的性能度量是“均方误差”(mean squared error,方差):

 

错误率和精度也可以用于回归任务的性能度量。

聚类任务常用的性能度量可看第九章。

分类任务常用的性能度量是错误率、精度、查准率、查全率、F1等。

 

2.3.1 错误率与精度

略。

 

2.3.2 查准率(precision)、查全率(recall)和F1

分类结果混淆矩阵:

 

TP()

FN()

FP(假正)

TN()


二分类任务,查准率P与查全率R分别定义为:

 

P-R曲线:以P为纵轴,R为横轴所做的图。如果一个learner的PR曲线被另一个learner的曲线完全包住,则后者的性能优于前者,也可比较PR曲线包围的面积来确定哪个learner更优。

“平衡点”(Break-even point /BEP)是P=R时的取值。

 

F1度量是基于P和R的调和平均值:

 

,当P=R时,F1=BEP。

此外,还有F1的加权调和平均,以及宏查准率,宏查全率,宏F1,微查准率,微查全率,微F1。

 

2.3.3 ROC与AUC

ROC(Receiver Operating Characteristic)“受试者工作特征”曲线:纵轴是“真正例率”TPR,横轴是“假正例率”FPR:

 

AUC(Area Under ROC Curve):ROC曲线下的面积,ROC曲线上的面积恰为“损失”。

 

2.3.4 代价敏感错误率与代价曲线(cost curve)

略。


2.4 比较检验

以泛化错误率来做学习器的性能度量,假设检验中的“假设”是对学习器泛化错误率的某种判断或猜想。 

 

2.4.1 假设检验

 

可以使用二项检验(binominaltest)结合二项分布来判断在一定置信度下的单个学习器的泛化错误率。

在多次训练/测试后获得多个测试错误率的情况下,可使用t检验(t-test)结合t分布来判断一定置信度下的单个学习器的泛化错误率。

 

2.4.2 交叉验证t检验

两个学习器可以使用成对t检验(paired t-tests)来进行比较检验(也是结合t分布的)。

 

2.4.3 McNemar检验

对二分类问题,比较两个学习器的性能时,可采用“列联表”(contingency table)结合正态分布来比较。

 

2.4.4 Friedman检验与Nemenyi后续检验

对于多个学习器的性能比较,可使用Friedman检验结合正态分布х^2分布、F分布来判断这些算法是否性能都相同。如果不相同,则可使用Nemenyi后续检验来进一步区分各算法。

 

2.5 偏差与方差

“偏差-方差分解”(error-variance decomposition)是解释学习算法泛化性能的重要工具。泛化误差可以分解为偏差、方差和噪声之和:


偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。

方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。

噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

偏差-方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。 

 “偏差-方差窘境”( error-variance dilemma): 训练程度不足时,学习器拟合不足,偏差主导了泛化错误率;训练程度加深时,方差主导了泛化错误率;训练程度过度时,则发生过拟合。

 

须注意,偏差-方差分解适用于回归性任务,对于分类型任务不适用。

 

2.6 阅读材料

 略。


本章主要介绍了模型泛化性能评估的标准、指标、方法,以及对泛化性能的解释,泛化性能的评估最终还是一个一定置信度下的概率问题。


模型评估方法的基本方法就是留出法,其他无论交叉验证法、留一法、自助法都可视为留出法的变种。

 

学习了模型的评估方法后有一个问题,无论是留出法还是k折交叉验证法,如果多次随机划分,那每次的训练集都不一样,训练出来的模型也都不一样,测试误差的平均值还有意义吗?感觉这样做,评估的是学习算法,而不是模型!而根据NFL定理,学习算法的评估是没有意义的!感觉本章中很多地方是将算法和模型混为一谈的,希望能给说清楚。

 

再则,这些评估方法都有一个背景前提,那就是在统计学和机器学习理论发展的早期,用于训练和测试的数据集是有限的,基于有限的数据集要解决模型评估的方法,但是现在是大数据时代,在某些场景下,样本是非常充足的,所以模型的评估就完全可以采用随机再采样来进行评估。

原创粉丝点击