alpha值大小对lasso回归结果的影响

news2024/11/17 3:34:44

        LASSO 回归 的特点是在拟合广义线性模型的同时进行变量筛选(variable selection)和复杂度调整(regularization)。因此不论目标因变量(dependent/response varaible)是连续的(continuous),还是二元或者多元离散的(discrete),都可以用 LASSO 回归建模然后预测。

这里的变量筛选是指不把所有的变量都放入模型中进行拟合,而是有选择的把变量放入模型从而得到更好的性能参数。复杂度调整是指通过一系列参数控制模型的复杂度,从而避免过度拟合(overfitting)。

        对于线性模型来说,复杂度与模型的变量数有直接关系,变量数越多,模型复杂度就越高。更多的变量在拟合时往往可以给出一个看似更好的模型,但是同时也面临过度拟合的危险。此时如果用全新的数据去验证模型(validation),通常效果很差。一般来说,变量数大于数据点数量很多,或者某一个离散变量有太多独特值时,都有可能过度拟合。
       LASSO 回归复杂度调整的程度由参数 λ来控制,λ越大对变量较多的线性模型的惩罚力度就越大,从而最终获得一个变量较少的模型。 LASSO 回归与 Ridge 回归同属于一个被称为 Elastic Net 的广义线性模型家族。 这一家族的模型除了相同作用的参数 λ之外,还有另一个参数 α来控制应对高相关性(highly correlated)数据时模型的性状。 LASSO 回归 α=1,Ridge 回归 α=0 ,一般 Elastic Net 模型 0<α<1。

Lasso回归和岭回归的同和异:

Lasso回归对比岭回归,公式上只有theta项的区别,Lasso回归的theta项是加了绝对值。

相同:都可以用来解决标准线性回归的过拟合问题。

不同:

       1)lasso 可以用来做 feature selection,而 ridge 不行。或者说,lasso 更容易使得权重变为 0,而 ridge 更容易使得权重接近 0。

       2)从贝叶斯角度看,lasso(L1 正则)等价于参数 w 的先验概率分布满足拉普拉斯分布,而 ridge(L2 正则)等价于参数 w 的先验概率分布满足高斯分布。

       加入 L1 或 L2 正则化,让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。

       可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什幺影响,一种流行的说法是『抗扰动能力强』。

过拟合问题解决方法:

       (1)丢弃一些对我们最终预测结果影响不大的特征,具体哪些特征需要丢弃可以通过PCA算法来实现;

       (2)使用正则化技术,保留所有特征,但是减少特征前面的参数的大小,具体就是修改线性回归中的损失函数形式即可,岭回归以及Lasso回归就是这么做的。

       从数学上来说,它由一个带有附加正则化项的线性模型组成。最小化的目标函数是:

(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1

下面,我们通过对比实验来观察不同的alpha值对每一个产生的theta结果的影响。

一、导包

from sklearn.linear_model import Lasso
import numpy as np
import matplotlib.pyplot as plt
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures, StandardScaler

二、生成基础数据

np.random.seed(50)
m = 40
X = 3 * np.random.rand(m, 1)
y = 0.5 * X + np.random.rand(m, 1) / 1.5 + 1

三、查看数据落图情况

plt.plot(X, y, "b.")
plt.xlabel("X")
plt.ylabel("y")
plt.axis([0, 3, 0, 3])
plt.show()

四、利用Lasso回归模型,建立对比实验

def plot_model(model_class, data_X, polynomial, alphas, **model_kargs):
    for alpha, style in zip(alphas, ("b-", "g--", "r:")):
        model = model_class(alpha, **model_kargs)        
        if polynomial:
            model = Pipeline([                
            ("poly_features", PolynomialFeatures(degree=10, include_bias=False)), 
            ("StandardScaler", StandardScaler()),                
            ("lin_reg", model)])        
            model.fit(X, y)        
            y_new_regul = model.predict(data_X)        
            lw = 2 if alpha > 0 else 1        
        plt.plot(data_X, y_new_regul, style, linewidth=lw, label=f"alpha={alpha}")    
    plt.plot(X, y, "b.", linewidth=3)    
    plt.legend()

五、准备需拟合的数据,并拟合画图

X_new = np.linspace(0, 3, 100).reshape(100, 1)
plt.figure(figsize=(14, 6))
plt.subplot(121)
plot_model(Lasso, data_X=X_new, polynomial=False, alphas=(0, 0.01, 0.1))
plt.subplot(122)
plot_model(Lasso, data_X=X_new, polynomial=True, alphas=(0, 0.01, 0.1))
plt.show()

代码在运行过程中,针对alpha=0的情况,会发出警告,拟合不收敛。

对比不同的alpha值的运行结果,可以发现alpha值越大,拟合的结果趋向平稳,效果越好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/692589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【FFmpeg实战】视频基础和MP4容器解封装

转载自原文地址&#xff1a;https://juejin.cn/post/6901218687081480206 一、视频的编解码方式 谈到视频&#xff0c;我们经常会听到视频编解码、H.264等诸如此类的内容。那么视频编解码是什么意思呢&#xff1f; 视频编解码&#xff0c;其实就是对视频数据进行压缩和解压缩…

ros版本KF-GINS(带有rviz可视化结果显示及文件生成)

原始的KF-GINS是基于读写文件实现的&#xff0c;在此基础上改进了ros版本&#xff0c;将原始数据文件转换为rosbag格式&#xff0c;并实现了rviz下的可视化结果显示&#xff0c;代码已共享至github https://github.com/slender1031/kf-gins-ros 感谢武汉大学卫星导航定位技术研…

IT培训的背后,是“韭菜”的躺赚梦!

本文只谈"骗局"&#xff0c;不谈其他&#xff0c;绝不引战&#xff0c;如有错误&#xff0c;希望指出我会及时改正。 实际也有大量做得好的、值得肯定的培训机构&#xff0c;这里需要大家仔细鉴别。 导语 为什么要写这篇文章呢&#xff0c;近些年培训这个话题也比较…

Mhz_c1f靶场-简记

靶机 名称&#xff1a;mhz_cxf:clf download url&#xff1a;https://www.vulnhub.com/entry/mhz_cxf-c1f,471/ IP地址探测 sudo netdiscover -i eth1 -r 192.168.56.0/24 sudo netdiscover -i eth1 -r 192.168.56.0/24 Currently scanning: 192.168.56.0/24 | Screen …

ARM Trace32(劳特巴赫) 使用介绍 1 - Veloce 环境中使用 Trace32 介绍

文章目录 背景1.1 Trace 启动1.1.1 Trace32 系统相关设置 1.2 Trace 常用命令1.2.2 加在bin文件1.2.3 寄存器常用命令1.2.4 内存(寄存器)数据修改 1.3 变量相关命令 背景 Veloce是一款基于FPGA的高速仿真器&#xff0c;可用于验证芯片设计和软件开发, 它和 Trace32 都可以用于…

16.RocketMQ之消费重试以及原理

highlight: arduino-light 1.4 消费重试 对于顺序消息,当消费者消费消息失败后,消费者会在本地自动不断进行消息重试,每次间隔时间为 1 秒,重试最大值是 Integer.MAX_VALUE。 对于无序消息(普通、定时、延时、事务消息)当消费者消费消息失败时可以通过设置返回状态达到重试的目…

湿地环境监测物联网解决方案

湿地作为生态系统的关键组成部分&#xff0c;发挥着涵养水源、调节气候、改善环境、维护生物多样性等生态功能。湿地提供了独特的生境&#xff0c;为许多鸟类、鱼类和其他野生动物提供了栖息地和食物来源。此外&#xff0c;湿地还具有保持水量平衡和水质净化的重要功能&#xf…

最优控制:代数黎卡提方程ARE(Algebraic Riccati Equation)

本文介绍代数黎卡提方程的Matlab解法&#xff0c;包括直接求解和迭代求解 问题描述&#xff1a; 一、数值解法 可以看出&#xff0c;ARE方程是关于P的一个非线性方程&#xff0c;当系统矩阵维度较高时&#xff0c;难以求解&#xff0c;但是MATLAB给出了求解ARE的函数care % 系…

颜色聚合向量 Color Co-ccurrence Vector 介绍以及MATLAB代码实现

这件事情的起因是我想复习一下我在亚太杯数学建模当中使用过的CCV这种方法&#xff0c;但是CSDN平台上找了半天都没有&#xff0c;所以后来决定Google一下&#xff0c;终于找到了&#xff0c;甚至还有实现的代码&#xff0c;因此放上来。原文见Dr. Mahmoud Attia的博客。 一、…

JAVA中的伪共享与缓存行

一.伪共享与缓存行 1.CPU缓存架构 CPU 是计算机的心脏&#xff0c;所有运算和程序最终都要由它来执行。 主内存&#xff08;RAM&#xff09;是数据存放的地方&#xff0c;CPU 和主内存之间有好几级缓存&#xff0c;因为即使直接访问主内存也是非常慢的。 CPU的速度要远远大…

一图看懂CodeArts Board 5大特性,带你玩转看板服务

华为云看板服务CodeArts Board&#xff0c;通过构建研发效能度量体系&#xff0c;实现软件研发过程的可视化、软件交付的可管理可跟踪可量化&#xff0c;及时识别研发过程的堵塞点和改进点&#xff0c;通过数据驱动运营和治理&#xff0c;不断提升企业的软件能力和研发效能。

详解JAVA序列化

目录 1.什么是序列化 2.JAVA中的序列化 2.1.成员变量必须可序列化 2.2.transient关键字&#xff0c;可避免被序列化 2.3.无法更新状态 2.4.serialVersionUID 3.JDK序列化算法 4.序列化在实际中的一些应用 1.什么是序列化 序列化就是将对象转换为二进制格式的过程。对象…

Maven安装和配置详细教程

Maven安装和配置详细教程 1、Maven简介 Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的项目构建工具,它用来帮助开发者管理项目中的 jar,以及 jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作。 2、Maven下载 点击Maven下载官方地址下载Maven。或者去…

postman持续集成-Jenkins自动构建

自动构建&#xff0c;就是设置一个定时器&#xff0c;定时时间到&#xff0c; Jenkins 自动执行测试用例 比如说,我设置下午五点,那么jenkins就是自动执行命令,自动生成报告,后续还可加上邮箱,会把报告发至邮箱 1. Jenkins 首页&#xff0c;点击任务名&#xff1a;如&#xff…

数据库—关系代数

传统的集合运算 在数据库中的关系代数运算有以下三种基本运算 并交差 必须满足两个表之间的属性个数必须一样。&#xff08;必须具有相容性&#xff09; 投影与选择运算 投影&#xff1a;π L _L L​( R ) 解释->π是投影符号&#xff0c;L是R表中的属性列&#xff0c;从…

临时文件中转服务的搭建-chfs软件的使用

因为经常用到远程桌面连接&#xff0c;所以本地pc和远程pc间的文件传输一直是个经常遇到的问题&#xff0c;尝试过用vftp搭建ftp服务&#xff0c;但是该服务在许多vps上被禁用&#xff0c;且windows上使用也要进行设置&#xff0c;比较麻烦。所幸发现了ods-im/CuteHttpFileServ…

接口测试如何做?你真的会做吗?全网超全整理实战案例...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 API测试的流程 准…

分布式事务Seate

一、Seata简介 1、Seata的核心组件 TC (Transaction Coordinator)事务协调者&#xff1a;维护全局和分支事务的状态&#xff0c;协调全局事务提交或回滚。TM (Transaction Manager)事务管理器&#xff1a;定义全局事务的范围、开始全局事务、提交或回滚全局事务。RM (Resourc…

2023下半年北京/上海/深圳软考(中/高级)认证招生

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

Docker安装与启动

Docker安装与启动 文章目录 Docker安装与启动前言容器与虚拟机比较 1、安装Docker2、设置ustc的镜像3、Docker的启动与停止总结 前言 容器与虚拟机比较 虚拟机&#xff08;VM&#xff09;是计算机系统的仿真。简而言之&#xff0c;它可以在实际上是一台计算机的硬件上运行看起…