正则化与模型选择

这篇笔记总结来自张威(wei2624.github.io)博客的翻译,作者:雷潇潇。原笔记对吴恩达教授在斯坦福教授的CS229的课程笔记进行了梳理和总结。这篇中文笔记是关于”偏差-方差间权衡“部分的总结。

请注意: 本文是翻译的一份学习资料,

中文版地址: https://dark417.github.io/MachineLearning/sv_regularization_model_selection_ch/

英文原版请点击Wei的学习笔记: https://wei2624.github.io/MachineLearning/sv_regularization_model_selection/。中文笔记将不断和原作者的英文笔记同步内容,定期更新和维护。

正则化与模型选择

在选择模型时,如果我们在一个模型中有k个参数,那么问题就是这k个参数应该是什么值?哪些值可以给出最佳偏差-方差权衡呢。其中,我们从有限集合的模型 中来选取最佳模型。在集合中,我们有不同的模型,或者不同的参数

1 交叉验证(Cross Validation)

想象一下,给定数据集S与一系列的模型,我们很容易想到通过以下方式来选择模型:

1 从S集合训练每个模型,并得到相应的假设

2 选取最小训练误差的模型

这个想法不能达到目的因为当我们选择的多项数阶数越高时,模型会更好的拟合训练数据集。然而,这个模型将会在新的数据集中有很高的统一化误差,也就是高方差。

在这个情况中,保留交叉验证(hold-out cross validation)将会做得更好:

1 以70%和30%的比例将S随机分成训练数据集Str和验证数据集Scv

2 在Str 在中训练每一个M以学习假设 hi

3 选择拥有最小经验误差(empirical error)的模型 Scv,我们将它标记为

通过以上几步,我们试图通过测试模型在验证集上的表现以估计真实统一化误差。在第3步中,在选择最优模型后,我们可以用整个数据集来重复训练模型来得到最佳假设模型。然而,即使我们可以这样做,我们仍然选择的是基于70%数据集来训练模型。当数据少的时候这是很糟糕的。

因此,我们引出K折交叉验证(K-fold cross validation)

1 随机将S分成k个分离的子集,每个子集有m/k个样本,记为

2 对于每个模型M,我们排除一个子集并标记为j,然后我们用其余的样本训练模型以得到Hij 。我们在S上测试模型,并且得到 。我们这样遍历每一个j。最后,我们获取统一化误差除以j的平均。

3 我们选择有最小平均统一误差的模型

通常我们取k为10。虽然这样计算上很复杂,但是它会给我们很好的结果。如果数据很少,我们也可能设k=m。在这种情况下,我们每一次除去一个样本,这种方法叫除一交叉验证(leave-one-out cross validation)

2 特征选择(Feature Selection)

如果我们有n个特征,m个样本,其中 (VC 维度is O(n)),我们可能会过度拟合。在这种情况下,你想选择最重要的特征来训练。在暴力算法中,我们会有用2n 个特征组合,我们会有2n 个可能的模型,这处理起来会很费力。因此我们可以选择用向前搜索算法(forward search algorithm):

1 我们初始化为

2 重复:(a)for 如果, 让 并且使用交叉验证算法来估计. (b)设置作为(a)中的最佳特征子集

3 从以上选择最佳特征子集。

你可以通过设置目标特征数量来终止循环。相反地,在特征选择中我们也可以使用向后搜索算法(backward search),这于去除算法类似。然而,因为这两种算法的时间复杂度都是O(n^2) ,它们训练起来都会比较慢。

然而,我们也可以使用过滤特征选择(filter feature selection)。它的概念是对于标签y,我们会根据每一个特征提供了多少信息来给它打分,然后挑选出最佳者。

一个容易想到的方法是根据每个x和标签y的相关性打分。实际中,我们将分数设为相互信息(mutual information):

其中我们假设每个特征和标签都是二元值,并且求和覆盖整个变量域。每一个可能性都会从训练数据集中计算。为了进一步理解,我们知道:

其中KL是相对熵(Kullback-Leibler divergence)。它计算了竖线两边变量分布的差异。如果x和 y 是独立的,那么 KL 是0。这代表着特征和标签直接没有任何关系。然而如果MI很高,那么这个特征和标签有强相关性。

3 贝叶斯统计与正则化(Bayesian Statistics and regularization)

在前面一章我们讨论了最大似然法(maximum likelihood (ML) algorithm)是如何训练模型参数的:

在这种情况下,我们视 为未知参数,它已经存在但是未知。我们的任务是找到未知参数并计算它的值。

同时也是随机的,因此我们设置一个先验值,称它为先验分布(prior distribution)。基于先验分布,我们可以用S数据集来计算后验分布:

使用后验分布来预测推断,我们有:

现在,我们可以计算条件期望值y。然而计算后验值的完全解是很难的,因为分母中的积分很难得到完全解。因此,我们用另一种方式来计算,我们找到一个后验值的点估计,在这个点上我们获得后验值的最佳最大后验MAP(maximum a posteriori) 可以用以下方法计算:

通常来讲,先验分布有0均值,单位方差。这会使MAP 比ML 更不容易过度拟合。

AI学习
AI学习

人工智能学习专栏将分享关于机器学习,深度学习,计算机视觉,机器人和统计方向的学习笔记。学习笔记均为原创,并提供中文英文对照版本。本专栏主要致力于为人工智能学习者提供更优质的学习资料。

理论模型选择正则化
6
相关数据
参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

时间复杂度技术

在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。例如,如果一个算法对于任何大小为 n (必须比 n0 大)的输入,它至多需要 5n3 + 3n 的时间运行完毕,那么它的渐近时间复杂度是 O(n3)。

点估计技术

点估计也称定值估计,它是以抽样得到的样本指标作为总体指标的估计量,并以样本指标的实际值直接作为总体未知参数的估计值的一种推断方法

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

特征选择技术

在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择、属性选择或变量子集选择。 它是指:为了构建模型而选择相关特征(即属性、指标)子集的过程。

交叉验证技术

交叉验证,有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。交叉验证的目标是定义一个数据集到“测试”的模型在训练阶段,以便减少像过拟合的问题,得到该模型将如何衍生到一个独立的数据集的提示。

相对熵技术

相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD)[1],信息散度(information divergence),信息增益(information gain)。 KL散度是两个概率分布P和Q差别的非对称性的度量。 KL散度是用来 度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。 典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。

推荐文章
暂无评论
暂无评论~