matlab最小二乘 弹性网络,最小二乘回归,岭回归,Lasso回归,弹性网络_临雅的博客-程序员秘密

技术标签: matlab最小二乘 弹性网络  

普通最小二乘法

理论:

42d606ef7b178ec316da7569b506692b.png

损失函数:

f527bfc2e18e48b5458de74b46a1df87.png

权重计算:

276c4785bf70c309f085c1298f55d6d9.png

1、对于普通最小二乘的系数估计问题,其依赖于模型各项的相互独立性。

2、当各项是相关的,且设计矩阵 X的各列近似线性相关,那么,设计矩阵会趋向于奇异矩阵,这会导致最小二乘估计对于随机误差非常敏感,产生很大的方差。

例如,在没有实验设计的情况下收集到的数据,这种多重共线性(multicollinearity)的情况可能真的会出现。

使用:

from sklearn import datasets, linear_model

regr = linear_model.LinearRegression()

reg.fit(X_train, y_train)

岭回归

理论:

损失函数:

bb60fab8c6101b3057b48e02b7b7d541.png

其中阿尔法大于0,它的值越大,收缩量越大,这样系数对公线性的鲁棒性也更强

当X矩阵不存在广义逆(即奇异性),最小二乘法将不再适用。可以使用岭回归

X矩阵不存在广义逆(即奇异性)的情况:

1)X本身存在线性相关关系(即多重共线性),即非满秩矩阵。

当采样值误差造成本身线性相关的样本矩阵仍然可以求出逆阵时,此时的逆阵非常不稳定,所求的解也没有什么意义。

2)当变量比样本多,即p>n时.

岭迹图:

岭迹图作用:

1)观察λ较佳取值;

2)观察变量是否有多重共线性;

在λ很小时,W很大,且不稳定,当λ增大到一定程度时,W系数迅速缩小,趋于稳定。

λ的选择:一般通过观察,选取喇叭口附近的值

岭参数的一般选择原则

选择λ值,使到

1)各回归系数的岭估计基本稳定;

2)用最小二乘估计时符号不合理的回归系数,其岭估计的符号变得合理;

3)回归系数没有不合乎实际意义的值;

4)残差平方和增大不太多。 一般λ越大,系数β会出现稳定的假象,但是残差平方和也会更大

岭回归选择变量的原则(仅供参考)

1)在岭回归中设计矩阵X已经中心化和标准化了,这样可以直接比较标准化岭回归系数的大小。可以剔除掉标准化岭回归系数比较稳定且值很小的自变量。

2)随着λ的增加,回归系数不稳定,震动趋于零的自变量也可以剔除。

3)如果依照上述去掉变量的原则,有若干个回归系数不稳定,究竟去掉几个,去掉哪几个,这无一般原则可循,这需根据去掉某个变量后重新进行岭回归分析的效果来确定。

使用:

import numpy as np

import matplotlib.pyplot as plt

from sklearn import linear_model

# X is the 10x10 Hilbert matrix

X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])

y = np.ones(10)

# #############################################################################

# Compute paths

n_alphas = 200

alphas = np.logspace(-10, -2, n_alphas)

coefs = []

for a in alphas:

ridge = linear_model.Ridge(alpha=a, fit_intercept=False)

ridge.fit(X, y)

coefs.append(ridge.coef_)

# #############################################################################

# Display results

ax = plt.gca()

ax.plot(alphas, coefs)

d4b444980896da758d37c95a7b0a82b9.png

Lasso回归

理论:

维数灾难:

何谓高维数据?高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。

在分析高维数据过程中碰到最大的问题就是维数的膨胀,也就是通常所说的“维数灾难”问题。研究表明,随着维数的增长,分析所需的空间样本数会呈指数增长。

如下所示,当数据空间维度由1增加为3,最明显的变化是其所需样本增加;换言之,当样本量确定时,样本密度将会降低,从而样本呈稀疏状态。假设样本量n=12,单个维度宽度为3,那在一维空间下,样本密度为12/3=4,在二维空间下,样本分布空间大小为3*3,则样本密度为12/9=1.33,在三维空间下样本密度为12/27=0.44。

设想一下,当数据空间为更高维时,X=[x1x1,x2x2,….,xnxn]会怎么样?

1、需要更多的样本,样本随着数据维度的增加呈指数型增长;

