简单易学的机器学习算法——lasso

前向逐步线性回归算法 前言 前一篇博客,我们使用了缩减法中的岭回归来改进线性回归算法。其好处是能够减少过拟合,增大模型方差减小偏差。此博客将使用另一种方法对线性回归算法进行改进,其主要目的是找出对结果影响最大的几个属性值。 背景 和岭回归一样,lasso是也是属于缩减法的一种。但是由于其计算比较复杂,繁琐,我们使用另外一个简单的算法进行替代,这个算法就是前向逐步算法,该算法可以达到和lasso算法几乎一样的结果。 这里前向逐步算法主要使用了贪心算法的思想,即每进行一步都要减少误差,直到最后迭代结束。 前向逐步算法原理分析 该算法 阅读详情

本文转自:http://blog.youkuaiyun.com/google19890102/article/details/41412631

一、lasso

   前面已经叙述了基本的线性回归,局部加权线性回归,以及岭回归。其中,局部加权线性回归做的工作就是进行了特征的选择,选择的策略是进行局部的约束;岭回归是采用的正则化的方法进行特征的选择,使用的是。而lasso采用的则是,即lasso是在平方误差的基础上增加:

,

对于这样的一种优化问题,其实是很难求解的,因为这样的优化问题不再是一个凸优化问题。为了求解这样的问题,一些近似的优化算法被采用。或者可以采用一些简单的方法来近似这样的优化过程。

二、前向逐步回归

   前向逐步回归算法可以得到与lasso差不多的效果,但是前向逐步回归更加简单。这是一种贪心算法,在每一步尽量减少误差。

(前向逐步回归流程)

三、实验

1、Matlab实现

主程序

[plain]  view plain copy
  1. clear all;  
  2. clc;  
  3. %% 导入数据  
  4. data = load('abalone.txt');  
  5. x = data(:,1:8);  
  6. y = data(:,9);  
  7. %% 处理数据  
  8. yMean = mean(y);  
  9. yDeal = y-yMean;  
  10. xMean = mean(x);  
  11. xVar = var(x,1);  
  12. [m,n] = size(x);  
  13. xDeal = zeros(m,n);  
  14. for i = 1:m  
  15.     for j = 1:n  
  16.         xDeal(i,j) = (x(i,j)-xMean(j))/xVar(j);  
  17.     end  
  18. end  
  19.   
  20. %% 训练  
  21. runtime  = 5000;%迭代的步数  
  22. eps = 0.001;%调整步长  
  23. wResult = stageWise(xDeal, yDeal, eps, runtime);  
  24.   
  25. %% 根据wResult画出收敛曲线  
  26. hold on   
  27. xAxis = 1:runtime;  
  28. for i = 1:n  
  29.     plot(xAxis, wResult(:,i));  
  30. end  


前向逐步回归函数

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. function [ wResult ] = stageWise( x, y, eps, runtime)  
  2.     [m,n] = size(x);%数据集的大小  
  3.     wResult = zeros(runtime, n);%最终的结果  
  4.     w = zeros(n,1);  
  5.     wMax = zeros(n,1);  
  6.     for i = 1:runtime  
  7.         ws = w'%输出每一次计算出来的权重  
  8.         lowestError = inf;%定义最小值  
  9.         for j = 1:n  
  10.             for sign = -1:2:1  
  11.                 wTest = w;%初始化  
  12.                 wTest(j) = wTest(j)+eps*sign;%只改变一维变量  
  13.                 yTest = x*wTest;  
  14.                 %求误差  
  15.                 rssE = rssError(y, yTest);  
  16.                 if rssE < lowestError%如果好,就替换  
  17.                     lowestError = rssE;  
  18.                     wMax = wTest;  
  19.                 end  
  20.             end  
  21.         end  
  22.         w = wMax;  
  23.         wResult(i,:) = w;  
  24.     end  
  25. end  


误差函数

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. %% rssError函数主要是利用均方误差  
  2. function [ error ] = rssError( y, yTest )  
  3.     yDis = y-yTest;%误差  
  4.     [m,n] = size(yDis);  
  5.     %求平方  
  6.     for i = 1:m  
  7.         yDis(i) = yDis(i)^2;  
  8.     end  
  9.     error = sum(yDis);%求列和  
  10. end  


2、收敛曲线


机器学习——LASSO算法 LASSO算法的简单介绍 LASSO算法和岭回归算法在应用目的上其实都是相似的,这两种算法的本质就是两种不同的正则化方法。 下面来看看这两种方法的对比: 岭回归是L1正则化,LASSO是L2正则化。两个回归系数的值都可以用来限制t,取值有相同的地方。这是一张表示系数和代价函数值关系的图: 红色的圈圈表示的是代价函数值等高线,中间的黑点表示最小值。蓝色区域是系数的选取范围,可以看到,当选取范围和等高线交界的地方是最合适的取值点,这时即符合选取范围,代价函数的值也越接近中心的最小值。 python实现—— 阅读详情

相关推荐

机器学习算法—Lasso回归

