一、经验误差与过拟合
-
误差率
分类错误的样本数占样本总数的比率。 -
精度
分类正确的样本数占总数的比率。 -
误差
学习器的实际预测输出与样本的真实输出之间的差异。 -
训练误差(经验误差)
学习器在训练集上的误差。 -
现状
很多情况下,可以学的一个经验误差很小、在训练集上表现很好的学习器;甚至对训练样本的分类可以达到100%的准确。 -
挑战
这样的学习器在多数情况下并不好。 -
实际期望
- 目标:让学习器在新样本上表现很好;
- 方法:从训练样本中尽可能学出适用于所有潜在样本的 “普遍规律” ;
- 挑战:
- 过拟合:把训练样本学得 “太好”,可能把训练样本本身的特性,当做所有潜在样本都会具有的一般性质;导致性能下降;
- 欠拟合:对训练样本的一般性质尚未学好。
- 原因分析
- 过拟合:学习能力过于强大,把训练样本所包含的特性都学到了;
- 欠拟合:学习能力低下;
- 解决办法:
- 欠拟合(简单):在决策树学习中,扩展分支;在神经网络学习中,增加训练轮数;
- 过拟合(复杂):是机器学习面临的关键障碍,各类学校西算法都有针对过拟合的措施,只能缓解,无法彻底避免;
理解:机器学习面临的问题,通常是NP难的,甚至更难;而有效的学习算法必然是在多项式时间内运行完成,若可彻底避免过拟合,则通过经验误差最小化就能获得最优解。这与 “P=NP” 矛盾;只要相信 “P != NP”,那么过拟合不可避免;
- 挑战
- 挑战:对于同一个任务,有多种学习算法可供选择,同一个学习算法设置不同参数,也会得到不同的模型;
- 存在的问题:选择哪一个学习算法?选择哪一种参数配置?
- 理想解决办法
- 对候选模型的泛化误差进行评估;
- 选择繁华误差最小的那个模型。
- 现实挑战:
- 无法直接获得泛化误差;(潜在样本未知)
- 训练误差不适合作为标准;(过拟合并不好)
二、评估方法
1. 现实中如何选择学习算法和参数配置?
可通过实验测试来对学习器的泛化误差进行评估,进而做出选择。
2. 测试集
- 作用:测试学习器对新样本的判别能力,然后,以测试集上的 “测试误差” 作为泛化误差的近似;
- 获得:通常假设测试样本是从样本真实分布中独立同分布采样获得。
- 注意:测试集应该尽量与样本集互斥,也就是,样本尽量不在训练集中出现,未在训练过程中使用过。
3. 原因
学校的学习锻炼的是学生 “举一反三” 的能力,不应该出之前学过的题目。
4. 获得测试集和训练集
- 方法:对数据集进行适当的处理,从中产生训练集和测试集。
5. 获取方法1:留出法
1)留出法
直接将数据划分为两个互斥的集合,其中一个作为训练集,另一个作为测试集。
用训练集训练出模型后,用测试集评估误差。
2)需要的性质
- 训练集和测试集的划分尽可能保持数据分布的一致性;
- 避免因数据划分过程引入额外的偏差,而对最终结果产生影响;
3)使用方法
采用随机划分的方法,重复进行实验评估后,取平均值作为留出法的训练结果。
4)比例问题
若训练集太大,则训练处的模型接近了数据集的模型;若训练集太小,那么,评估结果可能不够精确。需要在二者之间做一个均衡;
- 均衡:一般训练集和测试集的比例:(2/3 - 4/5);
6. 获取方法2:交叉验证法
1)原理
- 将数据集 D 划分为k个大小相似的互斥子集,每个子集尽量保持数据分布的一致性;
- 从中选取 k-1 个子集作为训练集,剩下一个子集作为测试集;
- 从而可以获得 k 个训练集/测试集的组合;
- 最终获得k个测试结果的均值。
2)子集的划分
- 挑战:数据集 D 划分为k个子集,存在多种划分方式;需要减少因样本划分不同而引入的差异。
- 解决:随机使用不同的划分重复 p 次,最终获得的结果是 p 次k折交叉验证结果的均值。
3)特殊案例:留一法
样本有m个,划分子集数 k=m,也就是说,只保留一个样本不训练。
- 优势:一般认为它评估的结果比较准确
- 缺陷:样本大时,需要训练的模型太多。
7. 分析
- 留出法:实际评估的模型使用的训练集比数据集小,引入了因样本规模不同而导致的偏差;
- 留一法:计算复杂度高;
动机:需要 ① 减少训练样本规模不同的影响;② 高效的进行实验估计;
8. 获取方法3:自助法
1)引入的原因
希望能够减少训练样本规模不同造成的影响,同时高效的进行试验估计;
2)步骤
- 首先,从初始数据集 D 中随机挑选一个样本拷贝放入D’。
- 重复上述过程,m次,D’ 中也包含 m 个元素;(数据集包含m个元素)
- D’ 作为训练数据,D\D’ 作为测试数据。
3)性能
- D’ 包含不重复的元素大约占 2/3,D\D’ 大约占1/3;
- 别称:包外估计;
4)特点
- 长处:在数据集较小,难以有效划分训练集/测试集的情况下很有用;
-分析:自助法产生的数据集改变了初始数据及的分布,引入了额外的估计偏差; - 短处:在数据量充足的情况下,留出法和交叉验证法更加常用;
9. 调参与最终模型
1)引入原因
大多数学习算法都需要设置参数,不同的设定参数,学得的模型有显著差别;
不仅需要选择学习算法,还需要设定算法的参数;
2)解决思路
对每种参数进行设定,并训练出模型,选出最好的;
3)挑战
学习算法很多参数取值在实数范围内,无法对每种参数配置进行训练;
4)现实解决办法
对每个参数选定一个变化范围和变化步长;
5)尚存挑战
很可能得到的结果不是最优结果;
即使,选定步长和范围,最终训练仍然很复杂,因为,需要训练的模型太多;
6)验证集
通常我们将实际遇到的数据称为 “测试集”,为加以区分。我们将模型评估与选择过程中,用到的测试数据称为“验证集”;
三、性能度量
衡量学习器的泛化性能,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。
1)性质
对比不同的模型时,使用不同的性能度量会导致不同的评判结果,所以,模型的好坏是相对的;
它取决于算法、数据和任务需求;
2)回归任务的性能度量
均方误差;
1. 错误率与精度
1)错误率
分类错误的样本数占样本总数的比例;
2)精度
分类正确的样本数占样本总数的比例;
2. 查准率、查全率与F1
1)引入原因
错误率与精度虽然常用,但是,不能满足所有的任务需求;(例如,判断选中的好坏)
2)举例
例1:瓜农拉来一车西瓜,我们希望知道挑出的西瓜中有多少是好瓜;
例2:web搜索中,我们关心 “检索出的信息有多少比例是用户感兴趣的”;
3)查准率
查准率 = 真正例/(真正例+假正例)= 真正例/判断总正例;
4)查全率
查全率 = 真正例/(真正例+假反例) = 真正例/真实总正例;
5)挑战
可能相互矛盾;
查准率高,那么查全率低;(误判为正确的样本少,少出错)
查全率高,那么查准率低;(漏掉的正确样本少,少漏掉)
6)举例
想要查全率高,那么希望把所有瓜都选上,但是,会选出很多坏瓜,查准率就会低;
想要查准率高,那么希望选把握大的瓜,但是,会漏掉不少好瓜,查全率就会低;
7)P-R图的理解
若A模型包住B模型,那么,认为A模型优于B模型;
若二者相交,那么,可用平衡点判断;
8)平衡点
查准率=查全率的时候,二者的取值;
缺陷:太过简化
9)更常用的度量:F1度量
F1 = (2✖️查准率✖️查全率)/(查准率+查全率)
10)差异化需求
商品推荐:希望查准率较高,不希望打扰用户;
逃犯检索:希望查全率较高,不希望漏掉逃犯;
11)宏查全率和宏查准率
通常,我们需要对模型进行多次训练和测试,于是得到多个二分类混淆矩阵,对这些测试的查全率和查准率取平均,即可获得宏查全率和宏查准率;
3. ROC和AUC
1)引入原因
一个训练获得的模型,在实际测试中并不会直接判断好坏,而是以概率的形式判断好坏,所以,需要确定概率的阈值来划分好坏,并且确定模型的评估精度;
2)ROC
受试者工作特征(Receiver Operating Characteristic)
通过一步步的改变阈值,增加真正例数量,来确定ROC图;
3)AUG
ROC曲线的下半部分区域(Area Under ROC Curve);
用来衡量模型的好坏,区域越大越好;
4)代价敏感错误率与代价曲线
4. 代价敏感错误率与代价曲线
1)引入原因
前面讲的错误和正确是等待代价的,但是,现实情况中,错误和正确的代价不同;
举例:诊断病人,若将有病诊断为无病,则耽误治疗,后果严重;若将无病诊断为有病,再次诊断,有费用代价,但相对代价较小;
2)代价敏感错误率
即,对于错误和正确分配不等的代价,差异越大,表示二者越不对称;
3)代价曲线
用正确的概率乘以代价,然后,归一化就,最终就可以获得代价曲线。
四、比较检验
1)学习器性能进行评估过程
先用某种实验评估方法测得学习器的某个性能度量结果,然后,对这些结果进行比较。
2)本部分内容
介绍如何对性能度量结果进行比较;
3)挑战
-
希望比较的是泛化性能,而通过实验评估获得的是测试集上的性能,二者有差异;
-
测试集上的性能和测试集本身的选择有关系,不同的测试集,测试结果不同;
-
很多机器学习算法具有随机性,即使使用相同的测试集,也会表现出不同的结果;
导致难以比较学习器的性能;
4)解决办法:统计假设检验
基于假设检验结果,我们可以推断出,若在测试集上观察到学习器A比B好,那么A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大;
1. 假设检验
1)解释
假设检验中的假设是对学习器泛化错误率分布的某种判断或猜想。
2)挑战
现实中,我们并不知道学习器的泛化错误率,只能获得测试错误率;
3)关系
泛化错误率和测试错误率,未必相同,但是,二者接近的可能性比较大;
结论:可通过测试错误率推出泛化错误率;
4)计算
根据泛化错误率和测试错误率,可以计算出二者相等的概率;这个分布服从二项分布;
5)局限性
此方法适用于单个学习器泛化性能的假设进行检验,无法应对不同学习器的性能比较。
2. 交叉验证 t 检验
3. McNemar检验
4. Friedman 检验和 Nemenyi 检验
五、偏差与方差
1. 偏差
期望输出与真实标记之间的差别,称为偏差;
2. 方差
不同测试集的期望相对于总体期望的差值的平方和;
3. 关系
随着训练次数的增多,偏差会逐渐减小,而方差会逐渐增大;
训练程度并不是越多越好,训练过多可能导致过拟合;
所以,泛化误差是在偏差和方差之间取一个均衡, 适当的训练可以有一个好的性能;