一、基本概念
1、错误率与精度
个样本中包含个分类错误的样本,那么
2、训练集、验证集与测试集
先用训练集训练,再用验证集不断调试找出最优模型,最后用测试集评估模型效果
3、经验误差与泛化误差
经验误差(训练误差):学习器在训练集上的误差
泛化误差:学习器在新样本上的误差
4、过拟合与欠拟合
过拟合:学习器过度学习训练样本,把一些训练样本自身的特点当做所有潜在样本的一般性质,泛化性能下降。
欠拟合:与过拟合相对。
二、评估方法
1、留出法
直接把数据集拆成两个互斥的集合,简单粗暴,当然二者这么划分你可以有多种方式
2、折交叉验证
假设共有个数据,你把它分成个子集,个作为训练集,剩下那个作为测试集,这样可以进行次训练得到个测试结果,最终得到的个结果取平均,即为折交叉验证。
lasso回归中,确定最优的惩罚性系数,用的就是k折交叉验证。
3、自助法()
折交叉验证计算复杂度太高,留出法受样本规模影响太大。自助法介于二者之间,计算复杂度低,受样本规模影响也不大。
自助法,即每次在数据集中有放回地抽取一个数据放入,重复次后我们得到含有个样本的,最后我们用作为训练集,用作为测试集。
那会不会出现没有数据的情况?当然有可能,但概率不是很大,只要样本数据量不是太少,应该不会发生。
公式推导如下:
在个样本中有放回地抽取一个样本,某个样本始终不会被抽到的概率如下:
因此最终约有36.79%的样本留在测试集,够了!
三、性能度量
性能度量:衡量模型泛化能力的评价标准。
好的,那么我们就既有实验估计方法,又有评价标准了。
1、均方误差
2、错误率与精度
错误率
精度
这里是啥呢?它的意思是括号里的式子成立就等于1,否则等于0。·
3、查准率和查全率
公式如下:
这里很容易弄混,要怎么记忆呢?
可以想象你把 80 个黄豆和 120 个黑豆混在一起了,你想要把黄豆拿出来。
你只知道总数是 200 个豆子,不知道黄豆和黑豆有多少个,你眼睛蒙住了无法分清二者,并且你无法雇佣廉价的大学生来帮你分开两种豆子。
于是你拿出了 100 个豆子,其中 60 个黄豆,40 个黑豆。
那么召回率就等于 60/80 = 75%。查准率=60
好的,这可能是一个冷笑话,反正就想办法记住吧!
但是,查全率与查准率鱼和熊掌不可兼得,在多个模型中要怎么选择最优的模型,获得最好的查全率和查准率呢?
3.1、P-R 图
在 P-R 图中,P-R 曲线是从左上角往右下角的曲线。
1)P-R 曲线越外面越好,如果一个曲线把另一个曲线包住了,那么这个曲线较优。图中 A 把 C 包住了,A 优于 C;
2)两个曲线交叉,则不确定谁更优。例如图中 A 和 B;
3)两个曲线可以通过二者包住横纵坐标轴的面积来比较,面积更大的较优。
3.2、平衡点 BEP(Break-Even Point)
BEP 即查重率=查准率时二者的值,也可以理解为 P-R 曲线与 y=x 的交点的横坐标或纵坐标,图中 A 的 BEP 为 0.8。
BEP 越高越优。
3.3、F1
后面那个是怎么来的呢?
故
更进一步,我们定义为查全率相对于查准率的重要性,即:
倒过来可以得到
3.4、宏 P 宏 R 宏 F1 与 微 P 微 R 微 F1
我们可能因为某种原因得到多个混淆矩阵,原因包括以下几种:
1)多次训练/测试
2)在多个数据集上训练/测试
3)多分类任务每两两分类对应一个混淆矩阵
宏:对每个数据求 P、R、F1,最后求均值
微:求每个数据的均值,最后求 P、R、F1
3.5、ROC 和 AUC
很多学习器是为测试样本产生一个实值或概率预测,然后将这个实值与一个分类阈值(threshold)进行比较,大于阈值则分为正类,否则为反类。
但是!这个阈值要怎么确定呢?ROC 曲线就是用来做这个的。
ROC 的纵轴是真正例率 TPR,横轴是假正例率 FPR。
但在现实中我们通常只能使用有限个测试样例来绘制 ROC 图,因此也无法得到光滑的曲线,只能得到上图右边那种。绘制方法如下:
有个正例和个反例。我们在标记一个点,把阈值依次设置为每个样例的预测值,即在预测中每个样例都是正例。那么:
随后如果当前为真正例,则下一个标记点为,如果当前为假正例,那么下一个标记点为。
是曲线下的面积(Area Under ROC Curve)。它可以估算为
考虑的是样本预测的排序质量,越大越好。
同时可以从减小排序损失的角度理解。考虑每一对正例和反例,若正例的预测值小于反例,则记一个罚分,若相等,则记 0.5 个罚分。
排序损失计算公式如下:
3.6、代价敏感错误率与代价曲线
不同错误的后果是不同的,把健康人判断成病人,可能会让这个人接受一段时间的治疗,让事情更麻烦,但把病人判断成健康人,却会导致病人失去最佳治疗时机。
因此我们需要为每一种错误设定一个代价,表示把第i类样本预测为第j类样本的代价。
代价敏感错误率计算公式如下:
此时,ROC曲线无法反映学习器的期望总体代价,需要改用“代价曲线”。
代价曲线的横轴是取值为[0,1]的正例概率代价,
纵轴是取值为[0,1]的归一化代价。
1)绘制从到的线段
2)ROC曲线上每一点都对应了代价平面上的一条线段,绘制出来
3)所有线段下的面积就是期望总体代价