一般来说我们可以使用正则化来避免过度拟合。但是实际上什么是正则化,什么是通用技术,以及它们有何不同?
“正规化是我们对学习算法所做的任何修改,旨在减少其泛化误差,而不是其训练误差。”
换句话说:通过防止算法过度拟合训练数据集,可以将正则化用于训练对看不见的数据更好地泛化的模型。
那么,如何修改逻辑回归算法以减少泛化误差呢?
我发现的常见方法是高斯,拉普拉斯,L1和L2。
高斯还是L2,拉普拉斯还是L1?这有什么不同吗?
可以证明L2和高斯或L1和拉普拉斯正则化对算法具有同等影响。获得正则化效果的方法有两种。
第一种方法:添加正则项
为了计算逻辑回归的回归系数,对数似然函数(也称为目标函数)的负数被最小化
其中LL表示似然函数的对数,β表示系数,y表示因变量,X表示自变量。
第一种方法
是通过将正则化项R(β)乘以参数λ∈R +到目标函数上来惩罚高系数
但是为什么我们要惩罚高系数呢? 如果一个特征仅在一个类别中出现,则将通过逻辑回归算法为其分配很高的系数。 在这种情况下,模型可能会非常完美地了解有关训练集的所有详细信息。
被添加以惩罚高系数的两个常见的正则化项是l1范数或范数l2的平方乘以½,这激发了名称L1和L2正则化。
注意。 系数½用于L2正则化的某些推导中。 这使得计算梯度更容易,但是,仅常数值可以通过选择参数λ来补偿。
l1范式定义为
L2正则化的正则化项定义为
第二种方法:
贝叶斯正则化观点
第二种方法假定系数的给定先验概率密度,并使用最大后验估计(MAP)方法。 例如,我们假设系数为均值0和方差σ2的高斯分布或系数为方差σ2的拉普拉斯分布。
在这种情况下,我们可以通过选择方差来控制正则化的影响。 较小的值导致较小的系数。 但是,σ2的较小值可能会导致拟合不足。
所提及的两种方法密切相关,并且通过正确选择控制参数λ和σ2,可得出该算法的等效结果。 在KNIME中,以下关系成立:
如果λ= 1 /σ2,则高斯先验等于L2
如果λ=√2/σ,则拉普拉斯先验等于L1
选择线性回归的先验
主要思想是在使我们达到L1和L2正则化的线性回归系数上选择贝叶斯先验。 让我们看看它是如何工作的。
正态分布(高斯)先验
我们将从正态分布开始,并在每个𝛽𝑖值之前放置一个零均值正态分布,所有方差都等于𝜏2。 根据公式:
并根据公式:
和我们的先前公式填充似然函数:
我们删除了许多常量。我们可以看到,这与(L2正则化)相同,其中𝜆 = 𝜎2 / 𝜏2假定为在常规线性模型中为常数) 回归,我们就可以选择我们的先验。 我们可以通过更改adjust来调整所需的正则化量。 同样,我们可以调整要加权先验系数的数量。 如果我们有一个很小的方差大large,那么系数将非常接近0; 如果我们有很大的方差(小的𝜆,那么系数不会受到太大的影响(类似于我们没有任何正则化的情况)。
拉普拉斯先验
首先,让我们回顾一下拉普拉斯分布的密度(通常在初学者概率类中没有引入的密度):
有时将其称为“双指数”分布,因为它看起来像是两个背对背放置的指数分布(使用位置参数适当缩放)。 它在形式上也与我们的高斯十分相似,
与所有小系数一样,从零均值拉普拉斯先验开始,就像我们在上一节中所做的那样:
与L2正则化相比,Laplacean先验的效果略有不同。 L1促进稀疏性,而不是防止任何系数过大(由于平方)。 也就是说,将一些系数归零。 如果您先查看拉普拉斯(Laplacean)的密度,然后平均密度会急剧增加,则这是有道理的。
直观地看待此问题的另一种方法是比较两个解决方案4。让我们假设我们正在估计回归中的两个系数。 在L2正则化中,解𝛽 =(1,0)具有与𝛽 =(12√,12√)相同的权重,因此它们均被平等对待。 在L1正则化中,相同的两种解决方案更倾向于稀疏的一种:
因此,L2正则化没有任何特定的内置机制来支持归零系数,而L1正则化实际上偏爱这些稀疏解。