lassoglm
套索或弹性净正规化广义线性模型
语法
描述
例子
删除冗余预测使用套索正规化
构造一个数据集与冗余预测和识别这些预测使用lassoglm
。
创建一个随机矩阵X
100观察和预测。创建一个正态分布的回应y
使用只有四个预测因子和少量的噪声。
rng默认的10 X = randn (100);重量= (0.6;0.5;0.7;0.4);y = X(:[2 4 5 7]) *重量+ randn (100 1) * 0.1;%添加噪声小
执行套索正规化。
B = lassoglm (X, y);
寻找第75系数向量λ
价值B
。
B (:, 75)
ans =10×10 0.3473 0.5431 0.3944 - 0.6173 0 0 0 0
lassoglm
识别和消除了冗余的预测因子。
旨在套索正规化的广义线性模型
构建数据从一个泊松模型,并确定使用的重要预测因子lassoglm
。
创建数据与20个预测因子。创建一个泊松响应变量只使用三个预测加上一个常数。
rng默认的%的再现性20 X = randn (100);重量= (。4;2。3);μ= exp (X(:[5 10 15]) *重量+ 1);y = poissrnd(μ);
建立一个旨在套索正规化的泊松回归模型的数据。
[B, FitInfo] = lassoglm (X, y,“泊松”,“简历”10);
检查交叉验证情节的影响λ
正则化参数。
lassoPlot (B FitInfo“plottype”,“简历”);传奇(“显示”)%显示传奇
绿色圆圈和虚线定位λ
以最小交叉验证错误。蓝色的圆和虚线定位与最小交叉验证误差点+一个标准差。
找到相对应的非零系数模型确定的两个点。
idxLambdaMinDeviance = FitInfo.IndexMinDeviance;mincoefs =找到(B (:, idxLambdaMinDeviance))
mincoefs =7×13 5 6 10 11 15 16
idxLambda1SE = FitInfo.Index1SE;min1coefs =找到(B (:, idxLambda1SE))
min1coefs =3×15 10 15
minimum-plus-one标准错误点的系数正是这些系数用于创建数据。
使用套索正规化预测价值
预测学生在他们最后得到了一个B或以上考试通过lassoglm
。
加载examgrades
数据集。最后考试成绩转换为一个逻辑向量,1
代表一个年级80或以上0
代表一个年级80以下。
负载examgradesX =成绩(:,1:4);y =成绩(:5);yBinom = (y > = 80);
分区数据分为训练集和测试集。
rng默认的%设置再现性的种子c = cvpartition (yBinom“坚持”,0.3);idxTrain =培训(c, 1);idxTest = ~ idxTrain;XTrain = X (idxTrain:);yTrain = yBinom (idxTrain);XTest = X (idxTest:);欧美= yBinom (idxTest);
执行套索正规化的广义线性模型回归三倍交叉验证训练数据。假设的值y
二项分布。选择模型系数对应λ
用最小的预期偏差。
[B, FitInfo] = lassoglm (XTrain yTrain,“二”,“简历”3);idxLambdaMinDeviance = FitInfo.IndexMinDeviance;B0 = FitInfo.Intercept (idxLambdaMinDeviance);系数= [B0;B (:, idxLambdaMinDeviance)]
系数=5×1-21.1911 0.0235 0.0670 0.0693 0.0949
预测考试成绩使用模型系数的测试数据在前一步中找到。为二项响应使用指定链接功能分对数的
。预测的值转换为一个逻辑向量。
XTest yhat = glmval(系数,分对数的);yhatBinom = (yhat > = 0.5);
确定使用混淆矩阵预测的准确性。
c = confusionchart(欧美,yhatBinom);
函数正确预测31日考试成绩。然而,函数不正确预测,1学生收到B或以上4
学生获得年级低于B。
使用相关矩阵进行拟合lassoglm
创建一个矩阵X
的N
p
维正态变量,在那里N
又大又p
= 1000。创建一个响应向量y
从模型中y = X *β+噪音
,在那里β
是一个向量的系数非零值的50%。
rng默认的%的再现性N = 1 e4;%的样本数量p = 1 e3;%的数量特征X = randn(氮、磷);β= 1 + 3 *兰德(p, 1);%乘法系数activep = randperm (p, p / 2);% 50%非零系数y = X (:, activep) *β(activep) + randn (N - 1) * 0.1;%添加噪声
构建套索适合不使用协方差矩阵。创建的时间。
B = lassoglm (X, y,“正常”,UseCovariance = false);为可靠的计时数据%热身套索抽搐B = lassoglm (X, y,“正常”,UseCovariance = false);timefalse = toc
timefalse = 2.9323
构建套索适合使用协方差矩阵。创建的时间。
B2 = lassoglm (X, y,“正常”,UseCovariance = true);为可靠的计时数据%热身套索抽搐B2 = lassoglm (X, y,“正常”,UseCovariance = true);timetrue = toc
timetrue = 0.7596
协方差矩阵的装配时间小于时间没有它。视图的加速因素使用协方差矩阵的结果。
加速= timefalse / timetrue
加速= 3.8603
检查返回的系数B
和B2
是相似的。
规范(B-B2) /规范(B)
ans = 3.6556 e15汽油
结果是几乎相同的。
输入参数
X
- - - - - -预测数据
数字矩阵
预测数据,指定为一个数字矩阵。每一行代表一个观察,每一列代表一个预测变量。
数据类型:单
|双
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:lassoglm (X, y,“泊松”,“阿尔法”,0.5)
执行弹性净正规化泊松分布假设的响应值。的“阿尔法”,0.5
名称-值对参数设置中使用的参数弹性网优化。
α
- - - - - -重量的套索和脊优化
1
(默认)|积极的标量
重量的套索(l1)与脊(l2)优化,指定为逗号分隔组成的“α”
和积极的标量值的区间(0,1)
。的值α= 1
代表套索回归,α
接近0
岭回归方法,其他值代表弹性网优化。看到弹性网。
例子:“阿尔法”,0.75
数据类型:单
|双
CacheSize
- - - - - -协方差矩阵的大小以兆字节为单位
1000年
(默认)|积极的标量|“最大”
协方差矩阵的大小以兆字节为单位,指定为一个积极的标量或“最大”
。的lassoglm
函数可以用协方差矩阵拟合的时候UseCovariance
参数是真正的
或“汽车”
。
如果UseCovariance
是真正的
或“汽车”
和CacheSize
是“最大”
,lassoglm
可以尝试分配一个超过可用内存的协方差矩阵。在这种情况下,MATLAB®一个错误的问题。
例子:“CacheSize”、“最大”
数据类型:双
|字符
|字符串
简历
- - - - - -交叉验证规范估计偏差
“resubstitution”
(默认)|正整数标量|cvpartition
对象
交叉验证规范评估偏差,指定为逗号分隔组成的“简历”
和下列之一:
积极的标量整数
K
- - - - - -lassoglm
使用K
倍交叉验证。cvpartition
对象本量利
- - - - - -lassoglm
使用交叉验证方法表达本量利
。你不能使用“leaveout”
分区与lassoglm
。
例子:“简历”,10
DFmax
- - - - - -最大数量的非零系数
正
(默认)|正整数标量
LambdaRatio
- - - - - -最小的比最大λ
值
1的军医
(默认)|积极的标量
最小的最大比例λ
值时不供应λ
,指定为逗号分隔两人组成的“LambdaRatio”
和积极的标量。
如果你设置LambdaRatio
= 0,那么lassoglm
生成一个默认的序列λ
价值观和替换最小的一个0
。
例子:依照“LambdaRatio”, 1
数据类型:单
|双
链接
- - - - - -意味着响应和线性预测之间的映射
“comploglog”
|“身份”
|“日志”
|分对数的
|“重对数”
|……
之间的映射的意思µ响应和线性预测Xb,指定为逗号分隔两人组成的“链接”
在这个表的一个值。
价值 | 描述 |
---|---|
“comploglog” |
日志(日志((1 -µ)))=Xb |
|
µ=Xb |
|
日志(µ)=Xb |
|
日志(µ/ (1 -µ))=Xb |
|
日志(日志(µ))=Xb |
“probit” |
Φ1(µ)=Xb,Φ正常累积分布函数(高斯) |
“互惠” ,默认的分布“伽马” |
µ1=Xb |
|
µp=Xb |
单元阵列的形式 |
指定的函数(见链接自定义链接功能) |
例子:“链接”、“概率单位”
数据类型:字符
|字符串
|单
|双
|细胞
MCReps
- - - - - -数量的蒙特卡洛交叉验证的重复
1
(默认)|正整数标量
蒙特卡罗重复交叉验证的数量,指定为逗号分隔组成的“MCReps”
和一个正整数标量。
如果
简历
是“resubstitution”
或者一个cvpartition
类型的“resubstitution”
,然后MCReps
必须1
。如果
简历
是一个cvpartition
类型的“坚持”
,然后MCReps
必须大于1
。
例子:“MCReps”, 2
数据类型:单
|双
抵消
- - - - - -额外的预测变量
数值向量
额外的预测变量,指定为逗号分隔组成的“抵消”
和一个数字向量具有相同的行数X
。的lassoglm
函数的系数值抵消
固定在1.0
。
数据类型:单
|双
选项
- - - - - -选择旨在并行和指定随机流
结构
选择旨在并指定随机并行流,指定为逗号分隔组成的“选项”
和结构。并行计算需要并行计算工具箱™。
创建选项
结构statset
。选择字段:
UseParallel
——设置为真正的
并行计算。默认值是假
。UseSubstreams
——设置为真正的
以可再生的方式并行计算。再现性,集流
一种允许substreams:“mlfg6331_64”
或“mrg32k3a”
。默认值是假
。流
——一个RandStream
一个这样的对象的对象或单元阵列组成。如果你不指定流
,然后lassoglm
使用默认的流。
例子:“选项”,statset (UseParallel,真的)
数据类型:结构体
PredictorNames
- - - - - -预测变量的名字
{}
(默认)|字符串数组|单元阵列的特征向量
预测变量的名字,在它们出现的顺序X
,指定为逗号分隔两人组成的“PredictorNames”
和一个字符串数组或单元阵列的特征向量。
例子:PredictorNames,{‘高’,‘重’,‘年龄’}
数据类型:字符串
|细胞
RelTol
- - - - - -协调融合阈值下降算法
1的军医
(默认)|积极的标量
收敛阈值坐标下降算法[3],指定为逗号分隔两人组成的“RelTol”
和积极的标量。算法终止时连续的估计系数向量的不同l2规范的相对数量不足RelTol
。
例子:“RelTol”, 2 e - 3
数据类型:单
|双
标准化
- - - - - -为规范之前预测数据拟合模型
真正的
(默认)|假
为规范预测数据X
在拟合模型之前,指定为逗号分隔组成的“标准化”
,要么真正的
或假
。如果标准化
是真正的
,那么X
数据是按比例缩小的零均值和方差的一个。标准化
影响是否应用正则化系数标准化规模或原来的规模。结果总是在原始数据规模。
例子:“标准化”,假的
数据类型:逻辑
UseCovariance
- - - - - -表明使用协方差矩阵拟合
“汽车”
(默认)|逻辑标量
指定的指示使用协方差矩阵拟合“汽车”
或一个逻辑标量。
可以使用协方差矩阵拟合速度比不使用,尤其是对正态分布的响应,但可能需要更多的内存。看到对拟合lassoglm使用相关矩阵。速度增加数值稳定性有负面的影响。有关详细信息,请参见坐标下降算法。
例子:“UseCovariance”,真的
数据类型:逻辑
|字符
|字符串
权重
- - - - - -观察权重
1 / n *的(n, 1)
(默认)|负的向量
观察体重、指定为逗号分隔组成的“重量”
和一个负的向量。权重
长度n,在那里n的行数X
。至少两个值必须是积极的。
数据类型:单
|双
输出参数
FitInfo
——适合信息的模型
结构
合适的广义线性模型的信息,作为一个结构返回这个表中描述的领域。
场FitInfo |
描述 |
---|---|
拦截 |
截距项β0对于每一个线性模型,1 ——- - - - - -l向量 |
λ |
λ参数按升序1 ——- - - - - -l向量 |
α |
的价值α 参数,一个标量 |
DF |
非零系数的数量B 为每个值λ ,一个1 ——- - - - - -l向量 |
异常 |
拟合模型为每个值的偏差 如果模型旨在,那么的值 |
PredictorNames |
的价值PredictorNames 参数,存储单元阵列的特征向量 |
UseCovariance |
逻辑值指示协方差矩阵是否用于拟合。如果协方差计算和使用,这一领域真正的 。否则,这个字段假 。 |
如果你设置简历
名称-值对论证旨在,FitInfo
结构包含这些额外的字段。
场FitInfo |
描述 |
---|---|
SE |
的标准误差异常 为每一个λ ,在交叉验证,计算1 ——- - - - - -l向量 |
LambdaMinDeviance |
λ 价值与最低预期偏差,通过交叉验证计算,一个标量 |
Lambda1SE |
最大λ 值,这样异常 是在一个标准误差的最小值,一个标量吗 |
IndexMinDeviance |
指数λ 与价值LambdaMinDeviance ,一个标量 |
Index1SE |
指数λ 与价值Lambda1SE ,一个标量 |
更多关于
链接功能
一个链接功能f(μ)地图一个分布的意思μ线性模型与数据X和系数向量b使用这个公式
f(μ)=Xb。
你可以找到公式链接的功能链接
名称-值对参数描述。此表列出了链接的函数通常用于每个分布。
分配家庭 | 默认链接功能 | 其他典型的链接功能 |
---|---|---|
“正常” |
“身份” |
|
“二” |
分对数的 |
“comploglog” ,“重对数” ,“probit” |
“泊松” |
“日志” |
|
“伽马” |
“互惠” |
|
逆高斯分布的 |
2 |
套索
非负价值λ,lassoglm
解决问题
这个方程的功能异常是模型的异常适合使用拦截的反应β0和预测系数β。异常的公式取决于
分配
参数你供应lassoglm
。最小化λ处罚异常相当于最大化λ处罚loglikelihood。N是观测的数量。
λ是一个非负正则化参数对应于一个值的
λ
。的参数β0和β是一个标量和向量的长度p,分别。
作为λ增加,非零组件的数量β减少。
套索的问题涉及到l1规范的β,如与弹性网算法。
弹性网
算法
坐标下降算法
lassoglm
适合许多值λ同时通过一个有效的过程坐标下降基于弗里德曼,Tibshirani, Hastie[3]。有两个主要程序代码路径取决于配件使用协方差矩阵。你可以影响这个选择UseCovariance
名称-值参数。
当lassoglm
用协方差矩阵N
数据点,D
预测,配件有一个粗略的计算复杂度D * D
。没有协方差矩阵,计算复杂度N * D
。所以,通常情况下,使用时可以更快的协方差矩阵N > D
,默认的“汽车”
的设置UseCovariance
参数使得这种选择。用协方差矩阵的原因lassoglm
减去大量比否则,可减少数值稳定。算法的细节差异,请参阅[3]。为一个时间和精度的比较差异,明白了对拟合lassoglm使用相关矩阵。
引用
[1]Tibshirani, r .“回归收缩和通过套索选择。”英国皇家统计学会杂志》上。系列B卷。58岁的1号,1996年,页267 - 288。
[2]邹,H。,T. Hastie. “Regularization and Variable Selection via the Elastic Net.”英国皇家统计学会杂志》上。系列B卷。67年,2号,2005年,页301 - 320。
[3]弗里德曼,J。,R. Tibshirani, and T. Hastie. “Regularization Paths for Generalized Linear Models via Coordinate Descent.”统计软件》杂志上。33卷,1号,2010年。https://www.jstatsoft.org/v33/i01
[4]Hastie, T。,R. Tibshirani, and J. Friedman.统计学习的元素。第二版。纽约:施普林格,2008年。
[5]多布森,a·J。介绍了广义线性模型。第二版。纽约:查普曼&大厅/ CRC出版社,2002年。
[6]McCullagh, P。,J. A. Nelder.广义线性模型。第二版。纽约:查普曼&大厅/ CRC出版社,1989年。
[7]Collett D。造型二进制数据。第二版。纽约:查普曼&大厅/ CRC出版社,2003年。
扩展功能
自动并行支持金宝app
加速代码通过自动运行并行计算使用并行计算工具箱™。
并行运行,指定选项
名称-值参数在调用这个函数,设置UseParallel
选择结构领域真正的
使用statset
:
“选项”,statset (“UseParallel”,真的)
关于并行计算的更多信息,请参阅MATLAB函数自动并行支持运行金宝app(并行计算工具箱)。
版本历史
介绍了R2012a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。