2、数据变得更稀疏,导致数据灾难;

3、在高维数据空间,预测将变得不再容易;

4、导致模型过拟合。

数据降维:

对于高维数据,维数灾难所带来的过拟合问题,其解决思路是:1)增加样本量;2)减少样本特征,而对于现实情况,会存在所能获取到的样本数据量有限的情况,甚至远小于数据维度,即:d>>n。如证券市场交易数据、多媒体图形图像视频数据、航天航空采集数据、生物特征数据等。

主成分分析作为一种数据降维方法,其出发点是通过整合原本的单一变量来得到一组新的综合变量,综合变量所代表的意义丰富且变量间互不相关,综合变量包含了原变量大部分的信息,这些综合变量称为主成分。主成分分析是在保留所有原变量的基础上,通过原变量的线性组合得到主成分,选取少数主成分就可保留原变量的绝大部分信息,这样就可用这几个主成分来代替原变量,从而达到降维的目的。

但是,主成分分析法只适用于数据空间维度小于样本量的情况,当数据空间维度很高时,将不再适用。

Lasso是另一种数据降维方法,该方法不仅适用于线性情况,也适用于非线性情况。Lasso是基于惩罚方法对样本数据进行变量选择,通过对原本的系数进行压缩,将原本很小的系数直接压缩至0,从而将这部分系数所对应的变量视为非显著性变量,将不显著的变量直接舍弃。

目标函数:

79b9e7a1a5470a5ed4444d0f1b68013c.png

1、Lasso 是估计稀疏系数的线性模型。

2、它在一些情况下是有用的,因为它倾向于使用具有较少参数值的情况,有效地减少给定解决方案所依赖变量的数量。 因此,Lasso 及其变体是压缩感知领域的基础。 在一定条件下,它可以恢复一组非零权重的精确集

弹性网络

1、弹性网络 是一种使用 L1, L2 范数作为先验正则项训练的线性回归模型。

2、这种组合允许学习到一个只有少量参数是非零稀疏的模型,就像 Lasso 一样,但是它仍然保持 一些像 Ridge 的正则性质。我们可利用 l1_ratio 参数控制 L1 和 L2 的凸组合。

3、弹性网络在很多特征互相联系的情况下是非常有用的。Lasso 很可能只随机考虑这些特征中的一个,而弹性网络更倾向于选择两个。

4、在实践中,Lasso 和 Ridge 之间权衡的一个优势是它允许在循环过程(Under rotate)中继承 Ridge 的稳定性。

损失函数:

4ce8717aeb265046f05cfe42793fbd81.png

使用:

from sklearn.linear_model import ElasticNet

enet = ElasticNet(alpha=0.2, l1_ratio=0.7)    #alpha=α   l1_ratio=ρ

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_28933335/article/details/116186650

智能推荐

前端十五道html面试题_这个男银叫小帅的博客-程序员秘密

01.说一下对语义化的理解?对开发者友好,让人更容易读懂,利于代码可读性 对机器友好,让搜索引擎更容易读懂,利于seo02.说一下iframe有哪些优点和缺点?优点:展现嵌入的网页;加载速度较慢的内容,如广告;可以跨子域通信; 缺点:iframe会阻塞主页面onload事件;不利于搜索引擎识别;增加http请求;03.DOCTYPE的作用?严格模式和混杂模式的区别?!DOCTYPE告诉浏览器以HTML5标准解析页面,如果不写,则进入混杂模式严格模式(标准模式):以w3c标准解析

USB3的端口识别Realsense D435i的USB为USB2的解决办法_Robin Shaun的博客-程序员秘密

USB3的端口识别Realsense D435i的USB为USB2的解决办法如果确定系统没有问题(识别其他的设备为USB3)时,可参考如下解决方案,来自https://www.intel.com/content/www/us/en/support/articles/000027498/emerging-technologies/intel-realsense-technology.htmlWhat are you seeing?The RealSense Viewer or other tool is

人很难挣到认知以外的钱,人也很难提升认知以外的能力。_人很难赚到自己认知以外的钱什么意思_章鱼哥TuNan&Z的博客-程序员秘密

人很难挣到认知以外的钱,人也很难提升认知以外的能力。学历可以不高,但是一定要多读书。

b宝塔 centos端口更改_BT宝塔面板修改默认8888端口的方法_weixin_39996096的博客-程序员秘密

