《机器学习》周志华读书笔记(二)模型评估与选择(下)
本篇文章紧接《《机器学习》周志华读书笔记(二)模型评估与选择(上)》,内容为2.3.3ROC与AUC开始讲起
2.3.3ROC与AUC
ROC全程“受试者工作特征”(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力,ROC曲线是基于混淆矩阵得出的。
ROC曲线中的主要两个指标就是真正例率和假正例率。其中横坐标为假正例率(FPR),纵坐标为真正例率(TPR),借用上一篇文章中的表格,我们可以写出TPR和FPR的关系。
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
(真正例率,纵坐标)
(假正例率,横坐标)
AUC(Area Under ROC Curve):ROC曲线下的面积,后续会重点讲解
ROC曲线的阈值问题 与前面的P-R曲线类似,ROC曲线也是通过遍历所有阈值来绘制整条曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的在ROC曲线图中也会沿着曲线滑动。
如何判断ROC曲线的好坏?
改变阈值只是不断地改变预测的正负样本数,即TPR和FPR,但是曲线本身是不会变的。那么如何判断一个模型的ROC曲线是好的呢?这个还是要回归到我们的目的:FPR表示模型虚报的响应程度,而TPR表示模型预测响应的覆盖程度。我们所希望的当然是:虚报的越少越好,覆盖的越多越好。所以总结一下就是TPR越高,同时FPR越低(即ROC曲线越陡),那么模型的性能就越好。参考如下动态图进行理解。
ROC曲线无视样本不平衡
为了计算 ROC 曲线上的点,我们可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。幸运的是,有一种基于排序的高效算法可以为我们提供此类信息,这种算法称为曲线下面积(Area Under Curve)。
比较有意思的是,如果我们连接对角线,它的面积正好是0.5。对角线的实际含义是:随机判断响应与不响应,正负样本覆盖率应该都是50%,表示随机效果。ROC曲线越陡越好,所以理想值就是1,一个正方形,而最差的随机判断都有0.5,所以一般AUC的值是介于0.5到1之间的。
AUC的一般判断标准
0.5 - 0.7:效果较低,但用于预测股票已经很不错了
0.7 - 0.85:效果一般
0.85 - 0.95:效果很好
0.95 - 1:效果非常好,但一般不太可能
AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。
2.3.4代价敏感错误率与代价曲线
非均等代价(unequal cost):为全更不同类型错误所造成的不同损失,将错误赋予非均等代价
在矩阵中,若将第 0 类判别为第 1 类所造成的损失更大,则 cost01 > cost10;损失程度相差越大,cost01 与 cost10 的差值越大。
此时的代价敏感(cost-sensitive)错误率为
因为不同类型的错误造成的后果不同,因此建立一个代价矩阵,区分各个类别错误的损失程度。
ROC曲线不能直接反映出学习器的期望总体代价,代价曲线可以。
2.4 比较检验
在某种度量下取得评估结果后,并不能直接比较以评判优劣
- 测试性能不等于泛化性能
- 测试性能随着测试集的变化而变化
- 机器学习算法本身有一定的随机性
统计假设检验为我们进行学习器性能比较提供了重要依据,基于假设检验的结果,我们可以推断出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B
统计检验有四种方法:假设检验、交叉验证t检验、McNemar检验、Friedman检验与Nemenyi后续检验。
(1)假设检验:根据测试错误率推出泛化错误率的分布
(2)交叉检验t检验:根据差值来对学习器B与学习器A性能相同这个假设做t检验
(3)McNemar检验:假设两学习器性能相同,则两者在对应测试集上的性能相同
两学习器比较
- 交叉验证 t 检验(基于成对 t 检验)
k 折交验证,5 * 2 交叉验证
- McNemar 检验(基于列联表,卡方检验)
多学习器比较
-
Friedman + Nemenyi
-
Friedman 检验(基于序值,F检测,判断“是否都相同”)
- Nemenyi 后续检验 (基于序值,进一步判断两两差别)
如果对比较检验有需求,可以去该书P37-P44学习
2.5 偏差与方差
偏差-方差分解(bias-variance decomposition):可以解释学习算法泛化性能的一种重要工具,试图拆解期望泛化错误率。
对测试样本 ,定义
1. 为
在数据集中的标记,
为
的真实标记(有可能出现噪声使得两者不等)
2. 为训练集
上学的模型
在
上的预测输出
3. 噪声 ,这里假设噪声期望为零,即
4. 偏差:期望输出与真实标记的差别
5. 使用样本数相同的不同训练集产生的方差
以回归任务为例,学习算法的期望预测为
通过多项式展开合并,可将算法的期望泛化误差拆解为偏差、方差和噪声之和。(推导见书P45)
也即有
回顾定义,
1. 偏差:度量学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力
2. 方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
3. 噪声:表达了当前任务下任何学习算法所能达到的期望泛化误差的下限,即刻画了学习问题本身的难度
当学习器刚开始学习时,因为学习程度不足,偏差会主导泛化错误率,随着学习器拟合能力逐渐增强,数据集发生的扰动会被学习到,这时方差开始主导泛化错误率。在最后拟合能力非常强的情况下训练数据自身的、非全局的特性被学习器学到了,则将发生过拟合。
最上面一条线为泛化误差,由于图片为黑白,无法标明,特在此说明!