python 最小二乘回归 高斯核_「机器学习」一文读懂线性回归、岭回归和Lasso回归...

点击上方蓝色字体,关注AI小白入门哟

d03392cce670940ea98217841193a5b9.png

作者 | 文杰

编辑 | yuquanle

本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失,然后介绍了线性回归中常用的两种范数来解决过拟合和矩阵不可逆的情况,分别对应岭回归和Lasso回归,最后考虑到线性回归的局限性,介绍了一种局部加权线性回归,增加其非线性表示能力

线性回归

A、线性回归

假设有数据有:

677e30492981ea46ddbbc50d079c2761.png

其中

ad717cdce1007c07036ea689b88b2eb0.png

,

2b77546b39fe297c3ac5636f25333095.png

。其中m为训练集样本数,n为样本维度,y是样本的真实值。线性回归采用一个高维的线性函数来尽可能的拟合所有的数据点,最简单的想法就是最小化函数值与真实值误差的平方(概率解释-高斯分布加最大似然估计)。即有如下目标函数:

a51993f650240790f3e99bab427877c8.png

其中线性函数如下:

6488fd2fcac19bc3cc88a0c5ee342ffe.png

构建好线性回归模型的目标函数之后,接下来就是求解目标函数的最优解,即一个优化问题。常用的梯度优化方法都可以拿来用,这里以梯度下降法来求解目标函数。

2077a238a07e01367b299b3e49d15975.png

另外,线性回归也可以从最小二乘法的角度来看,下面先将样本表示向量化,

bc4dd7ed60ed7d1bc8d91521cff7c2a7.png

f92ceff54972fe5f239643dda41680a4.png

,构成如下数据矩阵。

03f2af3cd2367f3b10e9d9a8d289cb5b.png

那么目标函数向量化形式如下:

98666c9a1d8e2c6a6ee1c0712d207c35.png

可以看出目标函数是一个凸二次规划问题,其最优解在导数为0处取到。

38d165b4697e9805e976d279e82d822f.png

值得注意的上式中存在计算矩阵的逆,一般来讲当样本数大于数据维度时,矩阵可逆,可以采用最小二乘法求得目标函数的闭式解。当数据维度大于样本数时,矩阵线性相关,不可逆。此时最小化目标函数解不唯一,且非常多,出于这样一种情况,我们可以考虑奥卡姆剃刀准则来简化模型复杂度,使其不必要的特征对应的w为0。所以引入正则项使得模型中w非0个数最少。当然,岭回归,lasso回归的最根本的目的不是解决不可逆问题,而是防止过拟合。

B、概率解释

损失函数与最小二乘法采用最小化平方和的概率解释。假设模型预测值与真实值的误差为

ce4249ab29c037a691d67014609e83ef.png

,那么预测值

45735bc15188a02f0569c554719ac497.png

与真实值

0902bfb631aef3abed7000d96ac38dd7.png

之间有如下关系:

27bdc59330956761d462700690e2d6a0.png


根据中心极限定理,当一个事件与很多独立随机变量有关,该事件服从正态分布 。一般来说,连续值我们都倾向于假设服从正态分布。假设每个样本的误差

ce4249ab29c037a691d67014609e83ef.png

独立同分布均值为0,方差为σ的高斯分布

160dacdb11bcb42a5c0994e81d1be29d.png

,所以有:

cb3e86b5a26fddbf9c4d52b3fb2b2492.png

即表示

0902bfb631aef3abed7000d96ac38dd7.png

满足以均值为

b4b4c8057240e9dd67745a1bbbc3ea61.png

,方差为

ce4249ab29c037a691d67014609e83ef.png

的高斯分布。

758aa18210d32f93791dc6361361b5bb.png

由最大似然估计有:

87d2197ac109d0dcae95c8f3128f7ee2.png

岭回归和Lasso回归

岭回归的目标函数在一般的线性回归的基础上加入了正则项,在保证最佳拟合误差的同时,使得参数尽可能的“简单”,使得模型的泛化能力强(即不过分相信从训练数据中学到的知识)。正则项一般采用一,二范数,使得模型更具有泛化性,同时可以解决线性回归中不可逆情况。

b1eaa2967307d6d3c09bca7022ed0326.png


其迭代优化函数如下:

38515607b37633f26df42fd106b10ded.png


另外从最小二乘的角度来看,通过引入二范正则项,使其主对角线元素来强制矩阵可逆。

919b1a249434d0739f12da33c31cd8b3.png


Lasso回归采用一范数来约束,使参数非零个数最少。而Lasso和岭回归的区别很好理解,在优化过程中,最优解为函数等值线与约束空间的交集,正则项可以看作是约束空间。可以看出二范的约束空间是一个球形,而一范的约束空间是一个方形,这也就是二范会得到很多参数接近0的值,而一范则尽可能非零参数最少。