BT宝塔面板默认的端口为8888号端口,安全起见,用户可以自定义更改默认的8888端口号,环境吧分享BT宝塔面板修改默认端口号的方法:BT宝塔面板修改默认端口号的方法更改8888号默认端口号的方法有两种,一种是通过BT宝塔后台面板设置中更改,另一种方法可以通过命令来更改默认端口号(Linux版宝塔)。方法一:通过宝塔后台面板设置更改端口默认号1. 登录到BT宝塔面板后台http://你的服务器IP...

处理小程序页面栈限制--小程序wx.navigateTo封装_royal-的博客-程序员秘密

本文转载自:https://blog.csdn.net/zuorishu/article/details/93618624感谢前辈的文章,得以解决此问题。此篇文章只为记录,学习,和将来的使用。一、导语:小程序中页面栈最多十层,随着页面增加路由跳转很容易在不知道的情况下就会堆栈到十层,再用navigateTo去跳转就跳不动了。这时候就需要删除当前页面栈(redirectTo)或删除所有页面...

html使用div显示会错位,为什么2个div并列在DW里会错位?_阿内本人的博客-程序员秘密

该楼层疑似违规已被系统折叠隐藏此楼查看此楼无标题文档#index_2{width:740px;float:left;margin:0 0 0 10px;}#index_2_1{width:740px;float:left;}#index_2_1 h2{width:740px;background-image:url(images/gsjj.jpg);background-repeat:no-re...

随便推点

Riak - 背景篇(1)_iteye_20566的博客-程序员秘密

分布式高可用键值对数据库Riak - 背景篇(1)Riak简介典型的现代关系数据库在某些类型的应用程序中表现平平,难以满足如今的互联网应用程序的性能和可扩展性要求。因此,需要采用不同的方法。在过去几年中,一种新的数据存储类型变得非常流行,通常称为 NoSQL,因为它可以直接解决关系数据库的一些缺陷。Riak 就是这类数据存储类型中的一种。 Riak 并不是惟一的一种 NoSQL 数据存...

通过前序遍历和中序遍历构建二叉树 python实现_由先序序列pres和中序序列ins构造二叉链 python 完整代码_sty945的博客-程序员秘密

前言通过前序遍历和中序遍历构建二叉树的原理,主要是找前序遍历根节点在中序遍历中的位置,然后将二叉树而成左子树和右子树,然后依次进行这样的操作,思路还是比较简单的代码class Node: def __init__(self, data, left, right): self.data = data self.left = left ...

自定义Popup菜单_不二先生0321的博客-程序员秘密

在这里我给大家介绍一种自定义popup菜单,主要效果是点击一个按钮,会出现一个popup菜单,你可以对其进行选择。网上已经有人写了一个模板,我们可以对其进行适当的修改即可。原来的代码链接如下:http://code.google.com/p/simple-quickactions/我修改之后的核心代码如下:popup类BetterPopupWindow.ja

ubuntu11.10 安装谷歌拼音输入法详细步骤_刘召拼音怎么打_一路前行的博客-程序员秘密

Ubuntu其实自己带的输入法ibus也不是很烂,只是感觉输入起来有些词语非常麻烦,比如“的”默认在第二个,而且词频还无法调整。于是想到GOOGLE谷歌的拼音输入法,找了很多Ubuntu 10.04版本的安装方法,貌似在10.10上面用起来很诡异,或者无法安装成功,于是有了本文!

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COER) 解决办法_dw_java08的博客-程序员秘密

在向mysql 插入中文的过程中,系统报错:Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COER)这是由于mysql 默认的编码格式与存入的数据格式不一样导致的,解决办法:打开mysql安装目录,里面有个my.ini文件,打开这个文件,里面有两处字符集的设置,默认是拉丁(lati

iOS高级进阶方向_ios 高级_马拉萨的春天的博客-程序员秘密

目录1.苹果官方文档 & 新API2.iOS第三方库源码 & 实现原理3.iOS标配技能4.iOS多线程5.iOS架构 & 代码规范6.iOS工程化管理7.苹果官方Kit8.Runtime & Runloop9.iOS FFmpeg & Opencv原理10.iOS底层原理11.iOS App逆向12.iOS Swift13.本文没有提到的知识点14.明确自己的定位和路线推荐书籍 & 网站推荐苹果官网

推荐文章

热门文章

相关标签