-
经验误差与过拟合
-
评估方法
-
性能度量
-
比较检验
-
偏差与方差
错误率:分类错误的样本总数的比例 E = a/m; 精度:1-a/m
误差:学习器的实际预测与样本的真是输出之间的差异 训练误差:学习器在训练集上的误差
泛化误差:新样本上的误差(我们希望得到泛化误差小的学习器)
过拟合,欠拟合
留出法:直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T,,
. 训练集的选出可以采用随机采样,分层采样等,为了使训练/测试机的划分尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差对最终结果产生影响。在使用留出法时一般要采用若干次划分、重复进行实验评估后取平均值作为留出法的评估结果。
交叉验证法:将数据集划分为 k 个大小相似的互斥子集, 并且保持每个子集上的数据一致性. 进行 k 轮迭代, 每次用 k − 1 个子集的并集作为训练 集, 剩余的 1 个子集作为测试集.进行k次训练和测试,最终返回k个测试的均值。
也称为“k折交叉验证”,k常用10. 若数据集共m个数据,k=m,这时是交叉验证法的特例“留一法”。
自助法:给定m个样本的数据集D,采样生成D' :对D有放回的随机取样m次得到D'。
根据公式 ,我们大约有36.8%的数据从来未取到。
优点:用于数据集较小、难以有效划分训练/测试集时很有用; 能产生多个不同的训练集,对集成学习等方法有很大的好处;
缺点:改变了初始数据集的分布,会引入估计偏差,在数据量足够时更适合前两种方法。
模型选择和调参。
性能度量
回归任务最常用的性能度量是“均方误差”:
更一般的,对于数据分布D和概率密度函数p(.),均方误差为
为什么TPR和FPR最后都能到1?
这是因为,到了最后,TPR=TP/TP=1 ,FPR=FP/FP=1,也就是说FN和FP都成了0,最后所有的样例都被预测为正例。
ROC曲线的算法是这样的:实现代码【转】(非本人)
刚开始所有的样例均预测为负例,然后按算法 进行预测,按正例可能性大小排序后产生有序样例A,依次从A中取出样例a,假设前一个样例坐标为(x,y),将a预测为正例,若a为真正例,则本样例坐标为(x,
),否则a为假正例,则本样例坐标为
,迭代到最后一个样例,这时所有样例都被预测为正例,只有真正例和假正例两种情况。
ROC曲线的优点:
- 兼顾正例和负例的权衡。因为TPR聚焦于正例,FPR聚焦于与负例,使其成为一个比较均衡的评估方法。
- ROC曲线选用的两个指标,
,
,都不依赖于具体的类别分布。
注意TPR用到的TP和FN同属P列,FPR用到的FP和TN同属N列,所以即使P或N的整体数量发生了改变,也不会影响到另一列。也就是说,即使正例与负例的比例发生了很大变化,ROC曲线也不会产生大的变化,而像Precision使用的TP和FP就分属两列,则易受类别分布改变的影响。
我们可以这样理解最后一段话:当正例和负例的比例发生很大变化时,通常根据算法,将正例中预测为正例和负例的比例不会发生很大变化,是平稳的,负例同样。
ROC曲线的缺点:
- 上文提到ROC曲线的优点是不会随着类别分布的改变而改变,但这在某种程度上也是其缺点。因为负例N增加了很多,而曲线却没变,这等于产生了大量FP。像信息检索中如果主要关心正例的预测准确性的话,这就不可接受了。
- 在类别不平衡的背景下,负例的数目众多致使FPR的增长不明显,导致ROC曲线呈现一个过分乐观的效果估计。ROC曲线的横轴采用FPR,根据FPR =
=
,当负例N的数量远超正例P时,FP的大幅增长只能换来FPR的微小改变。结果是虽然大量负例被错判成正例,在ROC曲线上却无法直观地看出来。(当然也可以只分析ROC曲线左边一小段)
ROC曲线和PR曲线的使用场景:
- ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能,相比而言PR曲线完全聚焦于正例。
- 如果有多份数据且存在不同的类别分布,比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较;反之,如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。
- 如果想要评估在相同的类别分布下正例的预测情况,则宜选PR曲线。
- 类别不平衡问题中,ROC曲线通常会给出一个乐观的效果估计,所以大部分时候还是PR曲线更好。
- 最后可以根据具体的应用,在曲线上找到最优的点,得到相对应的precision,recall,f1 score等指标,去调整模型的阈值,从而得到一个符合具体应用的模型。
AUC = ...未完待续