《机器学习》学习笔记chapter2 模型选择(占坑)

来源:互联网 发布:date函数的使用方法php 编辑:程序博客网 时间:2024/05/15 04:46

1.经验误差与过拟合

1.1 为什么会有过拟合

经验误差也叫做训练误差,是学习器在训练过程中产生的误差。因为样本量不可能等于总体,所以学习器总不能完美地进行学习,如果学习器过于依赖训练的样本,而不能很好地预测其它的情况,这时则产生了过拟合

1.2如何评估过拟合

答案是交叉验证。
交叉验证:主要用于建模应用中,例如PCR 、PLS 回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行测试,并求这小部分样本的测试误差,记录它们的平方加和。一句话概括就是,从样本中取小一部分做测试集。

常见的交叉验证方法:

  • Hold-Out:即一分为二,一半测试,一半训练
  • K-fold (记为K-CV):即分成k份,将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集。
  • Leave-One-Out:即每个样本单独作为验证集,其余的N-1个样本作为训练集
  • Bootstrapping(严格意义上不属于CV):通过随机采样,有放回取出m个(总样本量)样本数据作为训练集。而始终不被采集到的样本量是:lim11/mm ,m取极限值为lim11/mm=1/e0.368。也就是说有大于1/3的样本没被采集出来训练,可以用于测试。这样的测试结果也称为”包外估计“。
    Bootstrapping在数据集小,难有效划分测试集的情况下很有用。但是,它改变了数据集的初始分布,引入了估计的偏差。因此数据量足够时,前面的方法常用些

更多详细参考博文:交叉验证 Cross-validation

1.3调参与最终模型

许多模型都有参数需要调整,即使是细微的调整,训练出的模型都可能大不相同。所以从这个角度看,调参和模型选择本质是相同的。

参数的调整,一般在范围内以等间距去取,然后组合其它参数去训练,这样训练的结果往往,不是最好的,但是即使是这样,训练起来也不容易假设有3个参数,每个参数都在[0,1]范围内。以0.2为间距,去取5个参数。组合起来都有125种可能,就是要训练125次。所以经验在这里就比较重要了。


2.性能度量

对学习器的泛化性能进行评估,不仅需要有效可行的实验方法(交叉验证),还需要有衡量模型泛化能力的评价标准,这就是性能度量。
性能度量反应了任务需求,不同地性能度量往往会导致不同地评判结果。也就是说,好和坏是相对的,这取决于任务的需求。可以有以下四类:

2.1 错误率与精度

即直接统计判断错误和正确占总体的百分比。

2.2 查全率与查准率(P-R曲线)

有些任务要求尽可能多地去预测,从而提高目标的成功预测数量,即指标为查全率,例如通缉犯识别系统。有些则要求尽可能地准确地去预测,从而提高预测结果的作用效果,即指标为查准率,如智能推荐。
这一对指标,往往?是成反比的,尽可能地去提高覆盖率,就更可能犯错。尽可能地保证准确度,就更可能不去预测或判断,不太确定的样本。

预测结果预测结果 真实情况正例反例 正例TP(真正例)FN(假反例) 反例FP(假正例)TN(真反例) 作用 查全率衡量符合实际情况的输出为正的样例占所有实际为正的比例R=TPTP+FN 查准率衡量符合实际情况的输出为正的样例占输出为正的比例P=TPTP+FP 准确率衡量输出和实际相符的准确率A=TP+TNTP+TN+FP+FN

P-R曲线

这里写图片描述

2.3 ROC曲线

有了PR曲线作参考,有时候还是不能够。我们会想在查准率上划一条分界线,上为

ROC曲线&AUC


这里写图片描述

曲线的XY轴分别为,假正例率和真正例率。通过把学习的结果排序,以不同地分割点进行分割,得到不同阀值下的预测结果,分别计算对应的两个变量,假正例率和真正例率作出ROC曲线。

AUC(Arear Under ROC Curve),即ROC曲线之下的面积。这个面积越大,该学习器(模型)的泛化性能越好。即总体而言,真正利率比假正例率高出的比例更大。

都有查全率查准率和准确率等指标了,为什么还需要ROC曲线呢?
因为在样本类别不均衡的情况下(正例多于反例,反义依然),ROC和AUC能很好地衡量学习器(模型)的性能,其ROC曲线是不变的。

2.4 代价曲线

之前的所有指标,都默认所有判断错误的代价都是相等的。其实现实中,并不是这样。把一个人错认为是通缉犯,和把一个通缉犯错误地放走,明显造成的影响的是不一样的。所以需要引入代价进行计算:此处以二分类为例

二分类代价矩阵:

预测类别预测类别 真实类别第0类第1类 第0类0cost01 第1类cost100

代价敏感错误率:e=1m(xiD+I(f(xi)yi)cost01+xiDI(f(xi)yi)cost10)

引入了代价曲线,其中横轴为正例概率代价,纵轴为归一化代价。正例概率代价计算方式为:
P(+)cost=pcost01pcost01+(1p)cost10

归一化代价计算方式为:
costnorm=FNRpcost01+FPR(1p)cost10pcost01+(1p)cost10

更多性能指标参考:
1.机器学习性能评估指标
2.机器学习模型性能评估方法笔记


3.比较检验

3.1二项分布&二项检验
3.2t检验
3.3交叉验证t检验
3.4McNemar检验
3.5Friedman检验与Nemenyi后续检验


4.方差与偏差

阅读全文
0 0
原创粉丝点击