广义线性模型的拉索或弹性网正则化
构建具有冗余预测的数据集,并通过使用确定那些预测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
-预测数据预测数据,指定为数值矩阵。每一行表示一个观察值,每一列表示一个预测变量。
数据类型:单
|双
指定可选的用逗号分隔的对名称,值
参数。名称
是参数的名称和价值
是对应的值。名称
必须出现在引号内。可以按任意顺序指定多个名称和值对参数Name1, Value1,…,的家
。
lassoglm (X, y,“泊松”,“阿尔法”,0.5)
进行弹性净正则假设响应值是泊松分布的。该“阿尔法”,0.5
名称 - 值对参数设置在弹性网优化中使用的参数。
“α”
-重量的索与岭优化1
(默认)|正标量的套索重量(大号1)与岭岭(大号2)优化,指定为逗号分隔的一对组成的“α”
区间内的一个正的标量值(0,1)
。的值阿尔法= 1
代表套索回归,Α
相近0
接近岭回归,和其他值表示弹性网络优化。看到弹力网。
例子:“阿尔法”,0.75
数据类型:单
|双
'简历'
-估计偏差的交叉验证规范“resubstitution”
(默认)|正整数标量|cvpartition
宾语用于估计偏差的交叉验证规范,指定为逗号分隔的对'简历'
和以下情况之一:
积极的标量整数ķ
-lassoglm
使用ķ
倍交叉验证。
cvpartition
宾语CVP
-lassoglm
使用交叉验证方法表达在CVP
。你不能使用“leaveout”
分区与lassoglm
。
例子:“简历”,10
'DFmax'
-非零系数的最大数目正
(默认)|正整数标量'LambdaRatio'
-最小的比例最大LAMBDA
值1的军医
(默认)|正标量最小和最大的比率LAMBDA
不提供时的值LAMBDA
,指定为逗号分隔的对,由'LambdaRatio'
一个正的标量。
如果你设置LambdaRatio
= 0,则lassoglm
生成的默认序列LAMBDA
值并将最小的值替换为0
。
例子:'LambdaRatio',1E-2
数据类型:单
|双
“链接”
-平均响应和线性预测之间的映射'comploglog'
|“身份”
|“日志”
|'Logit模型'
|“重对数”
|...平均值之间的映射μ响应和所述线性预测的XB,指定为逗号分隔的对,由“链接”
并在此表中的值之一。
价值 | 描述 |
---|---|
'comploglog' |
日志(-log((1 -μ)))=XB |
|
μ=XB |
|
日志(μ)=XB |
|
日志(μ/ (1 -μ))=XB |
|
日志(日志(μ))=XB |
“概率” |
Φ-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
——设置为真正的
计算平行以可再现的方式。对于重复性,集流
一个类型允许子流:'mlfg6331_64'
或'mrg32k3a'
。默认值是假
。
流
——一个RandStream
对象或由一个这样的对象的单元阵列。如果没有指定流
, 然后lassoglm
使用默认流。
例子:“选项”,statset (UseParallel,真的)
数据类型:结构
'PredictorNames'
-预测变量名称{}
(默认)|字符串数组|字符向量的单元阵列它们出现在预测变量的名称,顺序X
,指定为逗号分隔的对,由'PredictorNames'
以及字符向量的字符串数组或单元数组。
例子:'PredictorNames',{ '身高', '体重', '年龄'}
数据类型:串
|细胞
'RELTOL'
-收敛判定为坐标下降算法1的军医
(默认)|正标量为坐标下降算法收敛门限[3],指定为逗号分隔的对,由'RELTOL'
一个正的标量。当系数向量的连续估计值在大号2由相对量小于标准RelTol
。
例子:“RelTol”, 2 e - 3
数据类型:单
|双
“标准化”
-旗地为拟合模型标准化之前的预测数据真正的
(默认)|假
标记用于标准化预测数据X
拟合模型之前,指定为逗号分隔的一对组成的“标准化”
,要么真正的
或假
。如果标准化
是真正的
,那么X
数据按比例调整为均值为0,方差为1。标准化
影响正则化是否被施加到系数的标准化规模或原始尺度。结果一定会出现在原始数据的规模。
例子:“标准化”,假的
数据类型:合乎逻辑
“权重”
-观察权重的1 / n *酮(N,1)
(默认)|非负矢量观察权值,由逗号分隔的对组成“权重”
一个非负向量。权重
长度ñ,在那里ñ的行数X
。至少有两个值必须为正。
数据类型:单
|双
FitInfo
-模型拟合信息广义线性模型的拟合信息,返回与该表中描述的字段的结构。
在FitInfo | 描述 |
---|---|
拦截 |
截距项β0对于每个线性模型,一个1 ——- - - - - -大号向量 |
LAMBDA |
按升序LAMBDA参数,一1 ——- - - - - -大号向量 |
Α |
价值Α 参数,一个标量 |
DF |
中的非零系数的数目乙 对于每一个值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和预测系数β。异常的公式取决于颇
您提供的参数lassoglm
。最小化λ-惩罚偏差等于最大限度地λ-penalized数似然。
ñ为观测值个数。
λ非负正则化参数是否对应于的一个值LAMBDA
。
参数β0和β是一个标量和长度的矢量p, 分别。
如λ增加,非零分量的数目β降低。
套索问题涉及到大号1定额β作为对比与弹性网络算法。
通过拉索的回归、收缩和选择。皇家统计学会。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年。
并行运行,设置'UseParallel'
选项真正的
。
设置'UseParallel'
字段的选项结构到真正的
运用statset
并指定“选项”
调用此函数时的名称-值对参数。
例如:“选项”,statset (UseParallel,真的)
欲了解更多信息,请参阅“选项”
名称 - 值对的参数。
有关并行计算更一般的信息,请参见运行MATLAB函数自动并行支持金宝app(并行计算工具箱)。
您单击对应于该MATLAB命令的链接:
在MATLAB命令窗口中输入它运行的命令。Web浏览器不支持MATLAB的命令。金宝app
你也可以从以下列表中选择一个网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。