回归问题-Lasso回归

Lasso(Least absolute shrinkage and selection operator)方法是以缩小变量集(降阶)为思想的压缩估计方法。它通过构造一个惩罚函数,可以将变量的系数进行压缩并使某些回归系数变为0,进而达到变量选择的目的。

正则化

正则化(Regularizaiton)是一种防止过拟合的方法。

                                                                        图1 欠拟合与过拟合

图来自:百度百科(过拟合)

从图中可以看出,最右边的属于一种过拟合,过拟合的问题通常发生在变量(特征)过多的时候,这种情况下训练出的方程总是能很好的拟合训练数据,也就是损失函数可能非常接近于 0 或者就为 0。 但是,这样的曲线会导致它无法泛化到新的数据样本中。

如果解决过拟合问题?

(1)尽量减少选取变量的数量

可以人工检查每一项变量,并以此来确定哪些变量更为重要,保留那些更为重要的特征变量。这种做法非常有效,但是其缺点是当舍弃一部分特征变量时,也舍弃了问题中的一些信息。例如,所有的特征变量对于预测房价都是有用的,实际上并不想舍弃一些信息或者说舍弃这些特征变量。

(2)正则化

在正则化中将保留所有的特征变量,但是会减小特征变量的数量级。 当有很多特征变量时,其中每一个变量都能对预测产生一点影响。假设在房价预测的例子中,可以有很多特征变量,其中每一个变量都是有用的,因此不希望把任何一个变量删掉,这就导致了正则化概念的发生。

如果应用正则化去解决实际问题?

在图1中,可以看出最右边的是过拟合的,但是不想抛弃\theta_{3}\theta_{4}变量自带的信息,因此加上惩罚项,使得\theta_{3}\theta_{4}足够小。

优化目标为:

                                                     \min _{\theta} \frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}

在优化目标的基础上,添加一些项(惩罚项),如下:

                                      \min _{\theta} \frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+1000 \theta_{3}^{2}+1000 \theta_{4}^{2}

1000 只是随便写的一个表示很大的数字。现在,如果想要最小化这个函数,那么为了最小化这个新的损失函数,就要让 \theta_{3}\theta_{4}尽可能小。因为,如果在原有代价函数的基础上加上 1000 \theta_{3}^{2}+1000 \theta_{4}^{2}这一项 ,那么这个新的代价函数将变得很大,所以,当最小化这个新的代价函数时, \theta_{3}\theta_{4}尽可能小或者接近于0,就像我们忽略了这两个值一样。如果做到这一点(\theta_{3}\theta_{4}接近于0),那么我们将得到一个近似的二次函数,并且h_{\theta}中并没有丢失\theta_{3}\theta_{4}的信息(虽然\theta_{3}\theta_{4}接近于0,但是还是存在的)

但是在真实问题中,一个预测问题可能有上百种特征,并不知道哪一些是高阶多项式的项,就像不知道\theta_{3}\theta_{4}是高阶的项。所以,如果假设有一百个特征,并不知道如何选择关联度更好的参数,如何缩小参数的数目等等。 因此在正则化里,要做的事情,就是把减小损失函数中所有的参数值,(因为并不知道是哪一个或哪几个是要去缩小的)。

因此,我们需要修改代价函数,变成如下形式:

 

                                            \frac{1}{2 m}\left[\sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+\lambda \sum_{j=1}^{n} \theta_{j}^{2}\right]   

其中\lambda \sum_{j=1}^{n} \theta_{j}^{2}就是正则化项; λ称为正则化参数,作用是控平衡拟合训练的目标和保持参数值较小。

Lasso回归模型

Lasso回归是在损失函数后,加L1正则化,如下所示:

                                              \frac{1}{2 m}\left[\sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+ \lambda \sum_{j=1}^{k}\left|w_{j}\right|\right]

m为样本个数,k为参数个数,其中

### Lasso回归的使用方法与原理 Lasso回归(Least Absolute Shrinkage and Selection Operator)是一种基于线性回归的扩展模型,其核心在于通过加入L1正则化项来实现特征选择和防止过拟合的功能。以下是关于Lasso回归的具体原理和使用方法: #### 原理概述 Lasso回归的目标是最小化损失函数的同时增加一个正则化约束条件。它的目标函数可以表示为: \[ J(\beta) = \frac{1}{2n} \|X\beta - y\|_2^2 + \lambda \|\beta\|_1 \] 其中 \( X \) 是输入矩阵,\( y \) 是目标向量,\( \beta \) 表示模型参数,\( n \) 是样本数量,\( \lambda \) 是控制正则化强度的超参数[^3]。 由于L1正则化的存在,Lasso回归倾向于将某些特征的系数压缩至0,从而实现了自动特征选择的效果。这是因为它会惩罚较大的权重值,并促使许多较小的权重变为零[^4]。 #### 实现方式 在实际应用中,可以通过多种编程库实现Lasso回归。以下是一个Python代码示例,展示如何利用`scikit-learn`库完成Lasso回归的任务: ```python from sklearn.linear_model import Lasso import numpy as np # 创建模拟数据集 np.random.seed(42) X = np.random.rand(100, 5) # 100个样本,5个特征 y = 3 * X[:, 0] + 2 * X[:, 1] - 4 * X[:, 2] + np.random.randn(100) # 初始化Lasso模型 lasso = Lasso(alpha=0.1) # alpha对应于λ,调节正则化程度 # 训练模型 lasso.fit(X, y) # 输出模型系数 print("Coefficients:", lasso.coef_) ``` 在这个例子中,我们创建了一个简单的五维数据集,并训练了一个Lasso回归模型。通过调整`alpha`参数,我们可以改变正则化的强弱,进而影响哪些特征会被保留或舍弃[^1]。 #### 特征选择的能力 Lasso回归的一个显著优势是它可以作为特征选择工具。当面对高维度的数据时,很多无关紧要或者冗余的特征可能会干扰模型的表现。借助Lasso回归,这些无意义的特征往往被赋予零权值,从而使最终模型更加简洁高效[^2]。 --- ###
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Foneone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值