留一法是留出法的一个特例
2/3–4/5作为训练集
分成n份,每一份种选出一个训练集n-1个测试集
如果样本比较少时,我们采用这种方法.举个例子,
1】回归任务性能度量
均方误差:mse
2】分类任务性能度量
错误率:分类错误的样本数占样本总数的比例
精度: 分类正确的样本数占样本总数的比例
错误率+精度=1
1、概念
查准率:推荐系统中,推送给用户的内容当中用户喜欢的内容与推荐给用户的内容的比值,即正确率
查全率:推荐系统中,推荐内容当中用户感兴趣的内容与用户喜欢的所有内容的比值,即召回率
P=(实际喜欢预测也喜欢)/(实际喜欢预测喜欢+实际喜欢预测不喜欢)
R=(实际喜欢预测也喜欢)/(实际喜欢预测也喜欢+实际不喜欢预测也不喜欢)
要想查的准,那么把有把握的推荐上去,准确率提高;要想查的全,那么可以将所有的东西全推荐上去那就百分之百全。可见查准率和查全率是一对矛盾的度量
2、PR曲线:
两个选择器的PR曲线,哪一条曲线与X,Y组成的面积大,哪一个选择器的性能就优。如果两条曲线交叉,我们无法比较面积大小的时候一般让P=R,哪个在这个平衡点的取值高,哪个性能优。
P和R指标有时会出现矛盾的情况,这样就需要综合考虑他们,最常见的方法就是F-Measure,又称F-Score。F-Measure是P和R的加权调和平均,即:
加权调和平均数
特别地,当β=1时,也就是常见的F1度量,是P和R的调和平均,当F1较高时,模型的性能越好。
有时候我们会有多个二分类混淆矩阵。例如:多次训练或者在多个数据集上训练,那么估算全局性能的方法有两种,分为宏观和微观。简单理解,宏观就是先算出每个混淆矩阵的P值和R值,然后取得平均P值macro-P和平均R值macro-R,再算出Fβ或F1。也就是分成好多混淆矩阵一个一个的算,再求平均。微观则是直接计算出混淆矩阵的平均TP、FP、TN、FN,接着进行计算P、R,进而求出Fβ或F1。
学习器对测试样本的评估结果一般为一个实值或概率,设定一个阈值,大于阈值为正例,小于阈值为负例,因此这个实值的好坏直接决定了学习器的泛化性能,若将这些实值排序,则排序的好坏决定了学习器的性能高低。ROC曲线正是从这个角度出发来研究学习器的泛化性能,ROC曲线与P-R曲线十分类似,都是按照排序的顺序逐一按照正例预测,不同的是ROC曲线以“真正例率”(True Positive Rate,简称TPR)为横轴,纵轴为“假正例率”(False Positive Rate,简称FPR),ROC偏重研究基于测试样本评估值的排序好坏。
roc曲线表示的是假证利率和真证利率(查全率)的关系;
PR曲线表示的是查全率和查准率的关系
同样地,进行模型的性能比较时,若一个学习器A的ROC曲线被另一个学习器B的ROC曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。ROC曲线下的面积定义为AUC(Area Uder ROC Curve),不同于P-R的是,这里的AUC是可估算的,即AOC曲线下每一个小矩形的面积之和。易知:AUC越大,证明排序的质量越好,AUC为1时,证明所有正例排在了负例的前面,AUC为0时,所有的负例排在了正例的前面。
上面的方法中,将学习器的犯错同等对待,但在现实生活中,将正例预测成假例与将假例预测成正例的代价常常是不一样的,例如:将无疾病–>有疾病只是增多了检查,但有疾病–>无疾病却是增加了生命危险。以二分类为例,由此引入了“代价矩阵”(cost matrix)。
在非均等错误代价下,我们希望的是最小化“总体代价”,这样“代价敏感”的错误率
代价曲线的绘制很简单:设ROC曲线上一点的坐标为(TPR,FPR) ,则可相应计算出FNR,然后在代价平面上绘制一条从(0,FPR) 到(1,FNR) 的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC 曲线土的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价,如图所示:
由于测试误差受到很多因素的影响,eg:算法的随机性,而且测试误差作为泛化误差的近似,并不能代表学习器的真实的泛化性能,如果对单个或者多个学习器在不同或者相同的测试集上的性能做出度量比较,这个时候就需要进行比较检验,最后偏差和方差便成了解释学习器泛化性能的一个重要工具.
因为泛化误差我们无法测量,因此只能用测试误差进行近似替代,这个 时候统计假设检验就为学习器提供了比较重要的依据,举个例子,如果a在测试集上的性能要优于b在该测试集上的性能,那么我们就认为a这个学习器要比b好,为了方便,后面的度量我们都用错误率来衡量相关指标.
1.假设检验
假设:就是对样本总体的分布或者对分布中某个具体参数值的猜想.
非常好的一篇泊松分布的文章:泊松分布
透彻理解概率论中的几种分布以及区别
假设总体服从泊松分布或者正态分布的话u=u0,我们就可以通过测试误差近似估计出泛化误差了.
2.交叉验证
3.McNemar检验
主要针对二分类问题,主要思想是:如果两个学习器性能相同,则a预测正确b预测错误数应等于b预测错误a预测正确数:e01=e10
因此,如下所示的变量服从自由度为1的卡方分布,即服从标准正态分布N(0,1)的随机变量的平方和,下式只有一个变量,故自由度为1,检验的方法同上:做出假设–>求出满足显著度的临界点–>给出拒绝域–>验证假设。
在学习算法中,偏差指的是预测的期望值与真实值的偏差,方差则是每一次预测值与预测值得期望之间的差均方.
实际上,偏差体现了学习器预测的准确度,而方差体现了学习器预测的稳定性。
通过对泛化误差的进行分解可以得到:
**方差和偏差具有矛盾性,这就是常说的偏差-方差窘境,
**
随着训练程度的提升,期望预测值与真实值之间的差异越来越小,即偏差越来越小,但是另一方面,随着训练程度加大,学习算法对数据集的波动越来越敏感,方差值越来越大。
换句话说:欠拟合的时候偏差主导泛化误差,当训练到一定的程度,偏差越来越小,方差主导泛化误差.也就是过拟合.因此训练要适可而止,不要贪杯.