Lasso通过引入L1正则化(即系数绝对值之和),能够将一些不重要的特征的系数压缩为零。这种稀疏性使得Lasso不仅是一个回归模型,还是一个特征选择工具。它可以帮助我们在高维数据中筛选出最重要的变量,从而简化模型并提高解释性。正则化的目的是防止过拟合。在普通最小二乘法中,如果特征之间存在多重共线性(即特征高度相关),或者特征数量远大于样本数量,模型可能会过度拟合训练数据,导致在测试数据上的表现不佳。Lasso通过对系数施加惩罚,限制了模型的复杂度,从而提高了泛化能力。

m0_66813240的博客 4402

多元回归:逐步回归

逐步回归是一种基于统计学的建模方法,通过反复添加和删除自变量来选择最佳的模型。它通常分为前向逐步回归和后向逐步回归两种。逐步回归具有自动化选择、灵活性和节约时间和成本等优点,但也存在模型过拟合和过于依赖数据等缺点。在应用逐步回归时,需要根据具体问题进行选择,并结合实际情况进行判断。

m0_72410588的博客 5260

深度探索:机器学习Lasso回归算法原理及其应用

Lasso回归作为一项强大的正则化技术,在处理特征选择和高维数据分析方面发挥了重要作用。随着机器学习和统计学的不断发展,Lasso及其衍生算法将继续在理论研究和实际应用中发挥关键作用。未来的研究可能会继续优化Lasso算法,比如研究更先进的正则化策略、改进参数选择方法,以及探讨如何更好地将其与其他机器学习技术如深度学习结合,以应对更复杂、更大规模的数据挑战。

qq_51320133的博客 1万+

机器学习算法系列(五)- Lasso回归算法(Lasso Regression Algorithm)

机器学习算法系列(五)- Lasso回归算法(Lasso Regression Algorithm)