64152818df53f82679db3f74cac3af1f.png

值得注意的是线性模型的表示能力有限,但是并不一定表示线性模型只能处理线性分布的数据。这里有两种常用的线性模型非线性化。对于上面的线性函数的构造,我们可以看出模型在以

cad7a5fe990f121843430fffa00d62d2.png

的坐标上是线性的,但是并不表示线性的模型就一定只能用于线性分布问题上。假如我们只有一个特征

0382374c86a427f4efe21a2ae11ec553.png

,而实际上回归值是

76e80194e3be7b6683b0c5735dba47d5.png

等,我们同样可以采用线性模型,因为我们完全可以把输入空间映射到高维空间

de85f2ad55eee95782b1748c827181bf.png

,其实这也是核方法以及PCA空间变换的一种思想,凡是对输入空间进行线性,非线性的变换,都是把输入空间映射到特征空间的思想,所以只需要把非线性问题转化为线性问题即可。另外一种是局部线性思想,即对每一个样本构建一个加权的线性模型。

局部加权线性回归

考虑到线性回归的表示能力有限,可能出现欠拟合现象。局部加权线性回归为每一个待预测的点构建一个加权的线性模型。其加权的方式是根据预测点与数据集中点的距离来为数据集中的点赋权重,当某点距离预测点较远时,其权重较小,反之较大。由于这种权重的机制引入使得局部加权线性回归产生了一种局部分段拟合的效果。由于该方法对于每一个预测点构建一个加权线性模型,都要重新计算与数据集中所有点的距离来确定权重值,进而确定针对该预测点的线性模型,计算成本高,同时为了实现无参估计来计算权重,需要存储整个数据集。

局部加权线性回归,在线性回归基础上引入权重,其目标函数(下面的目标函数是针对一个预测样本的)如下:

3cefc46fd1a68eb3870aa6efca29fe1c.png


一般选择下面的权重函数,权重函数选择并非因为其类似于高斯函数,而是根据数据分布的特性,但权重函数的选取并不一定依赖于数据特性。

7fdbab0b7b2388503adfde3291c9bf0b.png


其中是待预测的一个数据点。

对于上面的目标函数,我们的目标同样是求解使得损失函数最小化,同样局部加权线性回归可以采用梯度的方法,也可以从最小二乘法的角度给出闭式解。

e0a2189cc7f6698816832cffaa419a46.png

其中

e5862597752da8da203856c484874fa8.png

是对角矩阵,

1270240a2c28702fd09e8c283bcec064.png

线性回归核心思想最小化平方误差,可以从最小化损失函数和最小二乘角度来看,优化过程可以采用梯度方法和闭式解。在闭式解问题中需要注意矩阵可逆问题。考虑到过拟合和欠拟合问题,有岭回归和lasso回归来防止过拟合,局部加权线性回归通过加权实现非线性表示。

代码实战

A、线性回归

