什么是普通英语的正则化?

机器算法验证 正则化
2022-01-16 23:57:05

与其他文章不同,我发现这个主题的维基百科条目对于非数学人士(比如我)来说是无法阅读的。

我理解基本思想,即您喜欢规则较少的模型。我没有得到的是你如何从一组规则中得到一个“正则化分数”,你可以用它来对模型从最小过度拟合到最大过度拟合进行排序。

你能描述一个简单的正则化方法吗?

我对分析统计交易系统的背景感兴趣。如果您能描述我是否/如何应用正则化来分析以下两个预测模型,那就太好了:

模型 1 - 价格上涨时:

  • exp_moving_avg(价格,周期=50)> exp_moving_avg(价格,周期=200)

模型 2 - 价格上涨时:

  • price[n] < price[n-1] 连续 10 次
  • exp_moving_avg(price, period=200) 上涨

但我更感兴趣的是了解你如何进行正则化。因此,如果您知道更好的模型来解释它,请这样做。

4个回答

简单来说,正则化是调整或选择模型复杂性的首选级别,以便您的模型更好地预测(泛化)。如果您不这样做,您的模型可能太复杂且过拟合或太简单且欠拟合,无论哪种方式都会给出较差的预测。

如果您将复杂模型与一小组训练数据进行最小二乘拟合,您可能会过拟合,这是最常见的情况。模型的最佳复杂度取决于您正在建模的过程类型和数据的质量,因此没有先验正确的模型复杂度。

要规范化你需要两件事:

  1. 一种测试模型预测性能的方法,例如使用交叉验证或一组验证数据(您不能为此 使用拟合误差)。
  2. 一个调整参数,可让您更改模型的复杂度或平滑度,或选择具有不同复杂度/平滑度的模型。
基本上,您调整复杂度参数(或更改模型)并找到给出最佳模型预测的值。

请注意,优化的正则化误差不会是对整体预测误差的准确估计,因此在正则化之后,您最终必须使用额外的验证数据集或执行一些额外的统计分析才能获得无偏的预测误差。

使用(交叉)验证测试的替代方法是使用贝叶斯先验或其他方法来惩罚复杂性或非平滑性,但这需要更多的统计复杂性以及对问题和模型特征的了解。

假设您通过经验风险最小化进行学习。

更确切地说:

  • 你有你的非负损失函数L(actual value, predicted value)这表明您的预测有多糟糕
  • 您希望以这样一种方式拟合您的模型,使其预测最小化损失函数的平均值,仅根据训练数据(您拥有的唯一数据)计算

那么学习过程的目标就是找到Model=argminL(actual,predicted(Model))(这种方法称为经验风险最小化)。

但是,如果您没有足够的数据并且模型中存在大量变量,那么很可能会找到这样一个模型,它不仅可以解释模式,还可以解释数据中的随机噪声。这种效应称为过度拟合,它会导致模型的泛化能力下降。

为了避免过拟合,在目标函数中引入了正则化项: Model=argminL(actual,predicted(Model))+λR(Model)

通常,这个术语R(Model)对复杂模型施加特殊惩罚。例如,在具有大系数的模型上(L2 正则化,R=系数的平方和)或如果非零系数(L1正则化,R=系数绝对值之和)。如果我们正在训练决策树,R可以是它的深度。

另一种观点是R介绍了我们关于最佳模型形式的先验知识(“它没有太大的系数”、“它几乎与a¯")

简而言之,正则化是为了使您期望获得的解决方案受益。正如您所提到的,例如,对于简单性的一些定义,您可以受益于“简单”的解决方案。如果你的问题有规则,一个定义可以是更少的规则。但这取决于问题。

但是,您问的是正确的问题。例如,在支持向量机中,这种“简单性”来自于在“最大边际”方向上打破联系。这个余量是可以根据问题明确定义的。维基百科的 SVM 文章中有一个非常好的几何推导事实证明,正则化项至少可以说是 SVM 的“秘密武器”。

你如何进行正则化?一般来说,你使用的方法附带,如果你使用 SVM,你正在做 L2 正则化,如果你使用LASSO,你正在做 L1 正则化(看看 hairybeast 在说什么)。但是,如果您正在开发自己的方法,则需要知道如何区分理想的解决方案和不理想的解决方案,并具有量化这一点的功能。最后,您将拥有一个成本项和一个正则化项,并且您希望优化两者的总和。

正则化技术是应用于机器学习模型的技术,可以使决策边界/拟合模型更平滑。这些技术有助于防止过度拟合。

示例:神经网络中的 L1、L2、Dropout、权重衰减。范围C在 SVM 中。