lassoglm

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

描述

= lassoglm(Xÿ回归惩罚,最大似然拟合系数的广义线性模型的预测数据X和响应ÿ,其中在值ÿ假设具有正态概率分布。每一列的中的某个特定正则化系数LAMBDA。默认,lassoglm使用的几何序列进行正则化套索LAMBDA值。

= lassoglm(Xÿ执行套索正规化使用的概率分布,以适应机型对于ÿ

= lassoglm(Xÿ名称,值使用由一个或多个名值对参数指定的附加选项适合正则化广义线性回归。例如,“阿尔法”,0.5设置弹性网作为正则化方法,用参数Α等于0.5。

[FitInfo)= lassoglm (___也返回结构FitInfo,其中包含有关模型的拟合信息,使用任意的在前面的语法输入参数。

例子

全部折叠

构建具有冗余预测的数据集,并通过使用确定那些预测lassoglm

创建一个随机矩阵X有100个观察值和10个预测因子。创建正态分布响应ÿ仅使用预测器4和噪声的量小。

rng默认X = randn(100,10);权重= [0.6; 0.5; 0.7; 0.4]。Y = X(:,[2 4 5 7])*权重+ randn(100,1)* 0.1;%增加少量噪音

执行套索正规化。

B = lassoglm(X,Y);

求第75项的系数向量LAMBDA价值

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

lassoglm识别和删除冗余预测因子。

从泊松模型中构造数据,并通过使用来识别重要的预测因子lassoglm

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

rng默认%的再现性20 X = randn (100);重量= (。4;2。3);mu = exp(X(:,[5 10 15])*权值+ 1);y = poissrnd(μ);

建立一个交叉验证的lasso正则化的泊松回归模型的数据。

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

检查交叉验证图以查看LAMBDA调整参数。

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

绿色的圆圈和虚线位于LAMBDA以最小的交叉验证误差。的蓝色圆圈和虚线定位具有最小交叉验证误差加上一个标准偏差的点。

找出对应于这两个识别点的非零模型系数。

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

最小值加上一个标准误差点的系数就是用来创建数据的系数。

预测学生是否通过使用他们的最后考试得了一个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,:);yTest = yBinom(idxTest);

训练数据与执行针对广义线性模型回归套索正规化3倍交叉验证。假定值ÿ是二项分布。选择相应的模型系数LAMBDA最小期望偏差。

[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

使用前面步骤中找到的模型系数来预测考试数据的考试成绩。使用以下命令指定二项式响应的链接函数'Logit模型'。将预测值转换为逻辑向量。

XTest yhat = glmval(系数,'Logit模型');yhatBinom =(yhat> = 0.5);

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

c = confusionchart(欧美,yhatBinom);

函数正确预测31个考试成绩。然而,函数错误地预测,1名学生接收或以上和乙4学生接受B.下面一个档次

输入参数

全部折叠

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

数据类型:|

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

  • 不是“二”ÿ长度是数值向量还是分类数组ñ,在那里ñ是行的数量X。响应y(我)对应于行一世X

  • “二”ÿ是下列各项之一:

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

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

    • 长度的分类阵列ñ,其中每个条目代表成功或失败

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

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

响应数据的分布,具体如下:

  • '正常'

  • “二”

  • “泊松

  • “伽马”

  • 逆高斯分布的

lassoglm使用默认链接功能对应。使用指定另一个链接功能链接名称 - 值对的参数。

名称-值对的观点

指定可选的用逗号分隔的对名称,值参数。名称是参数的名称和价值是对应的值。名称必须出现在引号内。可以按任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

的套索重量(大号1)与岭岭(大号2)优化,指定为逗号分隔的一对组成的“α”区间内的一个正的标量值(0,1)。的值阿尔法= 1代表套索回归,Α相近0接近岭回归,和其他值表示弹性网络优化。看到弹力网

例子:“阿尔法”,0.75

数据类型:|

用于估计偏差的交叉验证规范,指定为逗号分隔的对'简历'和以下情况之一:

  • “resubstitution”-lassoglm使用Xÿ以适应模型并估计偏差不交叉验证。

  • 积极的标量整数ķ-lassoglm使用ķ倍交叉验证。

  • cvpartition宾语CVP-lassoglm使用交叉验证方法表达在CVP。你不能使用“leaveout”分区与lassoglm

例子:“简历”,10

模型中非零系数的最大数目,指定为由'DFmax'和一个正整数标量。lassoglm返回结果只为LAMBDA满足这个条件的值。

例子:“DFmax”, 25岁

数据类型:|

正规化系数,指定为逗号分隔的一对组成的“拉姆达”和一个非负的向量。看到套索

  • 如果你不提供LAMBDA, 然后lassoglm估计值最大LAMBDA这就得到了一个非空模型。在这种情况下,LambdaRatio给出的最小的到序列中的最大值之比,并NumLambda给人的矢量的长度。

  • 如果提供LAMBDA, 然后lassoglm忽略LambdaRatioNumLambda

  • 如果标准化真正的, 然后LAMBDA用于将模型与X数据标准化,均值为零,方差为一。

默认值是的几何序列NumLambda值,只能够产生最大的价值=0

数据类型:|

最小和最大的比率LAMBDA不提供时的值LAMBDA,指定为逗号分隔的对,由'LambdaRatio'一个正的标量。

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

例子:'LambdaRatio',1E-2

数据类型:|

平均值之间的映射μ响应和所述线性预测的XB,指定为逗号分隔的对,由“链接”并在此表中的值之一。

价值 描述
'comploglog'

日志(-log((1 -μ)))=XB

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

μ=XB

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

日志(μ)=XB

'Logit模型',默认为分发“二”

日志(μ/ (1 -μ))=XB

“重对数”

日志(日志(μ))=XB

“概率”

Φ-1μ)=XB,其中Φ是正态(高斯)累积分布函数

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

μ-1=XB

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

μp=XB

表单的单元格数组{FL FD FI}含有三个功能手柄使用创建的@,其中定义了链接(FL)、连杆的导数(FD),以及逆链路(FI)。或者,函数的结构处理字段链接FL,这个领域导数FD,以及字段FI

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

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

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

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

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

该函数可以返回一个以上的警告时,NumLambda大于1

例子:'MAXITER',1E3

数据类型:|

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

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

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

例子:“MCReps”, 2

数据类型:|

LAMBDAlassoglm不供应时使用LAMBDA,指定为逗号分隔的对,由'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'一个正的标量。当系数向量的连续估计值在大号2由相对量小于标准RelTol

例子:“RelTol”, 2 e - 3

数据类型:|

标记用于标准化预测数据X拟合模型之前,指定为逗号分隔的一对组成的“标准化”,要么真正的。如果标准化真正的,那么X数据按比例调整为均值为0,方差为1。标准化影响正则化是否被施加到系数的标准化规模或原始尺度。结果一定会出现在原始数据的规模。

例子:“标准化”,假的

数据类型:合乎逻辑

观察权值,由逗号分隔的对组成“权重”一个非负向量。权重长度ñ,在那里ñ的行数X。至少有两个值必须为正。

数据类型:|

输出参数

全部折叠

拟合系数,返回一个数字矩阵。p——- - - - - -大号矩阵,p是否有谓词(列)的数目X,大号LAMBDA值。您可以指定数量LAMBDA使用值NumLambda名称 - 值对的参数。

与截距项对应的系数是in中的一个域FitInfo

数据类型:|

广义线性模型的拟合信息,返回与该表中描述的字段的结构。

在FitInfo 描述
拦截 截距项β0对于每个线性模型,一个1——- - - - - -大号向量
LAMBDA 按升序LAMBDA参数,一1——- - - - - -大号向量
Α 价值Α参数,一个标量
DF 中的非零系数的数目对于每一个值LAMBDA,一个1——- - - - - -大号向量
异常

拟合模型的偏差为每个值LAMBDA,一个1——- - - - - -大号向量

如果对模型进行交叉验证,则为的值异常表示施加到新的数据,如通过交叉验证来计算所述模型的所估计的期望偏差。除此以外,异常是施加到用于执行拟合该数据的拟合模型的偏差。

PredictorNames 价值PredictorNames参数,存储为字符向量的单元阵列

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

在FitInfo 描述
SE 标准误差异常每个LAMBDA,在交叉验证过程中计算得到1——- - - - - -大号向量
LambdaMinDeviance LAMBDA值与最小期望偏差,由交叉验证计算,为标量
Lambda1SE 最大LAMBDA值,这样异常在最小值的一个标准误差之内,是一个标量吗
IndexMinDeviance 指数LAMBDA与价值LambdaMinDeviance,一个标量
Index1SE 指数LAMBDA与价值Lambda1SE,一个标量

更多关于

全部折叠

链接功能

链接功能Fμ)映射均值分布μ用数据建立一个线性模型X和系数向量b使用下式

Fμ)=Xb

的链接函数的公式链接名称-值对参数描述。此表列出了通常用于每个发行版的链接函数。

分配家庭 默认链接功能 其他典型的链接功能
'正常' “身份”
“二” 'Logit模型' 'comploglog'“重对数”“概率”
“泊松 “日志”
“伽马” “互惠”
逆高斯分布的 -2

套索

对于一个非负值λlassoglm解决问题

β 0 β 1 ñ 异常 β 0 β + λ Ĵ = 1 p | β Ĵ |

  • 在这个等式的函数越轨是模型拟合到响应的使用截距的偏差β0和预测系数β。异常的公式取决于您提供的参数lassoglm。最小化λ-惩罚偏差等于最大限度地λ-penalized数似然。

  • ñ为观测值个数。

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

  • 参数β0β是一个标量和长度的矢量p, 分别。

λ增加,非零分量的数目β降低。

套索问题涉及到大号1定额β作为对比与弹性网络算法。

弹力网

对于α严格0和1,与非负之间λ,弹性网解决了这个问题

β 0 β 1 ñ 异常 β 0 β + λ P α β

哪里

P α β = 1 α 2 β 2 2 + α β 1 = Ĵ = 1 p 1 α 2 β Ĵ 2 + α | β Ĵ |

弹性网是相同的套索时α= 1。对于其他值α,惩罚项Pαβ之间)内插大号1定额β和方大号2定额β。如α向0收缩,弹性网的方法回归。

参考文献

通过拉索的回归、收缩和选择。皇家统计学会。B系列,卷。58,第1号,1996,第267-288。

[2]邹,H.,和T.哈斯蒂。“通过弹性网络进行正则化和变量选择。”皇家统计学会。B系列,卷。67,第2号,2005年,第301-320。

[3]弗里德曼,J.,R. Tibshirani,和T.黑斯蒂。“转正路径,通过广义线性模型坐标下降。”统计软件杂志。第33卷,第1期,2010年。https://www.jstatsoft.org/v33/i01

[4] Hastie, T., R. Tibshirani和J. Friedman。统计学习的要素。第二版。纽约:施普林格,2008年。

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

[6]与McCullagh,P.,和J. A.内尔德。广义线性模型。第二版。纽约:Chapman & Hall/CRC出版社,1989年。

[7]科利特,D.造型二进制数据。第二版。纽约:查普曼和霍尔/ CRC出版社,2003年。

扩展功能

介绍了R2012a