模型性能评估
留出法
模型性能评估主要是对模型泛化误差进行评估,需要用测试集来测试模型对新样本的判别能力,然后推测误差作为泛化误差的近似。
验证集:验证集一般用于进一步确定模型中的超参数(例如正则项系数、神经网络中隐层的节点个数,k值等)验证集与测试集有什么区别?
交叉验证法
将数据集分成k个大小相等的互斥子集,取k-1个子集并集作为训练集,1个作为测试集。如图是十次十折交叉验证,每次的训练集和测试集都不同,然后取十次测试结果的平均作为最后结果。
自助法
自助法的过程:
1、抽取一个样本值,记录后放回到原总体中。
2、重复n次这样的抽样;
3、根据这n次抽样记录的值,计算此批抽样的感兴趣统计参数。
4、重复步骤1-3 r次。
5、计算r次感兴趣统计参数的标准误差,生成直方图,找到置信区间。
自助法的原理
自助法适用于数据集小、难以划分的情况,比较适合集成学习。但是产生的训练集改变了初始数据集的分布,会引入估计偏差。
性能度量
不同任务的性能度量不同,回归任务用均方误差。分类时用错误率和精度,
但是错误率和精度不能满足所有的需要,这时会用到准确率(查准率)和召回率(查全率)。
PR曲线
PR曲线-反映了分类器对正例的覆盖能力。
根据学习器的预测结果,将所有样例进行排序,从最可能是正例的样本到最不可能是正例的样本排序,按此顺序逐个将样本作为正例进行预测,每次就可以计算出当前的查全率和查准率。以查准率为纵轴,查全率为横轴作图,就得到了查准率查全率曲线-PR曲线。
在比较时,若一个学习器的PR曲线被另外一个学习器的PR曲线完全包住,那么就认为后者的学习性能优于前者。
图中红色的点,是平衡点,即查准率=查全率的点,也可以作为性能度量,但是有点简化。
一般会用F1度量,但是查全率和查准率在不同的任务中的侧重不一样,所以出现了Fβ度量,其中β是查全率和查准率的相对重要性。β=1时,就退化为F1度量。
在多个二分类混淆矩阵中,用宏/微两个方面来度量。
ROC曲线和AUC
ROC曲线:绘制类似PR曲线,也是对预测结果进行排序,然后将分类阈值先设为最大一直到最小。ROC曲线,AUC值,PR曲线,AP值
(1)主要作用
- ROC曲线能很容易的查出任意阈值对学习器的泛化性能影响。
2.有助于选择最佳的阈值。ROC曲线越靠近左上角,模型的查全率就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。
3.可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高。
AUC是ROC曲线下方的面积,是衡量学习器优劣的一种性能指标。
如果两条ROC曲线没有相交,我们可以根据哪条曲线最靠近左上角哪条曲线代表的学习器性能就最好。但是,实际任务中,情况很复杂,如果两条ROC曲线发生了交叉,则很难一般性地断言谁优谁劣。在很多实际应用中,我们往往希望把学习器性能分出个高低来。在此引入AUC面积。
下图右图是实际有限样例的ROC曲线和AUC,
既然已经这么多标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。
代价敏感错误率
前面的性能评估都是默认在“均等代价”的条件下,但是现实中不同类型的错误所造成的后果不同。以二分类为例,我们根据任务的领域知识,设定一个代价矩阵。
在非均等代价的条件下,ROC曲线不能直接的反映出学习器的期望的总体代价,而代价曲线可以。
ROC曲线上的每一点对应代价平面上的每一条线段,把ROC曲线上每个点都转换成代价曲线的线段,每条线段取下界,在围起来的面积,就是期望总体代价。模型评估与选择(后篇)-代价曲线
原论文-建议看
知乎里面优秀解释
假设检验
问题:我们能不能根据以上的性能评估方法获得的性能度量直接“比大小”呢?
回答:不能
原因:
- 我们希望比较的是泛化性能,而实验室评估的是测试性能。
- 测试集的性能和测试集的选择有关,测试集的样例不同,结果就会不同。
- 机器学习算法本身就具有随机性,即使是相同的参数,相同的数据集,结果也会不同。
所以就要借助统计假设检验的技术:在测试集上观察到的学习器A比B好,则A的泛化性能是否在统计意思上优于B,以及这个结论的把握有多大。具体方法有以下三种方法。
t检验
偏差和方差
偏差和方差分解,是解释学习算法泛化性能的重要工具。
泛化误差可以分解为偏差、方差、噪声之和。
偏差-刻画了学习算法本身的你喝能力。
方差-刻画了数据扰动所造成的影响。
噪声-刻画了学习任务本身的难度。