0
点赞
收藏
分享

微信扫一扫

新能源充电桩站场视频汇聚系统建设方案及技术特点分析

phpworkerman 03-30 08:30 阅读 3

文章目录

岭回归与套索回归的原理与参数调节

岭回归是避免线性回归过拟合现象的一种线性模型。

过拟合是指模型的“学习能力”太强了,以致于把训练样本自身的一些特点当成了所有样本的一般性质进行学习,导致泛化能力下降。

岭回归通过保持模型所有的特征变量而减小特征变量的系数值,来减小特征变量对预测结果的影响。这种保留全部特征属性,只是降低特征变量的系数值来避免过拟合的方法称为L2正则化。在Sklearn中,可通过如下语句导入岭回归模型。

from sklearn.linear_model import Ridge

1.岭回归原理

#导入岭回归模型、糖尿病数据集及划分样本的方法
from sklearn.linear_model import Ridge
from sklearn.datasets import load_diabetes 
from sklearn.model_selection import train_test_split 
#将数据集划分为训练集和测试集
x,y=load_diabetes().data,load_diabetes().target
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=8)
#训练模型
model=Ridge()
model.fit(x_train,y_train)
#评估模型,计算模型的预测准确率
r21=model.score(x_train,y_train)	#计算模型在训练集上的预测准确率
r22=model.score(x_test,y_test)	#计算模型在测试集上的预测准确率
#输出模型的预测准确率
print("模型在训练集上的预测准确率为:",r21)
print("模型在测试集上的预测准确率为:",r22)

在岭回归中,可以通过改变alpha参数的值来控制减小特征变量系数的程度,alpha参数的默认值为1。

2.岭回归参数调节

将程序中的“model=Ridge()”修改为“model=Ridge(alpha=10)”。

模型在训练集上的预测准确率为: 0.15119902171779687
模型在测试集上的预测准确率为: 0.16202035231681022

可见,提高alpha值之后,模型的性能大大降低了,但是测试集的预测准确率却超过了训练集。

将程序中的“model=Ridge()”修改为“model=Ridge(alpha=0.1)”。

模型在训练集上的预测准确率为: 0.521563232713
模型在测试集上的预测准确率为: 0.47340124798816186

可见,把alpha值设置为0.1之后,模型在训练集上的预测准确率就略低于线性回归,但在测试集上的预测准确率却有所提升。如果alpha值非常小,那么系统的限制几乎可以忽略不计,得到的结果也会非常接近线性回归。

3.套索回归原理

除岭回归之外,还有一个可以对线性回归进行正则化的模型,即套索回归。

套索回归通过减少部分特征来减小特征变量对预测结果的影响,从而避免过拟合,这种方法称为L1正则化。L1正则化会导致在使用套索回归时,有部分特征的系数为0,从而忽略掉一些特征,可以看成是模型对特征进行自动选择的一种方式。在Sklearn中,可通过如下语句导入套索回归模型。

from sklearn.linear_model import Lasso
#导入套索回归模型、糖尿病数据集、划分样本的方法及NumPy库
from sklearn.linear_model import Lasso
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
import numpy as np
#将数据集划分为训练集和测试集
x,y=load_diabetes().data,load_diabetes().target
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=8)
#训练模型
model=Lasso()
model.fit(x_train,y_train)
a=np.sum(model.coef_!=0)		#模型特征属性不等于0的个数
#评估模型,计算模型的预测准确率
r21=model.score(x_train,y_train)	#计算模型在训练集上的预测准确率
r22=model.score(x_test,y_test)	#计算模型在测试集上的预测准确率
#输出模型的预测准确率
print("模型在训练集上的预测准确率为:",r21) 
print("模型在测试集上的预测准确率为:",r22)
print("套索回归使用的特征数为:",a)

模型在训练集上的预测准确率为: 0.3624222204154226
模型在测试集上的预测准确率为: 0.36561940472905163
套索回归使用的特征数为: 3

程序运行结果如图所示可以看到,套索回归在训练集与测试集上的表现都比较糟糕,这意味着模型发生了欠拟合问题。在这10个特征中,套索回归模型只用了3个。与岭回归相似,套索回归也可通过调节其alpha参数,来控制特征变量系数被约束到0的强度。

4.套索回归参数的调节

