首页 > 其他分享 >机器学习_正则化方法

机器学习_正则化方法

时间:2024-05-30 09:29:45浏览次数:18  
标签:机器 特征选择 模型 拟合 学习 正则 L2 L1

正则化是机器学习中用于防止过拟合的一种技术。它通过在损失函数中加入一个惩罚项限制模型的复杂度,从而提高模型的泛化能力。常见的正则化方法包括L1正则化(Lasso)和L2正则化(Ridge),还有结合了两者优点的Elastic Net。以下是对这些正则化方法的详细说明,包括原理、用法、使用场景、作用及其优缺点。

L1正则化(Lasso)

原理

L1正则化通过在损失函数中加入所有特征系数绝对值之和的惩罚项来限制模型的复杂度。其损失函数形式为:

L ( w ) = 1 n ∑ i = 1 n ( y i − x i ⊤ w ) 2 + λ ∑ j = 1 m ∣ w j ∣ L(\mathbf{w}) = \frac{1}{n} \sum_{i=1}^n \left( y_i - \mathbf{x}_i^\top \mathbf{w} \right)^2 + \lambda \sum_{j=1}^m |w_j| L(w)=n1​i=1∑n​(yi​−xi⊤​w)2+λj=1∑m​∣wj​∣

其中,w 是模型的参数向量,lambda 是正则化参数,控制正则化强度。

用法

在Python中,可以使用sklearn.linear_model模块中的Lasso类来实现L1正则化:

from sklearn.linear_model import Lasso

# 创建Lasso模型
lasso = Lasso(alpha=0.1)

# 训练模型
lasso.fit(X_train, y_train)

# 预测
y_pred = lasso.predict(X_test)
使用场景
  • 特征选择:L1正则化会使得一些特征的系数变为零,从而实现特征选择。适用于高维数据集。
  • 稀疏模型:当希望得到一个稀疏模型时,L1正则化是一个合适的选择。
作用
  • 防止过拟合:通过对模型参数进行约束,减少过拟合风险。
  • 特征选择:通过稀疏化参数向量,自动选择重要特征。
优缺点
  • 优点
    • 能够产生稀疏解,实现特征选择。
    • 适用于高维数据集。
  • 缺点
    • 当特征数量远大于样本数量时,Lasso可能不稳定。
    • 当存在多重共线性时,Lasso可能表现不佳。

L2正则化(Ridge)

原理

L2正则化通过在损失函数中加入所有特征系数平方和的惩罚项来限制模型的复杂度。其损失函数形式为:

L ( w ) = 1 n ∑ i = 1 n ( y i − x i ⊤ w ) 2 + λ ∑ j = 1 m w j 2 L(\mathbf{w}) = \frac{1}{n} \sum_{i=1}^n \left( y_i - \mathbf{x}_i^\top \mathbf{w} \right)^2 + \lambda \sum_{j=1}^m w_j^2 L(w)=n1​i=1∑n​(yi​−xi⊤​w)2+λj=1∑m​wj2​

其中,w 是模型的参数向量,lambda 是正则化参数,控制正则化强度。

用法

在Python中,可以使用sklearn.linear_model模块中的Ridge类来实现L2正则化:

from sklearn.linear_model import Ridge

# 创建Ridge模型
ridge = Ridge(alpha=0.1)

# 训练模型
ridge.fit(X_train, y_train)

# 预测
y_pred = ridge.predict(X_test)
使用场景
  • 多重共线性:L2正则化适用于处理多重共线性问题的数据集。
  • 模型稳定性:在特征数量和样本数量相近时,L2正则化可以提高模型的稳定性。
作用
  • 防止过拟合:通过对模型参数进行约束,减少过拟合风险。
  • 稳定性:提高模型在多重共线性存在时的稳定性。
优缺点
  • 优点
    • 适用于处理多重共线性问题。
    • 可以使得模型更加稳定。
  • 缺点
    • 不会产生稀疏解,所有特征都会被保留。
    • 当特征数量远大于样本数量时,效果可能不如L1正则化。

Elastic Net

原理

Elastic Net结合了L1正则化和L2正则化的优点,其损失函数形式为:

