2.1 经验误差与过拟合
- 错误率E:分类错误的样本数 / 样本总数 , 即a个样本分类错误,一共有m个样本,则错误率 E = a/m。
- 精度acc:1 - E,即 1 - 错误率。
-
误差:预测输出 与 实际输出 之间的差异。
1)训练误差:在训练数据集上的误差
2)泛化误差:在新样本数据上的误差
在实际上,我们需要的是在新样本上,泛化误差小的学习器。
为了达到此目的,要在从训练样本中尽可能学出适用于所有新样本的"普遍规律",这样才能在遇到新样本时做出正确的判别。
但对训练样本有以下两个问题:
欠拟合:对样本的一般性质没有学好。
如对树叶的性质进行学习,树叶是绿的,见到绿的就认为是树叶,说明对树叶的性质还学不完整。-
过拟合:对样本的特殊性质学得太好。
如对树叶的性质进行学习,一些树叶边缘有锯齿,若有新树叶出现,该树叶边缘无锯齿,则认为不是树叶,但本身还是树叶,说明对树叶的性质学习得太过。通俗来讲,可以比喻为:
欠拟合就是学渣,学的东西不够,需要多学;过拟合就是学神,学得东西过多,平常的东西会想得过于复杂。欠拟合容易克服,而过拟合造成的结果不可逆。
过拟合与欠拟合.png
-
模型选择问题:
在现实中,有很多学习算法,解决相应的问题需要相应的算法建立模型。
即 给定一堆数据,选择一个模型,该模型的参数要使得泛化误差最小。如线性拟合: h(x) = θ1 + θ2 * x; 泛化误差:h(x) - y;代价函数J(θ1,θ2);参数θ1、θ2要使得minJ(θ1,θ2)
2.2 评估方法
评估原则:通过对泛化误差进行评估从而做出选择。
因此,需要保留一个测试集,来测试学习器的判别能力,且测试集尽可能与训练集不同。
假设我们有一个数据集D,包含n个样本,分成训练集S和测试集T。
-
方法1:留出法
直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
注意1:S和T 要保持数据分布一致性,因此采用分层抽样。
如100例,S = 70,T = 30,S中有35例是正例,35例是反例;T中有15例是正例,有15例是反例。注意2:保持数据排序一致性,如S中前35例是正例或后35例是反例。
注意3:单次使用留出法的结果是不可靠的,需要多次重复留出法。
一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果.注意4:将大约 2/3 到 4/5 的样本用于训练,剩余样本用于测试.
-
方法2:交叉验证法
将数据集D划分为n个大小相同的互斥子集,每个子集尽可能通过分层抽样保持数据一致性。
每次用n-1个子集作为训练集,剩余作为测试集,可以进行n次训练和测试,最终返回n个结果的均值。
n一般取10。由于有多种划分方式,因此要随机进行不同的划分,重复p次n折交叉验证法。
交叉验证法.png特殊的交叉验证法:留一法
就是一个样本就是一个子集,即n = m(n个子集就是m个样本)
优点:留一法的评估结果往往被认为比较准确。
缺点:当数据集较大时,训练m个模型的计算开销可能是难以忍受的。 -
方法3:自助法
在数据集D中,选取一个样本,将该样本复制,然后将复制的样本放入到D'中,
再将原始数据放回D,使得样本可能重复抽到,执行m次,得到有m个样本的D'。
通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集 D'中。
将D'作为训练集,(D减D')作为测试集。自助法在数据集小、难以有效划分训练/测试集时比较有效
自助法能从初始数据集中产生不同的多个训练集,这对集成学习等方法有好处。以上三种方法中,更常用的是留出法和交叉验证法。
-
调参与最终模型
1)调参:学习算法的参数需要设置、调节,参数配置不同,得到的模型完全不同。
参数调得好不好往往对最终模型性能有关键性影响.2) 最终模型:利用训练集S得到的参数和算法已定的模型不是最终模型,而用包括测试集T的数据集D来重新训练的模型,才是最终模型。
2.3 性能度量
衡量模型泛化能力的评价标准。
在比较模型的好坏时,不同的性能度量会导致不同的结果,而模型的好坏不仅仅取决于算法和数据,更取决于任务需求。
常用的性能度量
1. 回归中是——均方误差,即

-
分类
1) 错误率与精度
错误率E:分类错误的样本数 / 样本总数 , 即a个样本分类错误,一共有n个,错误率 E = a/n精度acc:1 - E,即 1 - 错误率。
2) 查准率、查全率和F1
二分类中,根据学习器的 预测类别 和 真实情况类别 可以组合划分为
真正例(true positive)、假正例(false positive)
真反例(true negative)、假反例(false negative)
四种情形 TP FP TN FN
样例总数n = TP + FP + TN + FN;
分类结果为混淆矩阵:
分类结果混淆矩阵.png
-
查准率P:检索出的信息中有多少比例是用户感兴趣的查准率.png
-
查全率R:用户感兴趣的信息中有多少被检索出来了查全率.png
查准率越高,查全率越低;查准率越低,查全率越高。
P-R图:查准率为纵轴,查全率为横轴
平衡点:45°线与PR曲线相交的那一个点,即 P = R

