计算L1和L2正则化的损失

时间:2019-11-17 22:07:59

标签: python machine-learning

如何计算L1L2正则化的损失,其中w是Python中线性模型权重的向量?

正则化器应在不考虑权重中的偏差项的情况下计算损失

def l1_reg(w):

    # TO-DO: Add your code here

    return None

def l2_reg(w):

    # TO-DO: Add your code here

    return None

3 个答案:

答案 0 :(得分:1)

为什么要使用正则化

在训练模型时,您希望获得尽可能高的准确性。因此,您选择所有相关功能[ 数据元素向量],但是如果数据集不够大,则行数很少,这会导致过度拟合。过度拟合会导致在火车数据中对模型的性能进行了很好的建模,但是在测试数据中却失败了,“例如,如果您可以解决之前已经解决过的问题,但由于解决了很多问题而无法解决类似的问题,那么[不是相同的问题,而是类似的],那么这里正则化解决了这个问题。

正则化

让我们首先解释一下正则化背后的逻辑术语。

规范添加信息的过程 [ 您可以想像一下,然后再给您另一个问题,我在第一个问题上添加了更多信息,您已对其进行了分类,因此,如果您发现类似的问题,您就不会想得太多

Overfitted model and Acurate model

此图显示了过拟合模型和精确模型。

L1 L2 是添加到模型方程式中的信息的类型

L1正则化

在L1中,您向模型方程式添加信息,以使其为theta向量(θ)的绝对总和乘以正则化参数(λ),该正则化参数可以是数据大小(m)上的任意大数,其中(n)是功能L1 Regularization Equation

L2正则化

在L1中,将信息添加到模型方程中,以向量(θ)的平方乘以正则化参数(λ),该正则化参数可以是数据大小(m)上的任意大数,其中(n)是特征数。L1 Regularization Equation

如果使用正规方程

那么L2正则化将是(n + 1)x(n + 1)对角矩阵,在左上角为零,在其他对角线条目下为1,再乘以正则化参数(λ)。enter image description here

答案 1 :(得分:0)

我认为在回答之前澄清这一点很重要: L1 L2 正规化术语不是损失函数。它们有助于控制向量中的权重,以免它们变得太大并减少过度拟合。

L1 正则化项是每个元素的绝对值之和。对于长度为N的向量,它将为|w[1]| + |w[2]| + ... + |w[N]|.

L2 正则化项是每个元素的平方值之和。对于长度为N的向量,它将为w[1]² + w[2]² + ... + w[N]²。我希望这会有所帮助!

答案 2 :(得分:0)

    def calculateL2(self, vector):

         return np.dot(vector, vector)

    def calculateL1(self, vector):

        vector = np.abs(vector)

        return np.sum(vector)