L ( w ) = 1 n ∑ i = 1 n ( y i − x i ⊤ w ) 2 + λ 1 ∑ j = 1 m ∣ w j ∣ + λ 2 ∑ j = 1 m w j 2 L(\mathbf{w}) = \frac{1}{n} \sum_{i=1}^n \left( y_i - \mathbf{x}_i^\top \mathbf{w} \right)^2 + \lambda_1 \sum_{j=1}^m |w_j| + \lambda_2 \sum_{j=1}^m w_j^2 L(w)=n1​i=1∑n​(yi​−xi⊤​w)2+λ1​j=1∑m​∣wj​∣+λ2​j=1∑m​wj2​

其中,lambda_1 和 lambda_2分别是L1和L2正则化的参数。

用法

在Python中,可以使用sklearn.linear_model模块中的ElasticNet类来实现Elastic Net:

from sklearn.linear_model import ElasticNet

# 创建ElasticNet模型
elastic_net = ElasticNet(alpha=0.1, l1_ratio=0.5)

# 训练模型
elastic_net.fit(X_train, y_train)

# 预测
y_pred = elastic_net.predict(X_test)
使用场景
  • 高维数据:Elastic Net适用于高维数据,特别是特征数量远大于样本数量的情况。
  • 特征选择与稳定性兼顾:希望同时实现特征选择和模型稳定性时,Elastic Net是合适的选择。
作用
  • 防止过拟合:通过对模型参数进行约束,减少过拟合风险。
  • 特征选择与稳定性:结合L1和L2正则化的优点,实现特征选择和提高模型稳定性。
优缺点
  • 优点
    • 结合了L1和L2正则化的优点。
    • 适用于高维数据。
    • 可以同时实现特征选择和模型稳定性。
  • 缺点
    • 需要调节两个超参数,模型调优复杂度增加。

除此之外,还有一些其他的正则化方法

1. 早停法(Early Stopping)

早停法在训练过程中监控模型在验证集上的表现,并在模型性能不再提升时停止训练。

  • 优点
    • 简单有效,能够显著减少过拟合。
    • 不需要添加额外的惩罚项。
  • 缺点
    • 需要分出验证集,减少了训练数据的数量。
    • 需要适当设置监控指标和早停条件。
2. Dropout

Dropout 在每次训练迭代中随机丢弃一部分神经元,使得模型不能过度依赖某些特定神经元,从而提升模型的泛化能力。

  • 优点
    • 有效防止过拟合,尤其是在深度神经网络中表现显著。
    • 在训练过程中引入了一种随机性,迫使网络更鲁棒。
  • 缺点
    • 增加了训练时间,因为每次迭代都是对不同的子网络进行训练。
    • 训练后的网络在预测时需要进行缩放调整。
3. 数据增强(Data Augmentation)

数据增强通过对训练数据进行各种随机变换(如旋转、裁剪、翻转等)来生成更多的训练样本,提升模型的泛化能力。

  • 优点
    • 增加了训练数据的多样性,从而减少过拟合。
    • 不需要对模型结构进行修改。
  • 缺点
    • 主要适用于图像、音频等特定类型的数据。
    • 需要设计合适的变换方式以确保生成的样本有意义。
4. 正则化神经网络权重

在神经网络中,可以通过对权重施加正则化来控制模型的复杂度。这种方法通常结合 L1、L2 正则化来应用。

  • 优点
    • 可以有效控制神经网络的复杂度。
    • 与其他正则化技术(如 Dropout)结合使用效果更佳。
  • 缺点
    • 增加了模型训练的复杂度和计算量。
    • 需要选择合适的正则化参数。
5. 批标准化(Batch Normalization)

批标准化通过在每一层对输入数据进行标准化来减少内部协变量偏移,加速模型训练并提高泛化能力。

  • 优点
    • 加速模型训练,提高收敛速度。
    • 能够在一定程度上减轻对初始化的敏感性。
  • 缺点
    • 增加了训练过程的计算开销。
    • 对小批量数据效果不佳。

正则化方法的作用和总结

作用
  • 防止过拟合:正则化通过约束模型参数,防止模型过于复杂,从而提高泛化能力。
  • 特征选择:L1正则化和Elastic Net可以自动选择重要特征,简化模型。
  • 提高稳定性:L2正则化和Elastic Net在多重共线性存在时,提高模型的稳定性。
总结

