阅读 95

集成学习(3) - 模型优化基础

在上一章中,我们通过几个回归模型讲解了机器学习建模的一般流程。当我们完成一个模型的建模训练预测就相当于完成了一个基本的baseline,接下来的工作就是优化模型,让模型在测试集获得更好的分数,那么如何优化呢?这就是本次要涉及的内容。

1. 数据集的划分

首先我们明确一下机器学习数据集的划分。
我们都知道机器学习是通过学习现有的数据来构建模型。但是最终我们需要用这个模型来预测其在之前没有见过的数据集上的表现。例如我们根据股票市场前六个月的数据拟合一个预测模型,我们的目的不是为了预测以前这六个月越准越好,而是预测明天乃至未来的股价变化。

也就是说在模型训练过程中,模型还没有部署到线上,这个时候我们不知道模型会遇到什么样的真实数据。因而在测试集未知的情况下,我们需要将手中已经拥有的数据集进行划分,一般可以分为训练集和测试集。训练集用于模型建模迭代和优化。而测试集用于对模型的准确度进行检验。

对于部分机器学习任务,我们划分的测试集必须是模型从未见过的数据,比如语音识别中一个完全不同的人的说话声,图像识别中一个完全不同的识别个体。这时,一般来说,训练集和验证集的数据分布是同分布的,而测试集的数据分布与前两者会略有不同。在这种情况下,通常,测试集的正确率会比验证集的正确率低得多,这样就可以看出模型的泛化能力,可以预测出实际应用中的真实效果。

2. 方差与偏差

在有监督学习中,偏差是指预测值和实际值的差值;方差是指模型在同一分布的多个测试集上的表现差别。偏差可以用“准”来形容,方差可以用“确”来形容。比如,我们打靶,偏差小说明我们子弹射中点离靶心的平均距离很近;方差小说明我们子弹射中点比较集中。


image.png

在回归中,我们最常用的评价指标为均方误差,即MSE: mean square error


其中 是样本 应用建立的模型 预测的结果。
如果我们所用的数据是训练集上的数据,那么这个误差为训练均方误差,如果我们使用测试集的数据计算的均方误差,我们称为测试均方误差。一般而言,我们并不关心模型在训练集上的训练均方误差,我们关心的是模型面对未知的样本集,即测试集上的测试误差,我们的目标是使得我们建立的模型在测试集上的测试误差最小。那我们如何选择一个测试误差最小的模型呢?这是个棘手的问题,因为在模型建立阶段,我们是不能得到测试数据的,比如:我们在模型未上线之前是不能拿到未知且真实的测试数据来验证我们的模型的。在这种情况下,为了简便起见,一些观点认为通过训练误差最小化来选择模型也是可行的。这种观点表面看上去是可行的,但是存在一个致命的缺点,那就是:一个模型的训练均方误差最小时,不能保证测试均方误差同时也很小。对于这种想法构造的模型,一般在训练误差达到最小时,测试均方误差一般很大!如图:

image.png

在左图中由真实函数 产生的数据用黑色曲线表示。
三种对 的估计: 线性回归(橙色曲线),两条光滑样条拟合(绿色和蓝色)右图:训练均方误差(灰色曲线),测试均方误差(红色曲线)
可以看到:当我们的模型的训练均方误差达到很小时,测试均方误差反而很大,但是我们寻找的最优的模型是测试均方误差达到最小时对应的模型,因此基于训练均方误差达到最小选择模型本质上是行不同的。正如上右图所示:模型在训练误差很小,但是测试均方误差很大时,我们称这种情况叫模型的过拟合

过拟合的本质是偏差小、方差大,而与之相对应的欠拟合的本质是偏差大,方差小。

从上图的测试均方误差曲线可以看到:测试均方误差曲线呈现U型曲线,这表明了在测试误差曲线中有两种力量在互相博弈。可以证明:

也就是说,我们的测试均方误差的期望值可以分解为 的方差、 的偏差平方和误差项 的方差。为了使得模型的测试均方误差达到最小值,也就是同时最小化偏差的平方和方差。由于我们知道偏差平方和方差本身是非负的,因此测试均方误差的期望不可能会低于误差的方差,因此我们称 为建模任务的难度,这个量在我们的任务确定后是无法改变的,也叫做不可约误差。那么模型的方差和偏差的平方和究竟是什么呢?
所谓模型的方差就是:用不同的数据集去估计 时,估计函数的改变量。举个例子:我们想要建立一个线性回归模型,可以通过输入中国人身高去预测我们的体重。但是显然我们没有办法把全中国13亿人做一次人口普查,拿到13亿人的身高体重去建立模型。我们能做的就是从13亿中抽1000个样本进行建模,我们对这个抽样的过程重复100遍,就会得到100个1000人的样本集。我们使用线性回归模型估计参数就能得到100个线性回归模型。由于样本抽取具有随机性,我们得到的100个模型不可能参数完全一样,那么这100个模型之间的差异就叫做方差。
显然,我们希望得到一个稳定的模型,也就是在不同的样本集估计的模型都不会相差太大,即要求f的方差越小越好。一般来说,模型的复杂度越高,f的方差就会越大。 如加入二次项的模型的方差比线性回归模型的方差要大。
这里在补充两个概念:

  • 基于偏差的误差:主要是指预测值和真实值之间的差距,或者偏离程度,主要是用于评价模型的预测能力。
  • 基于方差的误差:主要是描述了一个模型对给定的数据进行预测的可变性。主要用于评价模型的稳定性或者健壮性。
