机器学习(一)模型评估与选择(上)


1. 误差与过拟合

 
        我们在训练模型上,希望泛化误差越小越好,虽然在实际任务中还会考虑到时间、存储等cost,为理解简单,这里先暂且只考虑泛化误差,在模型选择上,我们则需要从这三个方面:评估方法性能度量比较验证 来考虑,最后选出最优模型。
 

1.1. 误差及其类型

  • 误差:实际预测输出与样本的真实输出之间的差异;
  • 测试误差:在测试集 Test 上的误差;
  • 训练误差(经验误差):在训练集 Train 上的误差;
  • 泛化误差:在新样本上的误差。

我们希望泛化误差越小越好,但是对于经验误差则不是越小越好,因为会出现过拟合现象。

1.2. 过拟合/欠拟合

        我们希望最后得到的学习器能在新样本上也能表现德很好,因此模型应该从训练样本中尽可能学到适用于所有潜在新样本的"普遍规律",这样才能达到我们预期。

  • 欠拟合:由于学习能力低下而造成的,对训练样本一般性质尚未学好,但是容易克服,例如:在决策树学习中扩展分支,在神经网络中增加训练轮数
  • 过拟合:由于学习能力过于强大,以至于把训练样本的一些特殊的特性当成了所有潜在样本的特征,过拟合不好解决,并且过拟合是无法彻底避免的,我们所能做的只是"缓解”或者减小其风险。
                                    在这里插入图片描述
                                    在这里插入图片描述

2. 评估方法

        通常, 我们通过测试集 Test 来对学习器的泛化误差进行评估,关键点在于训练集 Train 与测试集 Test 应该尽可能 互斥即测试样本尽量不在训练集中出现,并且未在训练过程中使用过

 
常见方法

  • 留出法(hold-out)
  • 交叉验证法(cross validation)
  • 自助法(bootstrap)

2.1. 留出法

        直接将数据集 D 划分为两个互斥的集合,其中一个集合作为训练集 S,另一个作为测试集 T, 即 D = S T D=S\cup T S T = S\cap T=\varnothing 。在 S 上训练出模型后,用 T 来评估其测试误差,作为对泛化误差的估计。

特别注意

  • 训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。具体来说,若 D 中正例:反例=1:1,则划分的 S 也应该正例:反例=1:1;若S、 T 中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差。
  • 需要多次使用留出法来评估:根据留出法概念可知,不同的划分将导致不同的训练/测试集,那么模型评估的结果也会有差别。因此单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果,100 次后就得到 100 个结果,最后留出法返回的则是这 100 个结果的平均。

2.2. 交叉验证法

                                在这里插入图片描述
        交叉验证法 (cross validation):先将数据集 D 划分为 k 个大小相似的互斥子集, 即 D = D 1 D 2 D k D i D j = ( i j ) D=D_{1}\cup D_{2}\cup ……\cup D_{k},D_{i}\cap D_{j}=\varnothing (i\neq j) ,每个子集 Di 都尽可能保持数据分布的一致性,每次用 k-1 个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得 k 组训练/测试集,从而可进行 k 次训练和测试,最终返回的是这 k 个测试结果的均值

 
        留一法 (Leave- One-Out,简称 LOO):假定数据集 D 中包含 m 个样本,若令 k=m ,则此时称为“留一法”。显然,留一法不受随机样本划分方式的影响,留一法使用的训练集与初始数据集相比只少了一个样本,这就使得在绝大多数情况下,留一法中被实际评估的模型与期望评估的用 D 训练出的模型很相似,因此,留一法的评估结果往往被认为比较准确。缺点就是当数据集很大时,留一法计算代价太大。

2.3. 调参与最终模型

  • 算法的参数:一般由人工设定设定,亦称“超参数”;
  • 模型的参数:由机器学习确定。

        学习算法的很多参数是在实数范围内取值,常用的做法则是对每个参数选定一个范围和变化步长,例如在 [0 ,0.4] 范围内以 0.1 为步长,得到5个参数值,然后整个算法若有100个参数,则需要 5100 个模型,参数调得好不好往往对最终模型性能有关键性的影响

        我们通常把学得模型在实际使用中遇到的数据称为 测试集,为了加以区分,模型评估与选择中用于评估测试的数据集常称为 验证集(validation set)。


Reference:

  1. 《机器学习》周志华著
  2. 偏差(Bias)与方差(Variance)
  3. 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
  4. 偏差(Bias)与方差(Variance)
发布了58 篇原创文章 · 获赞 24 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_40520596/article/details/104926649