在进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者,如A比C好;若两个曲线相交,那么平衡点大的那个比较好,如A比B好。
-
F1
用平衡点来衡量过于简单,因此使用F1.png
当对查全率,查准率有不同偏好时用Fβ
-
Fβ:Fβ.png
β>0,度量了查全率对查准率的相对重要性
β<1,查准率有更大影响
β=1,为标准的F1
β>1,查全率有更大影响
当有多次训练/测试、多个训练集上训练测试或者多分类任务等情况时,有n个二分类混淆矩阵
此时要综合考察查准率和查全率
在每个混淆矩阵算出P、R、F1然后进行平均值计算
得到 宏-P、宏-R、宏-F1



还可先将各混淆矩阵的对应元素进行平均,
得到 TP FP TN FN平均值,再基于这些平均值计算出
"微查准"(micro-P)、 "徽查全率" (micro-R) 、"微F1" (micro-F1)



3)ROC、AUC
阈值:一个将样本分为正例和反例的"截断点"。
不同的任务需求,阈值不同。
ROC曲线:根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值(TPR、FPR),分别以它们为横、纵坐标作图就得到了"ROC 曲线"。
纵轴:真正例率(TPR) 横轴:假正例率(FPR)



若一个学习器的ROC曲线被另一个学习器的曲线完全"包住",则可断言后者的性能优于前者;
若两个学习ROC曲线发生交叉,则难以一般性地断言两者孰优孰 此时如果一定要进行比较。
较为合理的判断依据是比较ROC线下的面积,即AUC。

4) 代价敏感错误率、代价曲线
在前面的性能度量中,都忽视了判断错误带来的后果,而下面的性能度量就考虑了判断错误的后果。
代价敏感错误率:简单来说就是衡量预测错误带来的结果代价。
代价矩阵:

costij 表示第i类样本预测成第j类样本造成的代价,一般costii=0;
若cost01 > cost10,说明将第0类判断为第1类带来的损失更大
代价敏感错误率 = (1/m) * (Σ将正类样本预测错误 * cost01 + ∑将反类样本预判错误 * cost10)

代价曲线:
设p为样本为正例的概率
横轴:正例概率代价,取值[0,1]

纵轴:归一化代价,取值[0,1]

绘制:
- ROC曲线上每一点对应了代价平面上的一条线段,设ROC线上点的坐标为(TPR,FPR)
- 则可相应计算出FNR,然后在代价平面上绘制一条从(O,FPR)到(l,FNR)的线段,
- 线段下的面积即表示了该条件下的期望总体代价;
- 如此将 ROC 曲线上的每个点转化为代价平面上的一条线段,
-
然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价。代价曲线.png
2.4 比较检验
本节默认以错误率为性能度量,用E表示.
- 假设检验
泛化错误率E:学习器在一个新样本上犯错的概率为E
测试错误率E':测试样本中有E' * m个分类错误


给定错误测试率E',当E = E'时P最大。
1)二项检验
假设E < E0,在1-a的概率内所能观测到的最大错误率:
有E(临界值) = max E,使得下式成立

此时若测试错误率E'小于临界值E*,则根据二项检验可得出结论:
在a的显著度下,假设"E<=E0"不能被拒绝,即能以1-a的置信度认为,学习器的泛化错误率不大于E0;否则该假设可被拒绝,即在a的显著度下可认为学习器的泛化错误率大于E0。
2)t检验
假设有k个测试错误率E1,E2,E3,……,Ek,则
平均错误率μ:

方差σ²:



当|μ - E0|在临界值范围[t-a/2,ta/2]之内,则不能拒绝假设"μ=E0",即认可泛化错误率为E0。
-
交叉验证t检验(两个算法的比较)
基本思想:比较EAi和EBi
学习器A和B,使用k折交叉验证法得到的测试错误率分别为:
EA1、EA2、……、EAk 和 EB1、EB2、……、EBk;
EAi和EBi是第i折训练测试下的结果,可以比较每折的错误率来衡量学习器的性能。

小于临界值,则假设不能拒绝,认为两个学习器的性能没有大差别;
否则可认为两个学习器的性能有显著差别,且平均错误率较小的那个学习器性能较优.
一般采用 5次2折交叉验证法:
变量Tt服从自由度为5的t分布,当a=0.05,双边临界值t(a/2,5)=2.5706;当a=0.1时,为2.0150。
-
McNemer检验(两个算法的比较)
对于二分类问题,学习器A和B分类结果的差别可以用列联表表示,列联表.png
若e01 = e10,则 | e01 - e10 | 服从正态分布,均值为1,方差为e01 + e10,变量Tχ2服从自由度为1的卡方χ2分布。
变量T服从自由度为1的卡方分布.png
给定显著度a,当Tχ2小于临界值时,不能拒绝假设,即认为两学习器的性能没有显著差别;
否则拒绝假设,即认为两者性能有显著差别,且平均错误率较小的那个学习器性能较优。
自由度为1的χ2检验的临界值当α=0.05时为3.8415,α= 0.1时为2.7055。
https://www.bilibili.com/video/av85871033?from=search&seid=12016918488552627931
对McNemer检验的视频讲解
-
Friedman检验 与 Nemenyi后续检验(多个算法的比较)
Friedman检验:
https://www.bilibili.com/video/av25213582?from=search&seid=5390506455816594469
2.5 偏差与方差

偏差度量了算法的预测与真实结果的偏离程度,刻画了算法的拟合能力。
方差度量了同样大小训练集的变动所导致性能的变化,即数据变化对性能的影响程度。