image.png

最终的目的是要衡方差与偏差,从而得到一个合理的模型。一般而言,增加模型的复杂度,会增加模型的方差,但是会减少模型的偏差,我们要找到一个方差--偏差的权衡,使得测试均方误差最小。

3. 特征提取

在前面的讨论中,我们已经明确一个目标,就是:我们要选择一个测试误差达到最小的模型。但是实际上我们很难对实际的测试误差做精确的计算,因此我们要对测试误差进行估计,估计的方式有两种:训练误差修正与交叉验证。
- 训练误差修正:
前面的讨论我们已经知道,模型越复杂,训练误差越小,测试误差先减后增。因此,我们先构造一个特征较多的模型使其过拟合,此时训练误差很小而测试误差很大,那这时我们加入关于特征个数的惩罚。因此,当我们的训练误差随着特征个数的增加而减少时,惩罚项因为特征数量的增加而增大,抑制了训练误差随着特征个数的增加而无休止地减小。具体的数学量如下:
,其中d为模型特征个数, , 为模型预测误差的方差的估计值,即残差的方差。
AIC赤池信息量准则:
BIC贝叶斯信息量准则:
- 交叉验证:
前面讨论的对训练误差修正得到测试误差的估计是间接方法,这种方法的桥梁是训练误差,而交叉验证则是对测试误差的直接估计。交叉验证比训练误差修正的优势在于:能够给出测试误差的一个直接估计。在这里只介绍K折交叉验证:我们把训练样本分成K等分,然后用K-1个样本集当做训练集,剩下的一份样本集为验证集去估计由K-1个样本集得到的模型的精度,这个过程重复K次取平均值得到测试误差的一个估计 。5折交叉验证如下图:(蓝色的是训练集,黄色的是验证集)

image.png

在测试误差能够被合理的估计出来以后,我们做特征选择的目标就是:从p个特征中选择m个特征,使得对应的模型的测试误差的估计最小。对应的方法有:
- 最优子集选择:
(i) 记不含任何特征的模型为 ,计算这个 的测试误差。
(ii) 在 基础上增加一个变量,计算p个模型的RSS,选择RSS最小的模型记作 ,并计算该模型 的测试误差。
(iii) 再增加变量,计算p-1个模型的RSS,并选择RSS最小的模型记作 ,并计算该模型 的测试误差。
(iv) 重复以上过程知道拟合的模型有p个特征为止,并选择p+1个模型 中测试误差最小的模型作为最优模型。
- 向前逐步选择:
最优子集选择虽然在原理上很直观,但是随着数据特征维度p的增加,子集的数量为 ,计算效率非常低下且需要的计算内存也很高,在大数据的背景下显然不适用。因此,我们需要把最优子集选择的运算效率提高,因此向前逐步选择算法的过程如下:
(i) 记不含任何特征的模型为 ,计算这个 的测试误差。
(ii) 在 基础上增加一个变量,计算p个模型的RSS,选择RSS最小的模型记作 ,并计算该模型 的测试误差。
(iii) 在最小的RSS模型下继续增加一个变量,选择RSS最小的模型记作 ,并计算该模型 的测试误差。
(iv) 以此类推,重复以上过程知道拟合的模型有p个特征为止,并选择p+1个模型 中测试误差最小的模型作为最优模型。

4. 主成分分析(principal component analysis,PCA)

主成分分析的思想:通过最大投影方差 将原始空间进行重构,即由特征相关重构为无关,即落在某个方向上的点(投影)的方差最大。在进行下一步推导之前,我们先把样本均值和样本协方差矩阵推广至矩阵形式:
样本均值Mean:
样本协方差矩阵
最大投影方差的步骤:
(i) 中心化:
(ii) 计算每个点 至 方向上的投影:
(iii) 计算投影方差:
(iv) 最大化投影方差求 :

得到:

即:

可以看到: 为 的特征值, 为 的特征向量。因此我们只需要对中心化后的协方差矩阵进行特征值分解,得到的特征向量即为投影方向。如果需要进行降维,那么只需要取p的前M个特征向量即可。是一种常见的数据降维方法,其目的是在“信息”损失较小的前提下,将高维的数据转换到低维,从而减小计算量。下面通过一个栗子来进行讨论
在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律。多变量大数据集无疑会为研究和应用提供丰富的信息,但是也在一定程度上增加了数据采集的工作量。更重要的是在很多情形下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性。如果分别对每个指标进行分析,分析往往是孤立的,不能完全利用数据中的信息,因此盲目减少指标会损失很多有用的信息,从而产生错误的结论。

因此需要找到一种合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量之间存在一定的相关关系,因此可以考虑将关系紧密的变量变成尽可能少的新变量,使这些新变量是两两不相关的,那么就可以用较少的综合指标分别代表存在于各个变量中的各类信息。主成分分析与因子分析就属于这类降维算法。

作者:木头里有虫911

原文链接:https://www.jianshu.com/p/c84fc1130b32

文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