正则化方法是提高机器学习模型性能的关键技术之一。选择合适的正则化方法取决于数据集的特性和任务需求。L1正则化适用于需要特征选择的高维数据,L2正则化适用于多重共线性问题,Elastic Net结合了两者的优点,适用于需要同时实现特征选择和模型稳定性的场景。在实际应用中,通过交叉验证和超参数调优,可以选择最佳的正则化方法和参数。

标签:机器,特征选择,模型,拟合,学习,正则,L2,L1
From: https://blog.csdn.net/a6181816/article/details/139300224

相关文章

  • 机器学习_特征工程
    特征工程是机器学习中一个非常重要的步骤,它直接影响模型的性能和准确性。特征工程的目标是从原始数据中提取、转换和选择适当的特征,使得机器学习算法可以更好地学习和做出预测。以下是特征工程的原理、方法和用法的详细讲解。特征工程的原理特征工程的原理在于将原始数据......
  • 机器学习_决策树与随机森林
    决策树和随机森林是常用的机器学习算法,尤其在分类和回归任务中应用广泛。以下详细介绍它们的用法,并提供相应的代码实例。决策树决策树是基于树结构的模型,逐步细化决策,最终形成对目标变量的预测。用法分类:用于分类任务,目标变量是类别。回归:用于回归任务,目标变量是连续值......
  • 基于Java公考综合学习平台设计与实现论文
    摘要本文的重点是对公考综合学习平台展开了详细的描述,其中包含了其目前的发展状况和所涉及到的发展背景。接着,本文还讨论了该系统的设计目的,还讨论了系统的需求,并提出了整体的设计方案。对于该系统的设计和实现,也都进行了较为详细的讨论,并在此基础上,对公考综合学习平台展......
  • Zynq学习笔记--AXI4-Stream 图像数据从仿真输出到图像文件
    目录1.简介2.构建工程2.1Vivado工程2.2TestBench代码2.3关键代码分析3. VPG BackgroundPatternID(0x0020)Register4.总结1.简介使用SystemVerilog将AXI4-Stream图像数据从仿真输出到图像文件(PPM)。用到的函数包括$fopen、$fwrite和$fclose......
  • 自动驾驶学习3-摄像头(1)
    1、简介车载摄像头指安装在汽车上,用于监控汽车内外环境情况以辅助汽车驾驶员行驶的摄像设备。智能驾驶的眼睛。分类:车载摄像头按安装位置的不同可分为前视、后视、环视、内视车载摄像头。前视摄像头需要进行测距功能,所以一般分辨率要求较高广角镜头:......
  • 深度学习笔记_卷积神经网络CNN
    卷积层实际上是内积,就是把一个图片分成nnn个区域,分别对每个区域用fliter做内积(对应位置相乘,最后求和)池化层存在意义卷积层提取出的特征太多了,要用池化......
  • Vue学习
    指令vuecreatevuedemo1npmrunserve一、脚手架目录文件介绍&项目运行流程yarnserve----->main.js(核心代码:1.导入vue核心包,2.导入APP.vue根组件,3.实例化Vue,将APP.vue渲染到index.html容器中)//导入了VueimportVuefrom'vue'//导入app.vue根组件importAppfrom'./......
  • 基于金融知识图谱的问答机器人
    importjsonfromflaskimportFlask,requestfrompy2neoimportGraphfrompyhanlpimport*app=Flask(__name__)@app.route("/qa",methods=['POST','GET'])defkg_qa():ifrequest.method=='GET':ques......
  • 学习C#
    下面的案例和代码算不上特别基础,关于基础的C#,网上一大堆,我决定重新看一遍C#本质论,然后记录下,用来完善我的基础,朋友们可以跳着看1、开始基础a、解释下string的不可变stringresult;result="HelloWorld!";在C#中,string类型是一个引用类型,这意味着它在堆上分配内存。当你声明......
  • 联邦学习DLG攻击_NeurIPS2019_Deep Leakage from Gradients_深度梯度泄露,模型逆向攻击
    联邦学习联邦学习DLG攻击_NeurIPS2019_DeepLeakagefromGradients_深度梯度泄露发现了梯度可以倒推参数的问题文章目录要开始看些安全的内容了!一、Abstract二、Introduction2.1联邦学习的背景:2.2提出疑问:「梯度共用」计划有否保障每名参加者的训练资料集的私隐?2.......