/**线性回归函数的实现,考虑一般的线性回归,最小平方和作为损失函数,则目标函数是一个无约束的凸二次规划问题,由凸二次规划问题的极小值在导数为0处取到,且极小值为全局最小值,且有闭式解。根据数学表达式实现矩阵之间的运算求得参数w。**/int regression(Matrix x,Matrix y){ Matrix xT=x.transposeMatrix(); Matrix xTx=xTx.multsMatrix(xT,x); Matrix xTx_1=xTx.niMatrix(); Matrix xTx_1xT=xTx_1xT.multsMatrix(xTx_1,xT); Matrix ws; ws=ws.multsMatrix(xTx_1xT,y); cout<

B、岭回归和Lasso回归

/**下面的岭回归函数只是在一般的线性回归函数的基础上在对角线上引入了岭的概念,不仅有解决矩阵不可逆的线性,同样也有正则项的目的,采用常用的二范数就得到了直接引入lam的形式。**/int ridgeRegres(Matrix x,Matrix y,double lam){ Matrix xT=x.transposeMatrix(); Matrix xTx=xTx.multsMatrix(xT,x); Matrix denom(xTx.row,xTx.col,lam,"diag"); xTx=xTx.addMatrix(xTx,denom); Matrix xTx_1=xTx.niMatrix(); Matrix xTx_1xT=xTx_1xT.multsMatrix(xTx_1,xT); Matrix ws=ws.multsMatrix(xTx_1xT,y); cout<

C、局部加权线性回归

/**局部加权线性回归是在线性回归的基础上对每一个测试样本(训练的时候就是每一个训练样本)在其已有的样本进行一个加权拟合,权重的确定可以通过一个核来计算,常用的有高斯核(离测试样本越近,权重越大,反之越小),这样对每一个测试样本就得到了不一样的权重向量,所以最后得出的拟合曲线不再是线性的了,这样就增加的模型的复杂度来更好的拟合非线性数据。**///需要注意的是局部加权线性回归是对每一个样本进行权重计算,所以对于每一个样本都有一个权重w,所以下面的函数只是局部线性回归的一个主要辅助函数Matrix locWeightLineReg(Matrix test,Matrix x,Matrix y,const double &k){ Matrix w(x.row,x.row,0,"T"); double temp=0; int i,j; /** 根据测试样本点与整个样本的距离已经选择的核确定局部加权矩阵,采用对角线上为局部加权值 **/ for(i=0;i

详细代码: https://github.com/myazi/myLearn/blob/master/LineReg.cpp

The End

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

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

相关文章

天宫初级认证答案_跨境电商人才初级认证试题以及答案

跨境电商人才初级认证试题以及答案跨境电商人才初级认证试题一&#xff0c;单选题(共40题,每题1分,共40分)1.在拍摄反光性产品时,就是从哪个角度进行拍摄的A、正面B、侧面参考答案:B2.信用证就是一种( )信用A、商业B、银行C、民间D、企业参考答案:B3、阿里巴巴专业术语中,MA的全…

Linux打包软件版本带时间,带你写一个 linux 下的打包软件 tar

相信你对 linux 的 .tar.gz 有点熟悉&#xff0c;这就是先 tar 打包(.tar 后缀)&#xff0c;再对此 tar 文件用 gzip 压缩(.tar.gz)的后缀名。值得注意的是&#xff0c; tar 不是压缩软件&#xff0c;它只做把一堆文件/文件夹打包到一个文件(tar 文件)里的事情&#xff0c;而文…

优先队列默认是小顶堆吗_一分钟带你读懂什么是堆?

堆其实就是一种特殊的队列——优先队列。 普通的队列游戏规则很简单&#xff1a;就是先进先出&#xff1b;但这种优先队列搞特殊&#xff0c;不是按照进队列的时间顺序&#xff0c;而是按照每个元素的优先级来比拼&#xff0c;优先级高的在堆顶。 这也很容易理解吧&#xff0c;…

螺旋测微器b类不确定度_物理实验直测量不确定度评估.ppt

物理实验直测量不确定度评估直接测量不确定度评估 Gauss分布 测量列的平均值、标准差 A类不确定度 t分布 B类不确定度 直接测量的合成不确定度 Gauss分布 也称正态分布。 δ的平均值等于0、方差为σ。 特征&#xff1a; 对称性——大于平均值与小于平均值的概率相等&#xff1b…

python 执行shell_python执行shell命令的方法

python执行shell命令的方法 os模块 os.system方式&#xff1a; import os os.system(top) os.system(cat /proc/cpuinfo) 说明 这个调用相当直接&#xff0c;且是同步进行的&#xff0c;程序需要阻塞并等待返回。 返回值是依赖于系统的&#xff0c;直接返回系统的调用返回值&am…

linux下c语言读取roed文件,如何在Linux系统上安装Android4.4.docx

Android (x86)项目致力于移植 Android系统到X86处理器上&#xff0c;使用户可以更容易的在任何电脑上安装Android。他们通过使用android源码&#xff0c;增加补丁来使 Android能够在X86处理器&#xff0c;笔记本电脑和平板 电脑下工作。前一段时间&#xff0c;项目组发布了最新…

微信小程序setinterval_简单谈谈setTimeout与setInterval

感谢踩过的坑sf社区的第一篇文章。最近在做一个拍卖的微信小程序&#xff0c;用到了定时器setTimout和setInterval,简单谈谈这两个api。setTimeout最常见的用法就是第二种(第三种mdn文档不推荐)&#xff0c;如:var timeoutId setTimeout(function() {console.log(hello world!…

python 注释一段话_Python快速入门(一)

引言Python作为一个&#xff0c;目前最火的编程语言之一&#xff0c;已经渗透到了各行各业。它易学好懂&#xff0c;拥有着丰富的库&#xff0c;功能齐全。人生苦短&#xff0c;就用Python。这个快速入门系列分为六篇&#xff0c;包含了Python大部分基础知识&#xff0c;每篇阅…

linux ibus获取窗体位置,Ubuntu 12.04 显示ibus 的输入框

在虚拟机中安装了Ubuntu 12.04&#xff0c;系统是英文版本的&#xff0c;我能接受&#xff0c;但是苦于没有中文输入法。起先&#xff0c;我是安装SCIM&#xff0c;结果我折腾了半天&#xff0c;发现其只能在lib-office下使用。firefox,文字编辑器中都不能调出SCIM。无奈将其卸…

transporter上传卡正在交付_【iOS】Xcode11使用Transporter将APP上传到App Store,卡在正在验证APP...

问题&#xff1a;在使用Transporter时&#xff0c;会卡主&#xff0c;一直显示正在验证APP在这里插入图片描述解决方案一&#xff1a;利用V-P-N在这里插入图片描述使用安全上网(V-P-N)&#xff0c;双击打开iTMSTransporter&#xff0c;等待几分钟lichuangMacBook-Pro-3 ~ % /Ap…

python练手经典100例微盘_20个Python练手经典案例,能全做对的人确实很少!

100个Python练手小程序&#xff0c;学习python的很好的资料&#xff0c;覆盖了python中的每一部分&#xff0c;可以边学习边练习&#xff0c;更容易掌握python。 如果你感觉学不会&#xff1f;莫慌&#xff0c;小编推荐大家加入群&#xff0c; 前面548中间377后面875&#xff0…

小红帽linux各功能中英,英文短剧《小红帽》剧本台词完整版---中英对照文本版...

大灰狼和小红帽的故事红帽第一场&#xff1a;小红帽家 妈妈&#xff1a; (妈妈拿着一个篮子&#xff0c;把桌子上的水果放在篮子里) 小红帽唱着歌&#xff0c;欢快地跑进来)Hi,mummy, what are you doing? 嘿&#xff0c;妈妈 你在什么&#xff1f; 妈妈&#xff1a; (一边把水…

uipath循环datatable_UiPath之DataTable转换为List和Array

今天给大家分享一下&#xff0c;如何将DataTable转为List和Array&#xff0c;为此小U也花了不少时间研究&#xff0c;最后发现没有那么复杂。先来说说List和Array的区别&#xff1a;List&#xff1a;就像一个链条&#xff0c;存储数据的空间可以不连续。Array&#xff1a;就像一…

python批量下载文件教程_Python抓包菜鸟教程:批量下载图片的方法,电脑和手机都能用...

笔者看上了一组图集&#xff0c;然后准备一张一张下载时&#xff0c;瞄了一眼&#xff0c;这组图集还有100&#xff0c;好吧&#xff0c;我酸了。 笔者就是试试工具&#xff0c;你们别像我这样用&#xff0c;这么好的工具&#xff0c;做自媒体&#xff0c;那绝对了那如何批量下…

esxi挂载Linux的nfs盘,ESXi安装centos7挂载群晖NFS

前段时间折腾了ESXi&#xff0c;然后无尽的折腾接踵而来&#xff0c;今天要说的是如何安装centos7并挂载群晖虚拟机的NFS共享文件夹直接步入正题&#xff01;先是下载centos7镜像&#xff0c;因为我是用来当服务器的&#xff0c;所以只需要minimal版即可【centos下载链接】自己…

python使用的编辑器_我用过的最好的python编辑器PyScripter

用了IDLE, PythonWin等几个python编辑器&#xff0c;在代码补全、参数提示等功能上都非常不满意。 终于找到PyScripter并且试用了一下&#xff0c;代码补全、参数提示等功能非常强大。这个功能其实非常重要&#xff0c;可以大大提高开发效率&#xff0c;减少出错。很满意.PyScr…

linux is not unix由来,一些奇怪的 unix 指令名字的由来(转)

一些奇怪的 unix 指令名字的由来(转)[more]一些奇怪的 unix 指令名字的由来awk "Aho Weinberger and Kernighan"这个语言以作者 Al Aho, Peter Weinberger 和 Brian Kernighan 的姓来命名。grep "Global Regular Expression Print"grep 来自 ed 的列印所…

python discuz_pythonDiscuz发帖器的实现

网络技术需要大家共同分享&#xff0c;不能闭门造车&#xff0c;下面是bj-dnsCom提示&#xff1a;首先要清楚discuz论坛发帖的流程&#xff0c;简单地说就是以下流程:进入登录页 ->登录 -> 进入版面 ->发帖 首先要清楚discuz论坛发帖的流程&#xff0c;简单地说就是以…

基于linux的业设计课题,基于linux下智能手机的设计与制作 毕业设计.doc

本科生毕业论文(设计)题 目&#xff1a; 基于linux下智能手机的设计与制作目录1. 绪论11.1 嵌入式系统的应用前景11.2linux操作系统21.2.1Linux介绍22.硬件、软件介绍32.1S3c2440知识32.1.1S3c2440系统结构介绍32.1.2arm实验仪介绍72.2 GPRS无线模组92.2.1 GPRS概述及工作原理9…

excel文件导入hive乱码_将excel中的数据导入hive

步骤一&#xff1a;将excel另存为txt文档(文本文件(制表符分割))假设名字为CompanyCode.txt步骤二&#xff0c;将该txt文件导入Linux指定目录中步骤三&#xff0c;转换编码格式&#xff0c;在指定目录下执行如下命令&#xff1a;piconv -f gb2312 -t UTF-8 CompanyCode.txt &g…