《机器学习(周志华)》——第2章 模型评估与选择

1、我们常把分类错误的样本数占样本总数的比例称为错误率(error rate),而(1-错误率)被称为精度(accuracy)

学习器在训练集上的误差称为训练误差(training error)或经验误差(empirical error),在新样本上的误差称为泛化误差(generalization error)

把训练样本自身的一些特点当做所有潜在样本都具有的一般性质,会导致泛化性能下降,这称为过拟合(overfitting);而如果对训练样本的一般性质尚未学好,则会出现欠拟合(underfitting)

造成过拟合是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性学到了,过拟合不能避免,只能缓解;欠拟合产生的原因是学习能力低下,解决方法是在决策时学习中扩展分支、在神经网络学习中增加训练轮数。

 

2、评估方法

(1)我们通常要将数据集进行适当处理,从中产生训练集S和测试集T,具体方法:

留出法(hold-out)

将数据集直接划分为两个互斥的集合,一个集合作为训练集S,另一个集合作为测试集T;单次留出法的结果通常不够可靠,一般要采用若干次随机划分、重复进行实验评估后取平均值作为评估结果;关于训练集和测试集的划分,常见做法是将大约2/3~4/5的样本用于训练,剩下的用于测试,但测试集至少也应含30个样例

交叉验证法(cross validation)

将数据集D划分为k个大小相似的互斥子集,每个子集尽量保证数据分布一致性(即正例和反例数量相等),每次用k-1个子集的并集作为训练集,余下的子集作为测试集,这样就进行了k次训练和测试,最终返回这k个测试结果的均值,这种方法称为k折交叉验证(k-fold cross validation),k常用的取值是10,其次是5,20;

为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,评估结果是这p次k折交叉验证结果的均值,常见的是10次10折交叉验证

自助法(bootstrapping)——有放回采样

给定m个样本的数据集D,每次随机从D中挑选一个样本拷贝放入D'中,再将该样本放回初始数据集D中,使其下次仍有机会被采到,重复m次之后得到包含m个样本的D';显然有一部分样本被多次采样,另一部分没有被采到过,没被采到的概率约为36.8%,我们将D'用作训练集D-D'用作测试集,也就是说我们约有1/3的没有出现在训练集的样本用于测试,这样的测试结果也成为“包外估计”(out-of-bag estimate)。

留一法

每次留下一个样本做测试集,其他样本做训练集,如果有k个样本,则需要训练k次,测试k次;留一法计算繁琐,但样本利用率高,适用于小样本的情况。

由于自助法产生的数据集会改变初始数据集的分布,容易引入估计偏差,所以常用于数据集较小的模型,初始数据量足够时,留出法和交叉验证法更常用。

(2)调参与最终模型:模型评估与选择中用于评估测试的数据集常称为验证集(validation set),在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。

 

3、性能度量(performance measure)

(1)常用的性能度量是均方差(mean squared error),把写学习器预测结果f(x)和真实标记y做比较:

更一般的,手机开分布D和概率密度函数p(·),均方误差可描述为:

(2)错误率和精度

对于样本集D的错误率定义为:

精度:acc(f; D) = 1-E(f;D)

一般的,对于数据分布D和概率密度函数p(·),有错误率:

 

(3)查准率(precision)和查全率(recall)

分类结果混合矩阵:

真实情况

预测结果

正例

反例

正例

TP(真正例)

FN(假反例)

反例

FP(假正例)

TN(真反例)

查准率 P = TP/(TP+FP) 查全率 R = TP/(TP+FN)

查准率和查全率是一对矛盾的度量,二者通常不可兼得;以查准率为纵轴,查全率为横轴,得到P-R曲线,如果一个学习器的P-R曲线被另一个学习器的曲线完全包住,则后者性能一定优于前者;若两个学习器的P-R曲线发生交叉,则无法断言(非要比较的话可以比较P-R曲线下的面积,面积大的更好);

BEP值(Break-Even Point)表示“查准率=查全率”时的取值;

F1度量:F1 = (2×P×R) / (P+R) = (2×TP) / (样例总数+TP-TN)(度量P-R曲线性能优劣)

