内容简介:请注意: 本文是翻译的一份学习资料,中文版地址:英文原版请点击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正则表达
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。