【学习笔记】稀疏性正则化(l1正则化)

本文探讨了在特征工程中,指数增长的输入特征可能导致内存占用过大。通过引入L1正则化(Lasso Regression),可以实现部分权重为0,从而减少模型中的特征并节省RAM。L1正则化的导数特性使其能在0处产生稀疏解,而L2正则化(Ridge Regression)则不能。虽然L1正则化的效果可能不及L2,但在处理独热编码特征时,其优势在于能降低模型复杂度。
摘要由CSDN通过智能技术生成

还记得我们之前用经度和纬度来进行分箱吗? 仅仅是2个特征进行分箱组合就让我们的输入特征数量暴增。假设我们现在有k个特征需要来分箱,每个分为长度为k的独热编码。那么我们输入特征就为 k^k个,这种指数增长会占用我们大量ram。这是我们需要办法来拯救我们的ram。那么一个好的方法就是让我们的部分权重为0,正好为0的权重会使相应特征从模型中移除。会节省我们的ram同时也会降低我们模型中的噪点。

很遗憾的是我们之前使用的l2正则化并不能解决这个问题,l2正则化会让我们权重降低,但并不会让权重降为0。

这里l0正则化会让我们的问题变成非凸问题,这里我们用l1正则化(Lasso regression)来代替l0正则化,它具有凸优化的优势,方便我们计算。(顺便一提l2正则化又叫岭回归Ridge regression) (在tf中,l2正则化会除以2),比如:

x = tf.constant([3.0, 4.0])

sess = tf.Session()

print(sess.run(tf.contrib.layers.l2_regularizer(1.0)(x)))

>>>12.5

 

l1和l2降低权重的方法:

l1降低是权重的绝对值

l2降低权重的平方

 

因此l1和l2具有不同的导数(微分):

l1 的导数为k(一个常数,与权重无关).

l2的导数为 2*权重.

 

文章这里给了一个易懂的解释:

 我们可以把 l1正则化相当于每次对weights减去一个常数,并且由于在0处具有不连续性,出现负数则会变为0.

l2则是每次移除weights的x%,所以不会得到0。

 

下一次我们将会用独热编码来处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值