Machine Learning——Norm regularization(范数正则化L0、L1、L2)

简单介绍下监督机器学习的基本内容与形式化目标函数

监督机器学习:在规范化参数的同时最小化误差。
(1)最小化误差:训练模型,使其尽可能拟合训练数据

(2)规范化参数:防止模型过分拟合训练数据

 

------> 过分拟合:参数太多导致模型的复杂度上升,这时模型队训练数据可很好估计,但对于测试数据误差增大

 

基于监督的机器学习的模型训练目标是使用相对简单的模型测试误差最小化,提升模型整体的泛化能力。其中模型的简单与否就是根据规则化函数来实现的,通过规则化函数还可以约束模型的特性。

 

基于监督学习的目标函数:

  

其中,前一项是样本预测值与真实值之间的误差(最小化误差),后一项是正则化函数约束模型使其尽量简单(规范化参数)。正则化函数有多种,本文主要介绍L0、L1、L2三种。

 

在介绍正则化函数之前,首先解释如下两个问题:

1. 为什么实现参数的稀疏?

        简化模型、避免过拟合;参数变少使模型具有更好的可解释性。

        在很多情况下,一个模型中真正重要的参数并不多,如果考虑所有参数均起作用,这样的模型只拟合了训练数据,对测试数据变得没有泛化能力。

 

2. 为什么参数值越小模型越简单?

        越复杂的模型,越是会尝试对所有样本进行拟合,甚至包含了一些异常样本点,这种模型容易造成在较小的区间里预测值产生较大的波动,这个波动反映在区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,参数值会很大。

 

 

进入三种正则化的大门:

1. L0正则化

 

        L0正则化的值是模型参数中非零参数的个数

 

        使用L0正则可得到稀疏的参数以此来防止过拟合。从直观上看,利用非零参数的稀疏性可以进行特征选择实现特征稀疏。

 

        虽然L0正则优势很明显,但求解困难属于NP问题,因此一般情况下引入L0正则的最近凸优化L1正则(方便求解)来近似求解并同样可实现稀疏效果。

 

 

2. L1正则化(Lasso问题)

 

        L1正则化的值是各个参数的绝对值之和。

 

        L1正则化之所以可以防止过拟合,是因为其范数是参数绝对值之和,而参数大小与模型复杂度成正比,最小化L1范数可降低模型复杂度。

 

 

3. L2正则化(Ridge问题)

        

        L2正则化的值是各个参数的平方和的开方值。

 

        L2正则使得参数中每个元素都很小接近于0(仅仅接近,但不为0),这就导致了所有参数都很小,与L1类似得参数小则模型复杂度低,可有效防止过拟合。

 

 

4. Lasso 与 Ridge 对比

 

        Lasso 和 Ridge 问题可分别表示为如下:

        将模型空间限制在参数w的二维情况:

        

        在 (w1,w2) 平面上可以画出目标函数的等高线,而约束条件为平面上半径为C的一个规则化球(norm ball):等高线与norm ball首次相交的地方就是最优解:

        

        从上图可知,对于L1-ball,L1在和每个坐标轴相交的地方都有“角”出现,L1-ball有很大几率与L1交于四个角,即在坐标轴上相遇,因为坐标轴在某一维度为0,从而可以产生稀疏。而等高线与L2-ball相交在坐标轴的几率就很小了。

 

        总结:L1趋向于产生少量特征,其它特征均为0;而L2会选择更多趋于0的特征。Lasso适合特征选择,Ridge适合规则化。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
正则化L1是一种常用的正则化方法,它可以用于特征选择和降维。其基本原理是在目标函数中添加一个L1范数惩罚项,使得模型更倾向于选择较少的特征。 在数学上,正则化L1可以表示为: $J(w) = \frac{1}{2}||y-Xw||^2+\lambda||w||_1$ 其中,$w$是待求解的参数向量,$y$是观测值向量,$X$是设计矩阵,$\lambda$是正则化参数,$||w||_1$是L1范数。 为了求解上述问题,可以使用坐标下降法或者梯度下降法等优化算法。以下是一份使用梯度下降法求解正则化L1问题的MATLAB代码示例: ``` function [w, obj] = l1_regularized_regression(X, y, lambda, alpha, tol) % X: design matrix, y: response vector, lambda: regularization parameter % alpha: learning rate, tol: tolerance for convergence % w: parameter vector, obj: objective function value [n, p] = size(X); w = zeros(p, 1); obj = zeros(1000, 1); for iter = 1:1000 % calculate objective function value obj(iter) = 0.5 * norm(y - X * w, 2)^2 + lambda * norm(w, 1); % calculate gradient grad = X' * (X * w - y) + lambda * sign(w); % update parameter vector w = w - alpha * grad; % check for convergence if norm(grad, 2) < tol break; end end obj = obj(1:iter); end ``` 在上述代码中,我们使用了梯度下降法来求解正则化L1问题。其中,alpha是学习率,tol是收敛阈值。在每一次迭代中,我们计算目标函数值和梯度,并更新参数向量。当梯度的L2范数小于收敛阈值时,停止迭代。最终返回参数向量和目标函数值的历史记录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值