可以表达我们对查全率和查准率的不同偏好,Fβ = [(1+β²)×P×R ]/ [(β²×P)+R],其中β=1时退化为F1,β>1时查全率有更大影响,β<1时,查准率有更大影响。

对于多个二分类混淆矩阵,有两种方法:一种是先在各混淆矩阵上分别计算出查准率和查全率,在计算平均值,得到“宏查准率”、“宏查全率”和“宏F1”;第二种是先将各混淆矩阵的对应元素进行平均,再基于这些平均值计算出“微查准率”、“微查全率”和“微F1”。

 

4、ROC和AUC

(1)我们通常选定一个阈值(threshold),将预测值和这个分类阈值进行比较,大于阈值分为正类,否则为反类;接着对测试样本排序,最可能的正例排在最前面,最不可能的正例排在最后面,分类过程就是选择“截断点”(cut point)将样本分为两部分;若我们更重视查准率,则选择排序靠前的位置进行截断,若更重视查全率,则选择靠后的位置截断。

 

(2)ROC(全称受试者工作特征),根据学习器预测结果对样例排序,按此顺序逐个把样本作为正例进行预测,计算“真正例率”(TPR = TP / (TP+FN))“假正例率”(FPR = FP / (TN+FP)),作为纵、横坐标绘制ROC曲线。

 

(3)ROC绘制过程,给定m+个正例和m-个反例,根据学习器预测结果对样例进行排序,然后把分类阈值设为最大,即把所有的样例均预测为反例,此时真正例率和假正例率均为0,标记点(0,0),接着,将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例。

 

(4)若要比较两个学习器的ROC曲线哪个更优时,合理的依据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)

 

5、代价敏感错误率和代价曲线

(1)二分类代价矩阵:

真实类别

预测类别

第0类

第1类

第0类

0

cost01

第1类

cost10

0

我们的目的是要最小化“总体代价”(total cost),假设第0类为正类,第1类为反类,令D+和D-分别代表正例自己和反例子集,则代价敏感(cost-sensitive)错误率为:

(2)在非均等代价下,代价曲线可以反映学习器的期望总体代价,代价曲线图的横轴是取值为[0,1]的正例概率代价:

其中p是样例为正例的概率;纵轴是取值为[0,1]的归一化代价:

FPR是假正例率,FNR = 1-TPR 是假反例率。

 

(3)代价曲线的绘制:ROC曲线上每一点对应代价平面上的一条线段,设ROC曲线上点的坐标为(FPR, TPR),可计算出对应的FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下的面积及表示了该条件下的期望总体代价;如此将ROC曲线上的每个点转换为代价平面上的一条线段,然后取所有线段的下界围成的面积即为在所有条件下学习器的期望总体代价

 

6、假设检验

(1)交叉验证t检验:为保证测试错误率是独立的,我们采用“5×2交叉验证”(即5次2折交叉验证)(t分布);

(2)McNemar检验:两学习器的差别列联表,由于性能相同,有e01 = e10,则|e01 - e10| 服从正态分布(平方服从自由度为1的卡方分布);

(3)针对在一组数据集上对多个算法进行比较,一种方法是在每个数据集上分别列出两两比较的结果,在两两比较时使用前述方法;另一种方法直接使用基于算法排序的Friedman检验和Nemenyi后续检验(F分布)

 

7、偏差与方差

(1)对于测试样本x,令yD为x在数据集中的标记,y为x的真实标记,f(x;D)为训练集D上学得模型f在x上的预测输出,则期望预测为:

使用样本数相同的不同训练集产生的方差:

噪声为:

期望输出与真实标记的差别称为偏差,即:

期望泛化误差经推导得到:

即期望泛化误差是偏差、方差和噪声之和;偏差度量了学习算法的期望预测和真实结果的偏离程度;方差度量了同样大小的训练集的变动所导致的学习性能的变化;噪声表达了当前任务上任何学习算法所能达到的期望泛化误差的下界。

通常来说,随着训练程度的加深,方差渐渐超越偏差主导了期望泛化误差错误率,可能会出现过拟合现象

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