距离上一次翻开西瓜书快要接近一个月的时间了,零零碎碎之后现在继续学习机器学习。
一、经验误差与过拟合
- 分类错误的样本数占样本总数的比例称为“错误率”;m个样本中有a个样本分类错误,则错误率=a/m
- 误差则为学习模型实际预测输出与样本的真实输出之间的差异;
- 学习模型在训练集上的误差称为“训练误差”或“经验误差”
- 学习模型在新的样本上的误差称为“泛化误差”
- 过拟合(过配):学习模型把训练样本自身的一些特点当做了所有潜在样本都会具有的一般性质,导致泛化能力下降;欠拟合(欠配):对训练样本的一般性质尚未学好
而在实际问题当中,我们要考虑的首先就是“模型选择”,在众多的学习模型中选择一款学习算法,同时也使用不同的参数配置来实现不同的模型结果,而理想的解决方案当然
是对候选模型的泛化误差进行评估从而获得最佳最优模型,但是由于训练中存在的过拟合问题,从而在模型评估与选择上进行研究。
二、评估方法
一般情况,我们在实际的试验中用实验测试来对学习模型进行泛化误差评估并作出选择。通常,选择一个“测试集”来测试学习模型对新样本的判别能力,同时将“测试误差”作为
泛化误差的近似估计。这里的测试集应该尽可能选择与训练集互斥(测试样本尽量不要在训练样本中出现)。此外,在实际操作中,我们在只有一个数据集D的情况下,往往对数据集
进行适当的处理,从而产生训练集S和测试集T。
- 留出法:将数据集D划分为两个互斥的集合,D=S∪T,S∩T=∅,同时尽可能保持数据分布的一致性;
- 单次留出法估计结果一般存在偏差,故采用若干次随机划分并重复训练测试最后取其均值作为留出法的评估结果
- 一般将数据集D中2/3~4/5作为训练,同时测试集数量要大于30
- 注:测试集小,评估结果方差较大;训练集小,评估结果偏差较大
- 交叉验证法:将数据集D按照分层采样规则(尽可能保持数据分布的一致性)划分为k个大小相似的互斥集合,每次将其中k-1个集合合并和另外一个集合组合成训练/测试集,然后进行k次训练和测试并取均值
- k最常用取10,其他5、20,当k=m时,交叉验证法即留一法
- 为了减少划分方式的差异引入的差别,随机使用不同的划分方式重复p次,最后求p次k折交叉验证结果的均值作为评估结果
- 自助法:在给定包含m个样本的数据集D,随机从D中抽取1个样本,拷贝到数据集D‘,重复以上m次之后,然后将数据集D‘作为包含m个样本的训练集D’,而D\D‘作为测试集
- 利用概率论知识求得,样本在m次采样中始终没有被采用的概率为0.368,故理解为数据集D中有36.8%的样本未出现在采样数据集D‘
- 自助法在数据集较小、难以有效划分训练/测试集时很有用
三、性能度量
在完成前面所述的数据集的划分以及模型的调参之后,我们将在该学习模型下得到其泛化性能,因此衍生出衡量模型泛化能力的评价标准--性能度量。而性能度量反映了任务需求,
不同模型对应的评判结果往往不同,因此任务需求决定模型的好坏。
- 错误率与精度(和第一节小结定义一样)
- 错误率为分类错误的样本数占样本总数的比例。E(ƒ:D)=1/m*∑∩(ƒ(χi)≠γi)
- 精度为分类正确的样本数占样本总数的比例。acc(ƒ:D)=1-E(ƒ:D)
- 查准率(准确率)、查全率(召回率)和F1
- 在实际模型预测结果当中,可以分为真正例TP、假正例FP、假反例FN、真反例TN
-
分类混淆矩阵 真实情况/预测结果 正例 反例 正例 TP FN 反例 FP TN
-
- 查准率P=TP/(TP+FP),查全率R=TP/(TP+FN),两者关系:查准率和查全率互相矛盾
- 根据预测结果绘制“P-R曲线图”,考虑不同学习模型的P、R的性能度量,引入“平衡点”(查准率=查全率的取值)来判定学习模型的好坏
- 同时采用常用的F1度量标准(根据P和R的调和平均定义),F1=2*P*R/(P+R)=2*TP/(N+TP-TN)
- F1的一般形式为Fβ(加权调和平均1/Fβ=1/(1+β²)*(1/P+β²/R),β大于1时查全率影响更大,β小于1时查全率影响更大
- 在实际模型预测结果当中,可以分为真正例TP、假正例FP、假反例FN、真反例TN
- ROC(“受试者工作特性”曲线)、AUC(ROC曲线面积)
- “真正例率”TPR=TP/(TP+FN),“假正例率”FPR=FP/(FP+TN)
- 代价敏感错误率、代价曲线
-
二分类代价矩阵 真实/预测 0类 1类 0类 costii=0 cost01 1类 cost10 0 - 正例概率代价:P(+)cost=p*cost01/(p*cost01+(1-p)*cost10),p为样本的正例概率
- 归一化代价:costnorm=FNR*p*cost01+FPR*(1-p)*cost10/(p*cost01+(1-p)*cost10)