内容简介:请注意: 本文是翻译的一份学习资料,中文版地址:英文原版请点击Wei的学习笔记:
请注意: 本文是翻译的一份学习资料,
中文版地址: 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随机分成训练数据集S tr 和验证数据集S cv
2 在S tr 在中训练每一个M i 以学习假设 h i
3 选择拥有 最小经验误差(empirical error) 的模型 S cv ,我们将它标记为
通过以上几步,我们试图通过测试模型在验证集上的表现以估计真实统一化误差。在第3步中,在选择最优模型后,我们可以用整个数据集来重复训练模型来得到最佳假设模型。然而,即使我们可以这样做,我们仍然选择的是基于70%数据集来训练模型。当数据少的时候这是很糟糕的。
因此,我们引出 K折交叉验证(K-fold cross validation) :
1 随机将S分成k个分离的子集,每个子集有m/k个样本,记为
2 对于每个模型M i ,我们排除一个子集并标记为j,然后我们用其余的样本训练模型以得到H ij 。我们在S j 上测试模型,并且得到 。我们这样遍历每一个j。最后,我们获取统一化误差除以j的平均。
3 我们选择有最小平均统一误差的模型
通常我们取k为10。虽然这样计算上很复杂,但是它会给我们很好的结果。如果数据很少,我们也可能设k=m。在这种情况下,我们每一次除去一个样本,这种方法叫 除一交叉验证(leave-one-out cross validation) 。
2特征选择(Feature Selection)
如果我们有n个特征,m个样本,其中 (VC 维度is O(n)),我们可能会过度拟合。在这种情况下,你想选择最重要的特征来训练。在暴力算法中,我们会有用2 n 个特征组合,我们会有2 n 个可能的模型,这处理起来会很费力。因此我们可以选择用 向前搜索算法(forward search algorithm) :
1 我们初始化为
2 重复:(a)for 如果, 让
并且使用交叉验证算法来估计
. (b)设置
作为(a)中的最佳特征子集
3 从以上选择最佳特征子集。
你可以通过设置目标特征数量来终止循环。相反地,在特征选择中我们也可以使用 向后搜索算法(backward search) ,这于去除算法类似。然而,因为这两种算法的时间复杂度都是O(n^2) ,它们训练起来都会比较慢。
然而,我们也可以使用 过滤特征选择(filter feature selection) 。它的概念是对于标签y,我们会根据每一个特征提供了多少信息来给它打分,然后挑选出最佳者。
一个容易想到的方法是根据每个x i 和标签y的相关性打分。实际中,我们将分数设为 相互信息(mutual information) :
其中我们假设每个特征和标签都是二元值,并且求和覆盖整个变量域。每一个可能性都会从训练数据集中计算。为了进一步理解,我们知道:
其中KL是 相对熵(Kullback-Leibler divergence) 。它计算了竖线两边变量分布的差异。如果x i 和 y 是独立的,那么 KL 是0。这代表着特征和标签直接没有任何关系。然而如果MI很高,那么这个特征和标签有强相关性。
3 贝叶斯统计与正则化(Bayesian Statistics and regularization)
在前面一章我们讨论了 最大似然法(maximum likelihood (ML) algorithm) 是如何训练模型参数的:
在这种情况下,我们视 为未知参数,它已经存在但是未知。我们的任务是找到未知参数并计算它的值。
同时 也是随机的,因此我们设置一个先验值,称它为 先验分布(prior distribution) 。基于先验分布,我们可以用S数据集来计算后验分布:
使用后验分布来预测推断,我们有:
现在,我们可以计算条件期望值y。然而计算后验值的完全解是很难的,因为分母中的积分很难得到完全解。因此,我们用另一种方式来计算,我们找到一个后验值的点估计,在这个点上我们获得后验值的最佳 。 最大后验MAP(maximum a posteriori) 可以用以下方法计算:
通常来讲,先验分布有0均值,单位方差。这会使MAP 比ML 更不容易过度拟合。
以上所述就是小编给大家介绍的《正则化与模型选择》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 使用权重正则化较少模型过拟合
- 带答案面经分享-L1正则&L2正则
- 神经网络中的网络优化和正则化(四):正则化
- 正则表达式 – 如何使用正则表达式进行Erlang模式匹配?
- 正则表达式创建方式的区别及编写简单的正则方式(js学习总结)
- JavaScript正则表达
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First JavaScript Programming
Eric T. Freeman、Elisabeth Robson / O'Reilly Media / 2014-4-10 / USD 49.99
This brain-friendly guide teaches you everything from JavaScript language fundamentals to advanced topics, including objects, functions, and the browser’s document object model. You won’t just be read......一起来看看 《Head First JavaScript Programming》 这本书的介绍吧!