Saisimon`s blog 8万+

岭回归,Lasso——变量选择技术

本文内容主要基于炼数成金机器学习课程,并且LAR部分参考了文章Lasso算法学习。 解决多重共线性和变量选择的两种方法——岭回归(L2范数)&amp;Lasso(L1范数)。 目录 1 多元线性回归的最小二乘解 2 岭回归 3 LASSO 4 LASSO的计算方法 1 多元线性回归的最小二乘解 Q(β)是残差的平方和的向量化表示,求偏导后得到的解为最小二乘估计; 6.22式中矩...

大羚羊的学习博客 2万+

机器学习概念总结笔记(一)——机器学习算法分类、最小二乘回归、岭回归、LASSO回归

原文:https://cloud.tencent.com/community/article/137341 机器学习概念总结 1,机器学习算法分类 1)监督学习: 有train set,train set里面y的取值已知。 2)无监督学习:有train set, train set里面y的取值未知。 3)半监督学习:有train set, train set里面y的取值有些知道有些不知道。 4)增强学习:reinforcement learning, 无train set。 2,常见算法

abele280的博客 2508

语言lasso步骤_机器学习算法之LASSO算法

算法名称:LASSO的全称Least Absolute Shrinkage and Selection Operator,即最小绝对收缩选择算子。算法的适用场景: Lasso回归是有监督机器学习的一种常见的回归方法。算法的基本逻辑:一般来说,有监督的机器学习都有以下形式的优化目标:其中第一部分就是Loss函数,第二部分正则化项。由此可以看出基本上所有的有监督机器学习,其核心思想无非就是...

weixin_32597695的博客 4813

机器学习——线性回归之Ridge回归和Lasso回归

线性回归是一种常见的机器学习算法,用于建模自变量和因变量之间的线性关系。在实际应用中,除了普通的线性回归外,还有两种常见的改进方法,即Ridge回归和Lasso回归。本文将简单介绍Ridge回归和Lasso回归的理论基础Python代码实现进行对比分析。

weixin_39753819的博客 4239

【机器学习】Lasso回归:稀疏建模与特征选择的艺术

Lasso回归由Robert Tibshirani于1996年提出,是线性回归的一种正则化形式。它在标准线性回归损失函数的基础上,加入了L1范数惩罚项,旨在约束模型参数的绝对值大小,从而促使某些参数直接被“压缩”至零,实现特征的选择性稀疏化。

鑫宝的博客 3216

如何使用Lasso算法降维?

本篇文章将介绍基于Lasso算法的降维方法,并利用Python编程实践,来帮助读者深入理解Lasso算法的原理和应用。

weixin_46287760的博客 3181

【回归分析】MATLAB实现Lasso回归算法

简介Lasso回归算法及其MATLAB实现

WW、forever的博客 1万+

机器学习 Lasso回归算法

Lasso回归算法: 坐标轴下降法与最小角回归法小结     前面的文章对线性回归做了一个小结,文章在这:线性回归原理小结。里面对线程回归的正则化也做了一个初步的介绍。提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归。但是对于Lasso回归的解法没有提及,本文是对该文的补充和扩展。以下都用矩阵法表示,如果对于矩阵分析不熟悉,推荐学习张贤达的《矩阵分析与应用》...

BIG SHARK的博客 6590

lassovar:用Lasso估计和预测VAR模型

拉索瓦尔 用Lasso估计和预测VAR模型。 该软件包是glmnet软件包的包装,旨在促进VAR模型的估计和预测。 该软件包用于: 免责声明 该软件包正在进行中。 用法 lassovar函数可通过套索或自适应套索(使用套索,OLS或岭回归作为初始估计量)来估计矢量自回归。 使用信息标准(BIC或AIC)选择惩罚参数。 套索后OLS也可以估算。 forecast.lassovar用于直接或递归地预测(!)。 summary , residuals和predict方法。

最优化方法期末大作业 --LASSO算法

其中,(\mathbf{X}) 是设计矩阵,(\mathbf{y}) 是观测向量,(\beta) 是回归系数向量,(\lambda) 是正则化参数,控制着正则项的强度,(n) 是样本数量。选择合适的λ值对于实现最佳模型性能至关重要。梯度下降法是一种用于求解LASSO问题的优化算法,但由于LASSO问题包含非光滑的L1正则项,直接使用传统梯度下降法是不可行的。LASSO优化问题是一种在统计学和机器学习中广泛使用的回归分析技术,其主要目标是在保持模型预测准确性的同时,通过正则化实现变量选择和模型复杂度的降低。

2201_75412083的博客 4693

unity 腾讯地图sdk移动和缩放代码

unity 腾讯地图sdk 实现移动端 缩放 和 移动

。。。。。 1282

研究生如何快速发CVPR

研究生如何快速发CVPR,找到科研方向

python_vb的博客 784

ADMM,ISTA,FISTA算法步骤详解,MATLAB代码,求解LASSO优化问题

了解 ADMM, ISTA, FISTA 算法的基本原理、收敛性和复杂度;使用上述三种算法,解决 LASSO 问题;分析三种算法的表现情况。

This blog is a space to document my professional learnings, personal reflections, and everything in between. 2万+

从混乱到清晰:用QJsonObject重构你的Qt网络API数据解析层(避坑指南)

本文详细介绍了如何使用QJsonObject重构Qt网络API数据解析层,避免常见的JSON解析陷阱。通过安全解析模式、数据绑定和性能优化技巧,帮助开发者构建高效、健壮的解析逻辑,提升代码可维护性和可读性。特别适用于处理复杂嵌套的JSON响应数据场景。

weixin_29011667的博客 230

零基础入门转录组下游分析——机器学习算法之lasso(筛选特征基因)

转录组数据分析之一,先介绍相关基础知识,其次用实际案例为基础,由浅入深介绍用lasso机器学习方法筛选特征基因的全过程,包括内容有相关代码和截屏。

呆猪儿的博客 5739

ArcGIS拓扑检查实战:5分钟搞定面重叠与缝隙问题(附详细截图)

本文详细介绍了如何使用ArcGIS进行拓扑检查,快速解决面重叠与缝隙问题。通过搭建拓扑检查环境、配置拓扑规则、五步闪电修复法及批量处理技巧,帮助用户高效完成数据修正,提升GIS数据质量。特别适合地籍管理、规划红线等场景应用。

z4a5b6的博客 741

一代测序、二代测序以及三代测序的优缺点及应用对比?

一、初现庐山真面目 一代测序:又称Sanger测序(多分子,单克隆) 历史:第一代DNA测序技术(又称Sanger测序)在1975年,由Sanger等人开创,并在1977年完成第一个基因组序列(噬菌体X174),全长5375个碱基。研究人员经过30年的实践并对技术及测序策略的不断改进(如使用了不同策略的作图法、鸟枪法),2001年完成的首个人类基因组图谱就是以改进了的Sanger法为其测序基础。 原理:在4个DNA合成反应体系(含dNTP)中分别加入一定比例带有标记的ddNTP(分为:ddATP...

wangprince2017 3万+

【机器学习】LASSO算法&弹性网络

1.在上一次我们说了Rigde回归。在那之间我们说了对于代价函数有两种正则化的方式:L1正则化和L2正则化。这两种正则化的目的有一个很重要的共同点就是抵抗多重共线性,在岭回归中我们使用的是L2正则化,那么今天就简单的说一下L1正则化。 上边的函数就是Lasso算法的代价函数,也是L1正则化之后的代价函数。在这种方法下,对于代价函数最小...

YG爱木木 6083

ArcMap投影变换避坑指南:为什么你的坐标转换总出错?常见问题解析与解决方案

本文深入解析ArcMap中坐标转换与投影变换的核心区别与常见陷阱。针对坐标转换总出错的问题,从混淆“定义投影”与“投影变换”、栅格数据重采样选择、矢量数据地理变换参数设置等关键环节,提供清晰的避坑指南与实战解决方案,帮助用户确保空间数据的精确匹配。

weixin_29210727的博客 356
上一篇: 简单易学的机器学习算法——岭回归(Ridge Regression)
下一篇: DAO设计模式简介
thystar
博客等级 码龄17年 407粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值