那么,在机器学习中,防止过度拟合的一种方法是添加L2正则化,有些人说L1正则化更好,为什么呢?我也知道L1用于确保数据的稀疏性,这个结果的理论支持是什么?
答案 0 :(得分:4)
L1正则化用于稀疏性。这可能是有益的,特别是如果您处理大数据,因为L1可以生成比L2正则化更多的压缩模型。这基本上是由于正则化参数增加,你的最佳值为0的可能性更大。
由于平方,L2正规化会对更多数字进行惩罚。当然,L2在平滑方面更“优雅”。您应该检查this webpage
P.S。
更加数学上全面的解释可能不适合本网站,例如,您可以尝试其他Stack Exchange网站
答案 1 :(得分:0)
众所周知,L1正则化有助于在稀疏特征空间中执行特征选择,这是在某些情况下使用L1的一个很好的实际原因。然而,除了这个特殊原因,我从未见过L1在实践中表现得比L2更好。如果您在这个问题上看一下LIBLINEAR FAQ,您会看到他们没有看到L1击败L2的实际示例,并鼓励图书馆用户找到它们时与他们联系。即使在您可能从L1的稀疏性中受益以进行特征选择的情况下,在剩余变量上使用L2也可能比L1本身提供更好的结果。
所以,正如Andrew Ng在这里解释
当特征数量非常大时,你可以给L1射击,但L2应该总是你的盲目选择。
即使在你有充分理由使用L1的情况下,考虑到功能的数量,我建议你选择Elastic Nets。同意这只是一个实际的选择,如果你做线性/逻辑回归。但是,在这种情况下,弹性网已经证明(理论上和实践上)比L1 / Lasso更好。弹性网络将L1和L2正则化结合在一起,引入另一个超参数进行调整的“唯一”成本(参见Hastie的论文,了解stanford.edu上的更多细节)。
因此,简而言之,L1正则化最适合稀疏特征空间中的特征选择。
答案 2 :(得分:-1)
由于l1正则器会产生稀疏性,因此与l2正则器相比,它收敛得更快。现在让我们尝试证明这一点。 l1调节器是一个绝对值函数(| w_i |),它是线性函数,即该值是正值还是负值,结果始终是正值。现在,在解决任何模型的优化问题时,我们需要SGD(随机梯度下降),该函数需要微分函数。因此,现在我们需要区分l1正则化器。 | w_i |的区别始终保持恒定,因此在SGD的更新阶段需要花费更长的时间。
来到l2正则化器,它是| w_i | ^ 2,它是一个二次函数,它的图形看起来像一个抛物线形,其最小值为0而没有最大值。 l2正则化器的导数是一个线性函数,它的递减缓慢,这意味着它与l1正则化器相比不是恒定的,因此收敛所需的时间比l1多。这回答了您的理论支持问题。
使用方法取决于您的问题,即,如果数据具有很多功能,并且您知道大多数功能都没有用,那么最好使用l1正则化函数,因为它将这些功能的值设为0,您将得到一个易于理解的特征向量。这是l1的用例之一。在某些情况下,您将不得不同时使用两者,并且将正则化称为弹性网。 您需要尝试这些事情才能为模型获得最佳结果。
希望这会有所帮助。