首页 > 机器学习 > 正文

regularization相关

标签:regularization, 正则化


目录

参考http://blog.csdn.net/zouxy09/article/details/24971995

l0范数

L0范数是指向量中非0的元素的个数,如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0,也就是,让参数W是稀疏的。

为什么不用L0,而要用L1呢?个人理解一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。

l1范数

l1(也叫Lasso regularization)可以使模型变得更sparse,因为它是L0范数的最优凸近似,任何的规则化算子,如果他在\(W_i=0\)的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。这说是这么说,W的L1范数是绝对值,\(|w|\)在w=0处是不可微

稀疏的两个好处:

  • 特征选择(Feature Selection)

一般来说,xi的大部分元素(也就是特征)都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。稀疏规则化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。

  • 可解释性(Interpretability)

例如患某种病的概率是y,然后我们收集到的数据x是1000维的,也就是我们需要寻找这1000种因素到底是怎么影响患上这种病的概率的。假设我们这个是个回归模型:\(y=w1*x1+w2*x2+…+w1000*x1000+b\)(当然了,为了让y限定在[0,1]的范围,一般还得加个Logistic函数)。通过学习,如果最后学习到的\(w^*\)就只有很少的非零元素,例如只有5个非零的wi,那么我们就有理由相信,这些对应的特征在患病分析上面提供的信息是巨大的,决策性的。也就是说,患不患这种病只和这5个因素有关,那医生就好分析多了。但如果1000个wi都非0,医生面对这1000种因素,累觉不爱。

l2范数

用上l2的回归也叫“岭回归”(Ridge Regression),能够防止过拟合。让L2范数的规则项\(||W||_2\)最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。我也不懂,我的理解是:限制了参数很小,实际上就限制了多项式某些分量的影响很小(看上面线性回归的模型的那个拟合的图),这样就相当于减少参数个数。

l2的好处:

  • 学习理论的角度:

从学习理论的角度来说,L2范数可以防止过拟合,提升模型的泛化能力。

  • 优化计算的角度:

从优化或者数值计算的角度来说,L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。

l2-improve-condition-number.png

优化有两大难题,一是:局部最小值,二是:ill-condition病态问题。

ill-condition对应的是well-condition。那他们分别代表什么?假设我们有个方程组AX=b,我们需要求解X。如果A或者b稍微的改变,会使得X的解发生很大的改变,那么这个方程组系统就是ill-condition的,反之就是well-condition的。condition number就是拿来衡量ill-condition系统的可信度的。condition number衡量的是输入发生微小变化的时候,输出会发生多大的变化。也就是系统对微小变化的敏感度。如果一个矩阵的condition number在1附近,那么它就是well-conditioned的,如果远大于1,那么它就是ill-conditioned的。

如果方阵A是非奇异的(行列式不为0,又叫满秩矩阵),那么A的conditionnumber定义为:

l2范数如何解决ill-conditioned问题:


原创文章,转载请注明出处!
本文链接:http://hxhlwf.github.io/posts/ml-regularization.html
上篇: pearson相关系数
下篇: 深入理解svm

comment here..