在套索回归中,alpha参数的默认值也是1。为了降低欠拟合的程度,增加特征变量的数量,需要将alpha的值减小,并且增大最大迭代次数。

将程序中的“model=Lasso()”修改为“model=Lasso(alpha=0.1,max_iter=100000)

模型在训练集上的预测准确率为: 0.5194790915052718
模型在测试集上的预测准确率为: 0.4799480078849704
套索回归使用的特征数为: 7

可见,降低alpha参数的值会使得模型使用的特征数量变多,从而在训练集与测试集上有更好的表现。

5.正则化介绍

①选择

在实际应用中,该如何选择岭回归和套索回归呢?

在实践中,岭回归往往是这两个模型的优选。但是,如果数据集中特征数量过多,而且只有一小部分是真正重要的,那么套索回归会是更好的选择。

②什么是正则化?
③L1正则化是怎么实现的?

L1正则化(Lasso)的功能是通过在损失函数中添加参数向量的L1范数来实现。具体来说,L1正则化的作用是通过惩罚参数向量的绝对值之和,促使部分参数变为零,从而实现特征选择和降维的效果。

在线性回归模型中,L1正则化的损失函数可以表示为:
L ( β ) = MSE + α ∑ j = 1 p ∣ β j ∣ L(\beta) = \text{MSE} + \alpha \sum_{j=1}^{p} |\beta_j| L(β)=MSE+αj=1pβj
其中, L ( β ) L(\beta) L(β)是损失函数, MSE \text{MSE} MSE是均方误差, α \alpha α是正则化参数, β \beta β是模型参数向量, p p p是特征数量。

L1正则化的实现方式通常是通过梯度下降等优化算法,在每次更新模型参数时,额外考虑正则化项的影响。在梯度下降的过程中,对于每个参数 β j \beta_j βj,更新规则为:
β j = β j − η ( ∂ MSE ∂ β j + α sign ( β j ) ) \beta_j = \beta_j - \eta \left( \frac{\partial \text{MSE}}{\partial \beta_j} + \alpha \text{sign}(\beta_j) \right) βj=βjη(βjMSE+αsign(βj))
其中, η \eta η是学习率, ∂ MSE ∂ β j \frac{\partial \text{MSE}}{\partial \beta_j} βjMSE是损失函数关于参数 β j \beta_j βj的梯度, sign ( β j ) \text{sign}(\beta_j) sign(βj)是参数 β j \beta_j βj的符号函数。

理解:

如果的值 β j \beta_j βj的值大,就是特征属性的权重要大,那么其实 α \alpha α的影响相对很小(前面还有一个学习率减少影响),故只有权重小的特征会被趋近0.

总的来说,L1正则化通过在损失函数中添加参数向量的L1范数惩罚项,并在优化过程中考虑这一项的影响,实现了对模型参数的稀疏性约束,有助于特征选择和降维。

什么是惩罚参数向量?
什么是学习率?
④L2正则化是怎么实现的?

L2正则化是一种常用的正则化方法,它通过在损失函数中添加一个L2范数惩罚项来限制模型参数的大小。L2正则化的目的是防止过拟合,提高模型的泛化能力。

在线性回归等模型中,L2正则化的损失函数可以表示为:

$L(\beta) = \frac{1}{2n} \sum_{i=1}^{n} (y_i - \hat{y}i)^2 + \frac{\alpha}{2} \sum{j=1}^{p} \beta_j^2 $

其中,第一项是MSE,第二项是L2正则化项, α \alpha α是正则化参数,控制正则化项对损失函数的影响程度。

在梯度下降算法中,加入L2正则化的梯度更新规则为:

$\beta_j = \beta_j - \eta \left( \frac{\partial L}{\partial \beta_j} + \alpha \beta_j \right) $

其中, η \eta η是学习率, ∂ L ∂ β j \frac{\partial L}{\partial \beta_j} βjL是损失函数对参数 β j \beta_j βj的梯度。在更新参数时,除了考虑损失函数的梯度,还考虑了L2正则化项对参数的影响,使得参数在更新过程中受到惩罚,避免过大的参数值。

总结一下,L2正则化通过在损失函数中添加参数的平方和作为惩罚项,控制模型参数的大小,防止过拟合。在梯度下降算法中,通过调整参数更新规则,同时考虑损失函数的梯度和L2正则化项的影响,实现对模型参数的正则化。

举报

相关推荐

0 条评论