一、常用的向量范数
1、范数:=,()即为向量X中非0的元素个数,例如:
(1,4,5,19)
2、范数:,即X于0之间的曼哈顿距离,例如: ,,即每个元素的绝对值之和。
3 、 范数 :,即X与0之间的欧式范数,例如:
4、 范数:
二、正则化的来源
1、正则化主要是用来控制模型的复杂度,从而减少过拟合,一般是是在损失函数中加入惩罚项,即:
是原始的损失函数, 是惩罚项,其中:
W :权重
X:样本
Y:标签
:是控制正则化的强弱
如有:x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [2.83, 29.53, 54.52, 5.57, 38.26, 103.92, 33.15, 61.56, 129.54, 49.75, 127.59])
现在我们对其进行拟合。
a的拟合函数:=-5.064e-18 x - 1.172e-17 x + 1.655e-16 x + 3.297e-15 x 19 18 17 16 + 3.721e-14 x + 3.015e-13 x + 1.423e-12 x - 6.336e-12 x 15 14 13 12 - 2.577e-10 x - 3.756e-09 x - 3.62e-08 x - 1.973e-07 x 11 10 9 8 7 + 7.363e-07 x + 3.288e-05 x + 0.0004003 x + 0.001814 x - 0.0214 x 6 5 4 3 2 - 0.392 x - 0.2607 x + 37.9 x - 194.5 x + 334.3 x - 150.4 x + 2.83
b的拟合函数:=9.424 x + 10.72
训练的准确率:a >b
模型的复杂度:a>b
此时我们对测试集进行测试,发现b的准确率大于a,a的模型存在过拟合。即因为a的模型复杂度太高,在训练集上准确率表现很好,但是测试数据上表现很差,这就是过拟合现象。
此时正则化正式登场~
2、正则化:
- L1正则化:
- L2正则化:
3、那么为什么加入L1、L2能降低复杂度,从而防止模型过拟合?
三、理论分析证明L1,L2能降低模型复杂度
1、机型学习的目的,就是找到一个参数使得模型在训练数据集和测试数据集上均表现良好,当模型复杂时,w参数过多,如a模型(有22个参数),此时可以适当的减少w参数。
此时就有一个想法让w,某些=0 (i=n),用L0范数表示,于是优化问题出现:
这个优化问题,无法解。那么另外一个思路,就是我是否能使得w某些近可能接近于0。
存在:,同时也存在一个这样的一个C,使得
此时我们会发现 不就是L1范数吗,同理 不就是L2范数吗?
所以就存在这样的优化问题:
2、解以上优化问题
- 构造拉格朗日函数
,对以上两个函数进行求导则存在这样的一个最优解 .
则有
所以:
=
这个就是L1正则化
同理,可得到L2正则
四、L1正则化于L2正则化的几何理解
1、对于
=
2、在二维平面有:
=
则有:,即 :
根据以上4个条件和J(w;x,y) ,两个函数存在一个交点,我们就能画出:
这里要使得目标函数最小,这两个函数肯定存在一个交点,都满足。所以这个就是这个交点的由来。
这次,使得模型变得简单,从而达到减少过拟合的效果。这个可以看出,为什么L1可以用来做特征选择的原因。他使得。
同理:我们同同样可以这样理解L2正则化:
L2也可以使得模型减小过拟合的可能。