第二章 模型评估与选择
2.1经验误差与过拟合
在m个样本中有a个样本分类错误
-
错误率:分类错误的样本数占样本总数的比例 (E = a / m)
-
精度:分类正确的样本数占样本总数的比例,与错误率互补(e = 1-E = 1-a/m)
-
误差:实际预测输出与样本真实输出之间的差异。
学习器在训练集上的误差称为“训练误差”;在新样本上的误差称为“泛化误差”
我们希望得到的是泛化误差小的模型,但是我们不知道新样本是什么样的,能做到的就只有降低训练误差。有时候我们能学习得到一个训练误差很小,在训练集上表现很好的模型,但是这样的模型在新样本的表现并不好,并不是我们想要的。
-
过拟合:学习器把训练样本学习的“太好”,将训练样本本身的特点 当做所有样本的一般性质,导致泛化性能下降;学习能力过于强大,以至于把训练样本所包含到的不太一般的特性都学到了
solve:1.正则化 ;2.减少迭代次数;
-
欠拟合:对训练样本的一般性尚未学好;学习能力低下
solve:1.决策树:拓展分支 ; 2.神经网络:增加训练轮数;
具体表现:
2.2评估方法
通常,我们使用一个测试集来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似。测试集是从样本真实分布中独立采样获得,所以测试集要和训练集中的样本尽量互斥。通常将包含m个样本的数据集分为测试集T和训练集S,下面介绍几种常用的方法:
2.2.1留出法
(分一次 互斥集)
-
数据集D划分为两个互斥的集合
-
训练/测试集的划分要尽可能保持数据分布的一致性
-
一般若干次随机划分、重复实验评估后取平均值
-
大约2/3~4/5的样本用于训练,剩余测试(一般而言,测试集至少含30个样例)
缺点:留出法只划分一次集合,随机性太大,说服力不强
2.2.2交叉熵验证法
(分多次 对k折形成多次互斥集)
-
先将数据集D划分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。
-
交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为强调这一点,通常把交叉验证法称为"k折交叉验证"。k最常取10。
优点:交叉验证 每一个样本数据都即被用作训练数据,也被用作测试数据。避免的过度学习和欠学习状态的发生,得到的结果比较具有说服力。
特例:留一法
-
留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有k个样本,则需要训练k次,测试k次。
-
如果设原始数据有N个样本,那么每个样本单独作为验证集,其余的N-1个样本作为训练集,所以LOO-CV会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标。
优点:
1.我们用几乎所有的数据进行训练,然后用一个数据进行测试,样本利用率高;
2.确定性:实验过程没有随机因素,重复实验的结果也都相同
缺点:计算繁琐,适用于小样本情况
2.2.3自助法
-
以自助采样法为基础,对数据集D有放回采样m次得到训练集d,用D\d做测试集;实际模型和预期模型都使用m个训练样本
-
约有1/3的样本没有在d训练集中出现,结果称为“包外估计”
优点:
1.在数据集较小、难以有效划分训练/测试集时很有用
2.能从初始数据集中产生多个不同的训练集,对集成学习等方法有很大好处
注意:
由于改变了数据集分布,可能引入估计偏差,在数据量足够时,留出法和交叉验证法更常用。
2.2.4调参与最终模型
-
大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模型的性能往往有显著差别,这就是通常所说的"参数调节"或简称"调参" (parameter tuning)。
-
学习算法的很多参数是在实数范围内取值,因此,对每种参数取值都训练出模型来是不可行的。
-
常用的做法是:对每个参数选定一个范围和步长λ ,这样使得学习的过程变得可行。例如:假定算法有3 个参数,每个参数仅考虑5 个候选值,这样对每一组训练/测试集就有555= 125 个模型需考察,由此可见:选对一个参数(即经验值)对于算法人员来说是有多么的happy。
-
最后需要注意的是:当选定好模型和调参完成后,我们需要使用初始的数据集D重新训练模型,即让最初划分出来用于评估的测试集也被模型学习,增强模型的学习效果。用上面考试的例子来比喻:就像高中时大家每次考试完,要将考卷的题目消化掉。
-
通常,我们将给定的数据集划分为训练集和验证集,基于验证集上的性能来进行模型的选择和调参
2.3性能度量
定义:对学习器的泛化性能进行评估,不仅需要有效可行的实验方法还需要有衡量模型泛化能力的评价标准,此评价标准就是性能度量。
模型的好坏是相对的,不仅取决于算法和数据,还决定于任务需求。
本节下面主要介绍分类任务中常用的性能度量:
2.3.1 错误率与精度
在分类任务中,即预测离散值的问题,最常用的是错误率和精度
错误率是分类错误的样本数占样本总数的比例,
精度则是分类正确的样本数占样本总数的比例,易知:错误率+精度=1。
注:Ⅱ()表示-->示性函数,满足括号内条件则值为1,否则为0.
2.3.2查准率、查全率与F1
查准率又称准确率
查全率又称召回率
TP的意思是True Positive ,FN是Flase Negative
混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式。
查准率P的意思是在预测结果中挑到真确的比例,而后根据学习器的预测结果按正例可能性大小对样例进行排序,并逐个把样本作为正例进行预测,则可以得到查准率-查全率曲线,简称“P-R曲线”。
平衡点(BEP)是曲线上“查准率=查全率”时的取值,可用来用于度量P-R曲线有交叉的分类器性能高低,我们的主观当然是P和R越大越好,所以说若一个曲线能被另一个完全包住则说明被包住的性能没有外面的优越,比如优越性能排行:A>B>C,在很多情况下,一般是比较P-R曲线的面积来判断优越性,面积越大则越好。但是这个面积值又不太容易估算,我们就选择平衡点的值来进行比较,值越大越好。但是BEP又过于简单了,于是采用F1度量:
F1是基于查准率与查全率的调和平均定义的:
Fβ是加权调和平均:
书上还有关于宏和微 查准率、查准率、F1,比较好理解P32
2.3.3 ROC与AUC
ROC(受试者工作特征)曲线:根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以他们为横纵坐标作图。
纵轴:真正例率(TPR)
横轴:假正例率(FPR)
绘图过程:
与P-R图相似,若一个学习器的ROC曲线被另一个学习器的曲线完全包住,后者性能优于前者;两者发生交叉的时候通过图线包裹的面积大小作为判断标准;
AUC:ROC曲线下的面积