主要内容

lassoglm

广义线性模型的套索或弹性网正则化

描述

例子

B= lassoglm (Xy回归惩罚,最大似然拟合系数的广义线性模型的预测数据X以及回应y,其中的值y假设具有正态概率分布。每一栏B对应一个特定的正则化系数λ.默认情况下,lassoglm的几何序列执行套索正则化λ值。

B= lassoglm (Xy分配利用概率分布对模型进行套索正则化拟合分配y

B= lassoglm (Xy分配名称,值用一个或多个名称-值对参数指定的附加选项拟合正则化广义线性回归。例如,“阿尔法”,0.5以弹性网为正则化方法,带参数α等于0.5。

例子

BFitInfo= lassoglm(___也返回结构FitInfo,其中包含关于模型拟合的信息,可以使用前面语法中的任何输入参数。

例子

全部折叠

构造具有冗余预测因子的数据集,并使用lassoglm

创建一个随机矩阵X有100个观测值和10个预测因子。创建正态分布响应y只使用四个预测器和少量噪声。

rng默认的X = randn(100,10);Weights = [0.6;0.5;0.7;0.4];y = X(:,[2 4 5 7])*weights + randn(100,1)*0.1;%小的附加噪音

执行套索正则化。

B = lassoglm(X,y);

求出第75项的系数向量λ价值B

B (:, 75)
ans =10×10 0.5431 0 0.3944 0.6173 0 0.3473 0 0 0

lassoglm标识并删除冗余的预测器。

利用泊松模型构造数据,并利用lassoglm

创建具有20个预测器的数据。仅使用三个预测因子和一个常数创建一个泊松响应变量。

rng默认的%用于重现性X = randn(100,20);Weights = [.4;.2;.3];mu = exp(X(:,[5 10 15])*weights + 1);Y = poissrnd(mu);

构建数据泊松回归模型的交叉验证套索正则化。

[B,FitInfo] = lassoglm(X,y,)“泊松”“简历”10);

检查交叉验证图,看看效果λ正则化参数。

lassoPlot (B FitInfo“plottype”“简历”);传奇(“显示”%显示图例

图中包含一个axes对象。标题为Cross-Validated Deviance of Lasso Fit的axes对象包含5个类型为errorbar、line的对象。这些对象表示带有错误条的偏差,LambdaMinDeviance, Lambda1SE。

绿色的圆圈和虚线定位λ最小的交叉验证错误。蓝色圆圈和虚线定位的是交叉验证误差最小加一个标准差的点。

求两个确定点对应的非零模型系数。

idxLambdaMinDeviance = FitInfo.IndexMinDeviance;mincoefs = find(B(:,idxLambdaMinDeviance))
mincoefs =7×13 5 6 10 11 15 16
idxLambda1SE = FitInfo.Index1SE;min1coefs = find(B(:,idxLambda1SE))
min1coefs =3×15 10 15

来自最小加1标准误差点的系数正是用来创建数据的系数。

预测学生在上次考试中是否得到B或以上lassoglm

加载examgrades数据集。将上次考试成绩转换为一个逻辑向量,其中1代表成绩达80分或以上及0表示等级低于80。

负载examgradesX =等级(:,1:4);Y = grades(:,5);yBinom = (y>=80);

将数据划分为训练集和测试集。

rng默认的为可重复性设置种子c = cvpartition(yBinom,“坚持”, 0.3);idxTrain = training(c,1);idxTest = ~idxTrain;XTrain = X(idxTrain,:);yTrain = yBinom(idxTrain);XTest = X(idxTest,:);yTest = yBinom(idxTest);

对训练数据进行3倍交叉验证的广义线性模型回归进行套索正则化。假设中的值y是二项分布的。选择对应的模型系数λ期望偏差最小。

[B,FitInfo] = lassoglm(XTrain,yTrain,)“二”“简历”3);idxLambdaMinDeviance = FitInfo.IndexMinDeviance;B0 = FitInfo.Intercept(idxLambdaMinDeviance);cof = [B0;B (:, idxLambdaMinDeviance)]
系数=5×1-21.1911 0.0235 0.0670 0.0693 0.0949

使用上一步中找到的模型系数预测测试数据的考试成绩。为二项式响应指定链接函数分对数的.将预测值转换为逻辑向量。

yhat = glmval(coef,XTest,分对数的);yhatBinom = (yhat>=0.5);

使用混淆矩阵确定预测的准确性。

c = confusichart (yTest,yhatBinom);

图包含一个类型为confusimatrixchart的对象。

该函数正确预测了31个考试成绩。然而,该函数错误地预测了一个学生得到B或以上4学生的成绩在B以下。

创建一个矩阵XNp-维法变量,其中N很大,而且p= 1000。创建响应向量y从模型中y = X* +噪声,在那里β是具有50%非零值的系数向量。

rng默认的%用于重现性N = 1e4;%样本数量P = 1e3;%特性数量X = randn(N,p);β = 1 + 3*rand(p,1);乘系数Activep = randperm(p,p/2);% 50%非零系数y = X(:,activep)*beta(activep) + randn(N,1)*0.1;%增加噪音

构造套索拟合而不使用协方差矩阵。为创建计时。

B = lassoglm(X,y,“正常”, UseCovariance = false);为可靠的计时数据预热套索。tic B = lassoglm(X,y,“正常”, UseCovariance = false);Timefalse = toc
Timefalse = 3.6794

利用协方差矩阵构造套索拟合。为创建计时。

B2 = lassoglm(X,y,“正常”, UseCovariance = true);为可靠的计时数据预热套索。tic B2 = lassoglm(X,y,“正常”, UseCovariance = true);Timetrue = toc
Timetrue = 0.8574

有协方差矩阵的拟合时间比没有协方差矩阵的拟合时间短。查看使用协方差矩阵得到的加速因子。

Speedup = timefalse/timetrue
加速= 4.2911

检查返回的系数B而且B2是相似的。

规范(B-B2) /规范(B)
Ans = 4.8056e-16

结果几乎是一样的。

输入参数

全部折叠

预测数据,指定为数值矩阵。每一行代表一个观察结果,每列代表一个预测变量。

数据类型:|

响应数据,指定为数值向量、逻辑向量、分类数组或两列数值矩阵。

  • 分配不是“二”y是长度的数字向量还是类别数组n,在那里n行数在吗X.响应y(我)对应于行X

  • 分配“二”y是以下之一:

    • 长度数字向量n,其中每个条目代表成功(1)或失败(0

    • 逻辑长度向量n,其中每个条目代表成功或失败

    • 长度的分类数组n,其中每个条目代表成功或失败

    • 两列数字矩阵,其中第一列包含每个观察的成功次数,第二列包含试验的总次数

数据类型:||逻辑|分类

响应数据的分布,指定为以下之一:

  • “正常”(默认)

  • “二”

  • “泊松”

  • “伽马”

  • 逆高斯分布的

lassoglm使用默认值链接功能对应于分配.方法指定另一个链接函数链接名称-值对参数。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:lassoglm (X, y,“泊松”,“阿尔法”,0.5)假定响应值为泊松分布,进行弹性网正则化。的“阿尔法”,0.5名称-值对参数设置用于弹性网优化的参数。

套索重量(l1)与脊(l2)优化,指定为逗号分隔的对,由“α”在区间内是一个正的标量(0,1).的值= 1表示套索回归,α接近0逼近脊回归,其他值表示弹性网优化。看到弹性网

例子:“阿尔法”,0.75

数据类型:|

协方差矩阵的大小(以兆字节为单位),指定为正标量或“最大”.的lassoglm函数可以使用协方差矩阵进行拟合UseCovariance参数是真正的“汽车”

如果UseCovariance真正的“汽车”而且CacheSize“最大”lassoglm可以尝试分配一个超过可用内存的协方差矩阵。在本例中,是MATLAB®发出错误。

例子:“CacheSize”、“最大”

数据类型:|字符|字符串

用于估计偏差的交叉验证规范,指定为逗号分隔的对,由“简历”和以下其中之一:

  • “resubstitution”- - - - - -lassoglm使用X而且y拟合模型,估计偏差,无需交叉验证。

  • 正标量整数K- - - - - -lassoglm使用K倍交叉验证。

  • cvpartition对象本量利- - - - - -lassoglm使用交叉验证方法表示为本量利.您不能使用“leaveout”分区与lassoglm

例子:“简历”,10

模型中非零系数的最大数目,指定为逗号分隔的对,由“DFmax”和一个正整数标量。lassoglm返回仅为λ满足此标准的值。

例子:“DFmax”,25岁

数据类型:|

正则化系数,用逗号分隔的对表示,由“λ”和一个非负值的向量。看到套索

  • 如果你不供应λ,然后lassoglm的最大值λ这给出了一个非空模型。在这种情况下,LambdaRatio给出序列的最小值与最大值之比,且NumLambda给出向量的长度。

  • 如果你提供λ,然后lassoglm忽略了LambdaRatio而且NumLambda

  • 如果标准化真正的,然后λ是否使用一组值来拟合模型与X数据标准化为均值为零,方差为1。

默认值是的几何序列NumLambda价值,只有最大的价值才能产生B0

数据类型:|

最小值与最大值之比λ值,当您不提供λ,指定为逗号分隔的对,由“LambdaRatio”一个正的标量。

如果你设置LambdaRatio= 0,则lassoglm生成一个默认序列λ值并将最小的值替换为0

例子:依照“LambdaRatio”,1

数据类型:|

均值之间的映射µ响应和线性预测器Xb,指定为逗号分隔的对,由“链接”和这个表中的一个值。

价值 描述
“comploglog”

日志(日志((1 -µ))) =Xb

“身份”,默认为分发版“正常”

µXb

“日志”,默认为分发版“泊松”

日志(µ) =Xb

分对数的,默认为分发版“二”

日志(µ/ (1 -µ)) =Xb

“重对数”

日志(日志(µ)) =Xb

“probit”

Φ1µ) =Xb,其中Φ为正态(高斯)累积分布函数

“互惠”,默认为分发版“伽马”

µ1Xb

p(一个数字),默认为分发逆高斯分布的(与p= 2

µpXb

窗体的单元格数组{fl fd fi},包含使用创建的三个函数句柄@,它们定义了链接(FL),该链接的导数(FD)和反向链接(FI).或者,带有字段的函数句柄结构链接包含FL,场导数包含FD,和田野包含FI

用户指定的链接函数(参见自定义链路功能

例子:“链接”、“概率单位”

数据类型:字符|字符串|||细胞

允许的最大迭代次数,指定为逗号分隔的对,由“麦克斯特”和一个正整数标量。

如果算法执行麦克斯特在达到收敛公差之前进行迭代RelTol,则函数停止迭代并返回警告消息。

时,函数可以返回多个警告NumLambda大于1

例子:“麦克斯特”,1 e3

数据类型:|

用于交叉验证的蒙特卡罗重复次数,指定为逗号分隔的对,由“MCReps”和一个正整数标量。

  • 如果简历“resubstitution”或者一个cvpartition类型的“resubstitution”,然后MCReps必须1

  • 如果简历是一个cvpartition类型的“坚持”,然后MCReps必须大于1

例子:“MCReps”,2

数据类型:|

的数量λlassoglm当你不供应时使用λ,指定为逗号分隔的对,由“NumLambda”和一个正整数标量。lassoglm可以返回小于NumLambda如果拟合的偏差降至零偏差(没有任何预测因素的拟合偏差)的阈值分数以下,则为拟合X).

例子:“NumLambda”,150年

数据类型:|

附加的预测变量,指定为逗号分隔的对,由“抵消”和一个具有相同行数的数字向量X.的lassoglm函数保持系数的值抵消固定在1.0

数据类型:|

选项并行交叉验证并指定随机流,指定为逗号分隔的对,由“选项”还有一个结构。此选项需要并行计算工具箱™。

创建选项结构statset.选项字段是:

  • UseParallel—设置为真正的并行计算并行计算默认为

  • UseSubstreams—设置为真正的并行计算以可重复的方式并行计算为了再现性,设置转换为允许子流的类型:“mlfg6331_64”“mrg32k3a”.默认为

  • ——一个RandStream对象或包含一个此类对象的单元格数组。如果不指定,然后lassoglm使用默认流。

例子:“选项”,statset (UseParallel,真的)

数据类型:结构体

预测变量的名称,按它们出现的顺序排列X,指定为逗号分隔的对,由“PredictorNames”以及字符向量的字符串数组或单元格数组。

例子:PredictorNames,{‘高’,‘重’,‘年龄’}

数据类型:字符串|细胞

坐标下降算法的收敛阈值[3],指定为逗号分隔的对,由“RelTol”一个正的标量。当系数向量的连续估计值不同时,算法终止l2Norm的相对量小于RelTol

例子:“RelTol”,2 e - 3

数据类型:|

标志,用于标准化预测器数据X在拟合模型之前,指定为逗号分隔的对,由“标准化”,要么真正的.如果标准化真正的,然后X数据被缩放到均值为0,方差为1。标准化影响正则化是应用于标准化标度还是原始标度上的系数。结果总是在原始数据尺度上呈现。

例子:“标准化”,假的

数据类型:逻辑

表示使用协方差矩阵进行拟合,具体为“汽车”或者一个逻辑标量。

  • “汽车”原因lassoglm当观察数大于问题变量数时,尝试使用协方差矩阵进行拟合,链接“身份”,分配“正常”.当内存不足时,这种尝试可能会失败。以查明是否lassoglm用协方差矩阵进行拟合,检验UseCovariance的字段FitInfo输出。

  • 真正的原因lassoglm使用协方差矩阵进行拟合,只要所需的大小不超过CacheSize.如果所需的协方差矩阵大小超过CacheSizelassoglm发出警告,并且不使用协方差矩阵进行拟合。

  • 原因lassoglm不使用协方差矩阵进行拟合。

使用协方差矩阵进行拟合可能比不使用协方差矩阵更快,特别是对于正态分布响应,但可能需要更多的内存。看到使用相关矩阵进行套索拟合.速度的增加会对数值稳定性产生负面影响。详情请参见坐标下降算法

例子:“UseCovariance”,真的

数据类型:逻辑|字符|字符串

观察权值,用逗号分隔的对表示“重量”一个非负的向量。权重长度n,在那里n行数是多少X.至少有两个值必须为正。

数据类型:|

输出参数

全部折叠

拟合系数,作为数值矩阵返回。B是一个p——- - - - - -l矩阵,p预测器(列)的数量是否在X,lλ值。您可以指定数量λ的值NumLambda名称-值对参数。

与截距项相对应的系数是FitInfo

数据类型:|

拟合广义线性模型的信息,返回为具有本表所述字段的结构。

FitInfo 描述
拦截 截距项β0对于每个线性模型,a1——- - - - - -l向量
λ Lambda参数按升序排列,a1——- - - - - -l向量
α 的价值α参数,标量
DF 非零系数的个数B的每一个值λ,一个1——- - - - - -l向量
异常

的各值对拟合模型的偏差λ,一个1——- - - - - -l向量

如果模型是交叉验证的,则异常表示应用于新数据的模型的估计预期偏差,通过交叉验证计算。否则,异常是应用于用于执行拟合的数据的拟合模型的偏差。

PredictorNames 的价值PredictorNames参数,存储为字符向量的单元格数组
UseCovariance 表示是否使用协方差矩阵进行拟合的逻辑值。如果计算并使用协方差,则该字段为真正的.否则,该字段为

如果你设置简历进行交叉验证的名称值对参数FitInfo结构包含这些附加字段。

FitInfo 描述
SE 的标准误差异常为每一个λ,交叉验证时计算,a1——- - - - - -l向量
LambdaMinDeviance λ通过交叉验证计算,期望偏差最小的值为标量
Lambda1SE 最大λ重视这样的东西异常是否在最小值的一个标准误差范围内,一个标量
IndexMinDeviance 指数λ值为LambdaMinDeviance,一个标量
Index1SE 指数λ值为Lambda1SE,一个标量

更多关于

全部折叠

链接功能

链接函数fμ)用均值映射一个分布μ到一个有数据的线性模型X系数矢量b使用公式

fμ) =Xb

你可以找到连杆函数的公式链接名称-值对参数描述。该表列出了通常用于每个发行版的链接函数。

分配家庭 缺省链路功能 其他典型Link功能
“正常” “身份”
“二” 分对数的 “comploglog”“重对数”“probit”
“泊松” “日志”
“伽马” “互惠”
逆高斯分布的 2

套索

的非负值λlassoglm解决问题

最小值 β 0 β 1 N 异常 β 0 β + λ j 1 p | β j |

  • 该方程中的函数Deviance是利用截距拟合模型对响应的偏差β0预测系数β.越轨的公式取决于分配提供给的参数lassoglm.最小化λ-惩罚偏差相当于最大化λ处罚loglikelihood。

  • N是观察数。

  • λ的值是否对应一个非负正则化参数λ

  • 的参数β0而且β是标量和长度向量吗p,分别。

作为λ的非零分量的个数增加β减少。

套索问题涉及到l1规范的β,与弹性网算法进行了对比。

弹性网

α严格介于0和1之间,且非负λ,弹力网解决了这个问题

最小值 β 0 β 1 N 异常 β 0 β + λ P α β

在哪里

P α β 1 α 2 β 2 2 + α β 1 j 1 p 1 α 2 β j 2 + α | β j |

弹力网与套索时一样α= 1。的其他值α,刑罚期限Pαβ)在l1规范的β平方l2规范的β.作为α收缩向0,弹性网接近回归。

算法

全部折叠

坐标下降算法

lassoglm符合许多价值观λ同时通过一个叫做坐标下降,以弗里德曼、蒂布希拉尼和哈斯蒂为基础[3].根据拟合是否使用协方差矩阵,该过程有两个主要代码路径。方法可以影响此选择UseCovariance名称-值参数。

lassoglm使用协方差矩阵进行拟合N数据点和D预测器,拟合有一个粗略的计算复杂度D * D.在没有协方差矩阵的情况下,计算复杂度大致为N * D.一般来说,使用协方差矩阵会更快N > d,默认为“汽车”设置UseCovarianceArgument做出了这个选择。使用协方差矩阵的原因lassoglm减去比其他方式更大的数字,这可能在数字上不太稳定。有关算法差异的详细信息,请参见[3].关于时间和精度差异的比较,请参见使用相关矩阵进行套索拟合

参考文献

[1] Tibshirani, R. <回归收缩和通过套索选择>。皇家统计学会杂志。B辑,1996年第1期,第58卷,第267-288页。

[2]邹,H.和T.哈斯蒂。"通过弹性网的正则化和变量选择"皇家统计学会杂志。B辑,2005年第2期,第67卷,第301-320页。

[3]弗里德曼,J., R.蒂布希拉尼,T.哈斯蒂。广义线性模型通过坐标下降的正则化路径。统计软件杂志。2010年第1期第33卷。https://www.jstatsoft.org/v33/i01

[4]哈斯蒂,T., R.蒂布希拉尼,J.弗里德曼。统计学习的要素。第二版。纽约:施普林格,2008。

[5]多布森。广义线性模型导论。第二版。纽约:查普曼和霍尔/CRC出版社,2002年。

[6] McCullagh, P.和J. A. Nelder。广义线性模型。第二版。纽约:查普曼和霍尔/CRC出版社,1989年。

[7]科莱特D。对二进制数据建模。第二版。纽约:查普曼和霍尔/CRC出版社,2003年。

扩展功能

版本历史

在R2012a中介绍