lassoblm
套索正则化贝叶斯线性回归模型
描述
的贝叶斯线性回归模型对象lassoblm
指定回归系数和扰动方差的联合先验分布(β,σ2)以执行贝叶斯套索回归[1].为j= 1,…,NumPredictors
的条件先验分布βj|σ2拉普拉斯(双指数)分布是否具有均值为0和刻度σ2/λ,在那里λ是套索正则化或收缩参数。的先验分布σ2逆是有形状的吗一个和规模B.
数据的可能性是 在哪里ϕ(yt;xtβ,σ2)为点的高斯概率密度yt与的意思xtβ和方差σ2.由此产生的后验分布是不可分析处理的。关于后验分布的详细信息,请参见易于分析处理的后验.
一般来说,当您创建一个贝叶斯线性回归模型对象时,它只指定了线性回归模型的联合先验分布和特征。也就是说,模型对象是用于进一步使用的模板。具体来说,为了将数据合并到模型中进行后验分布分析和特征选择,将模型对象和数据传递给适当的对象目标函数.
创建
属性
当您使用名称-值对参数语法创建模型对象时,或者在您使用点表示法创建模型对象之后,您可以设置可写的属性值。例如,将除截距外的所有系数的收缩设置为0.5
,输入
PriorMdl。λ=0.5;
NumPredictors
- - - - - -预测变量数量
非负整数
贝叶斯多元线性回归模型中预测变量的数量,指定为非负整数。
NumPredictors
必须与您在模型估计或模拟期间指定的预测器数据中的列数相同。
当指定NumPredictors
,排除值的任何截距项。
在创建模型之后,如果您更改了值NumPredictors
使用点表示法,然后这些参数恢复为默认值:
变量名称(
VarNames
)收缩参数(
λ
)
数据类型:双
拦截
- - - - - -包含回归模型截距的标志
真正的
(默认)|假
标记,用于包含回归模型截距,该截距在本表中指定为值。
价值 | 描述 |
---|---|
假 |
从回归模型中排除一个截距。因此,β是一个p -维向量,其中p 的值NumPredictors . |
真正的 |
在回归模型中包含一个截距。因此,β是a (p + 1)-维向量。此规范导致T-by-1的向量作为预估和模拟时预估的预测器数据。 |
如果在预测器数据中包含一列的截距项,则设置拦截
来假
.
例子:“拦截”,假的
数据类型:逻辑
VarNames
- - - - - -预测变量名称
字符串向量|特征向量的单元向量
用于显示的预测器变量名,指定为字符串向量或字符向量的单元格向量。VarNames
必须包含NumPredictors
元素。VarNames (
变量名在列中吗j
)j
在估计、模拟或预测期间指定的预测器数据集的。
默认为β{β(1),(2),…,β(
,在那里p
)}p
的值NumPredictors
.
例子:“VarNames”,(“失业率会”;“CPI”)
数据类型:字符串
|细胞
|字符
λ
- - - - - -套索正则化参数
1
(默认)|正数值标量|正数值向量
所有回归系数的套索正则化参数,指定为正数值标量或(拦截
+NumPredictors
)-乘1的正数值向量。较大的值λ
使相应的系数缩小到接近零。
假设X
是一个T
——- - - - - -NumPredictors
预测器数据矩阵,在估计、模拟或预测过程中指定。
如果
λ
是一个向量拦截
是真正的
,λ(1)
是截距的收缩,λ(2)
收缩是第一个预测因子的系数吗X (: 1)
,λ(3)
收缩是第二个预测器的系数吗X (:, 2)
、……Lambda(NumPredictors + 1)
收缩是最后一个预测器的系数吗X (:, NumPredictors)
.如果
λ
是一个向量拦截
是假
,λ(1)
收缩是第一个预测因子的系数吗X (: 1)
、……λ(NumPredictors)
收缩是最后一个预测器的系数吗X (:, NumPredictors)
.如果你提供标量
年代
为λ
,则预测因子的所有系数X
收缩年代
.如果
拦截
是真正的
时,截距收缩为0.01
,lassoblm
商店(0.01;* (NumPredictors, 1)]
在λ
.否则,
lassoblm
商店*的(NumPredictors, 1)
在λ
.
例子:“λ”6
数据类型:双
一个
- - - - - -逆先验的形状超参数σ2
3.
(默认)|数字标量
逆先验的形状超参数σ2,指定为数值标量。
一个
至少是-(截距+ NumPredictors)/2
.
与B
当保持固定时,逆伽马分布变得更高更集中一个
增加。的先验模型σ2大于后验估计时的似然。
逆伽马分布的函数形式,见易于分析处理的后验.
例子:“一个”,0.1
数据类型:双
B
- - - - - -逆先验的尺度超参数σ2
1
(默认)|积极的标量|正
逆先验的比例参数σ2,指定为正标量或正
.
与一个
当保持固定时,逆伽马分布变得更高更集中B
增加。的先验模型σ2大于后验估计时的似然。
例子:“B”,5
数据类型:双
对象的功能
例子
建立贝叶斯套索回归的先验模型
考虑预测美国实际国民生产总值(gdp)的多元线性回归模型(GNPR
)采用工业生产指数(新闻学会
)、总就业人数(E
)和实际工资(或者说是
).
对所有 , 是一系列均值为0,方差为0的独立高斯扰动吗 .
假设这些先验分布:
为j= 0,…,3, 拉普拉斯分布的均值为0,标度为 ,在那里 为收缩参数。系数是条件独立的。
. 而且 分别是逆伽马分布的形状和比例。
为贝叶斯线性回归创建一个先验模型。指定预测器的数量p
.
P = 3;Mdl = lassoblm(p);
PriorMdl
是一个lassoblm
贝叶斯线性回归模型对象表示回归系数和扰动方差的先验分布。在命令窗口中,lassoblm
显示先前分布的摘要。
或者,您可以通过传递预测因子的数量来创建贝叶斯套索回归的先验模型bayeslm
和设置ModelType
到的名称-值对参数“套索”
.
MdlBayesLM = bayeslm(p,“ModelType”,“套索”)
MdlBayesLM = lassoblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}λ:[4 x1双]A: 3 B: 1 |意味着性病CI95积极的分布 --------------------------------------------------------------------------- 拦截| 0 100[-200.000,200.000]0.500级混合β(1)| 0 1[-2.000,2.000]0.500级混合β(2)| 0 1[-2.000,2.000]0.500级混合β(3)| 0 1[-2.000,2.000]0.500级混合Sigma2 | 0.5000 - 0.5000[0.138, 1.616] 1.000搞笑(3.00,1)
Mdl
而且MdlBayesLM
是等价的模型对象。
您可以使用点表示法设置已创建模型的可写属性值。将回归系数名称设置为相应的变量名称。
Mdl。VarNames = [“他们”“E”“福”]
Mdl = lassoblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}λ:[4 x1双]A: 3 B: 1 |意味着性病CI95积极的分布 --------------------------------------------------------------------------- 拦截| 0 100[-200.000,200.000]0.500级混合IPI | 0 1[-2.000, 2.000] 0.500级混合E | 0 1[-2.000, 2.000] 0.500级混合WR | 0 1[-2.000, 2.000] 0.500级混合Sigma2 | 0.5000 - 0.5000[0.138, 1.616] 1.000搞笑(3.00,1)
MATLAB®将变量名称与显示中的回归系数关联起来。
执行变量选择使用默认套索收缩
中的线性回归模型建立贝叶斯套索回归的先验模型.
创建一个执行贝叶斯套索回归的先验模型。指定预测器的数量p
回归系数的名称。
P = 3;PriorMdl = bayeslm(p,“ModelType”,“套索”,“VarNames”,[“他们”“E”“福”]);收缩= PriorMdl。λ
收缩=4×10.0100 1.0000 1.0000 1.0000
PriorMdl
中存储所有预测器的收缩值λ
财产。收缩(1)
是收缩为截距,和元素的收缩(2:结束)
对应的预测因子的系数Mdl。VarNames
.截距的默认收缩为0.01
,默认为1
对于所有其他系数。
加载Nelson-Plosser数据集。为响应和预测器系列创建变量。因为lasso对可变尺度很敏感,标准化所有变量。
负载Data_NelsonPlosserX = DataTable{:, priormll . varnames (2:end)};y = DataTable{:,“GNPR”};X = (X - mean(X,“omitnan”)。/性病(X,“omitnan”);Y = (Y - mean(Y,“omitnan”)) /性病(y,“omitnan”);
属性为每个系数指定不同的收缩值,尽管此示例对变量进行了标准化λ
的属性PriorMdl
缩水率数值矢量。
通过估计的边际后验分布实现贝叶斯套索回归 而且 .由于贝叶斯套索回归使用马尔科夫链蒙特卡罗(MCMC)进行估计,设置一个随机数种子来再现结果。
rng (1);PosteriorMdl =估计(PriorMdl,X,y);
方法:套索MCMC抽样10000次观测数:62个预测数:4 |平均标准CI95正分布-----------------------------------------------------------------------拦截| -0.4490 0.0527[-0.548,-0.344]0.000经验IPI | 0.6679 0.1063[0.456, 0.878] 1.000经验E | 0.1114 0.1223[-0.110, 0.365] 0.827经验WR | 0.2215 0.1367[-0.024, 0.494] 0.956经验Sigma2 | 0.0343 0.0062[0.024, 0.048] 1.000经验
PosteriorMdl
是一个empiricalblm
的后验分布绘制的模型对象
而且
根据这些数据。估计
在命令行上显示边缘后验分布的摘要。摘要的行对应回归系数和扰动方差,列对应后验分布的特征。其特点包括:
CI95
,其中包含参数的95%贝叶斯相等可信区间。例如,后验概率的回归系数E
(标准化)在[-0.110,0.365]是0.95。积极的
,其中包含参数大于0的后验概率。例如,截距大于0的概率为0。
默认情况下,估计
绘制并丢弃大小为5000的老化样本。然而,一个好的做法是检查图纸的痕迹图,以充分混合和缺乏瞬态。绘制每个参数的绘图跟踪图。您可以访问组成分布的绘图(属性)BetaDraws
而且Sigma2Draws
)使用点表示法。
图;为J = 1:(p + 1) subplot(2,2, J);情节(PosteriorMdl.BetaDraws (j,:));标题(sprintf (' % s ', PosteriorMdl.VarNames {j}));结束
图;情节(PosteriorMdl.Sigma2Draws);标题(“Sigma2”);
轨迹图表明,这些图似乎混合得很好。该图没有显示出可检测到的短暂性或序列相关性,并且绘制不会在状态之间跳跃。
绘制系数和扰动方差的后验分布。
图;情节(PosteriorMdl)
E
而且或者说是
可能不是重要的预测因子,因为0在后验分布的高密度区域内。
将不同的收缩值归因于系数
中的线性回归模型建立贝叶斯套索回归的先验模型以及它在执行变量选择使用默认套索收缩.
当您实现lasso回归时,一个常见的实践是标准化变量。然而,如果你想保留系数的解释,但变量有不同的尺度,那么你可以执行不均匀收缩通过为每个系数指定不同的缩水率。
创建一个执行贝叶斯套索回归的先验模型。指定预测器的数量p
回归系数的名称。
P = 3;PriorMdl = bayeslm(p,“ModelType”,“套索”,“VarNames”,[“他们”“E”“福”]);
加载Nelson-Plosser数据集。为响应和预测器系列创建变量。通过在单独的图表中绘制每个变量来确定变量是否具有指数趋势。
负载Data_NelsonPlosserX = DataTable{:, priormll . varnames (2:end)};y = DataTable{:,“GNPR”};图;情节(日期、y)标题(“GNPR”)
为J = 1:3的数字;情节(日期、X (:, j));标题(PriorMdl。VarNames (j+1));结束
的变量GNPR
,新闻学会
,或者说是
似乎呈指数增长趋势。
从变量中去掉指数趋势GNPR
,新闻学会
,或者说是
.
Y = log(Y);X(:,[1 3]) = log(X(:,[1 3]));
所有预测变量都有不同的尺度(欲了解更多细节,请输入描述
在命令行)。显示每个预测器的平均值。从所有预测器中删除包含前导缺失值的观测值。
predmeans = mean(X,“omitnan”)
predmeans =1×3104× 0.0002 4.7700 0.0004
第二个预测因子的值远大于其他两个预测因子和响应的值。因此,第二个预测器的回归系数可以近似于零。
使用点表示法,将截距的收缩率定义为非常低,第一个和第三个预测因子的收缩率为0.1,第二个预测因子的收缩率为1000。
PriorMdl。λ=[1e-5 0.1 1e4 0.1];
通过估计的边际后验分布实现贝叶斯套索回归 而且 .因为贝叶斯套索回归使用MCMC进行估计,所以设置一个随机数种子来重现结果。
rng (1);PosteriorMdl =估计(PriorMdl,X,y);
方法:套索MCMC抽样10000次观测数:62预测数:4 |平均标准CI95正分布----------------------------------------------------------------------截取| 2.0281 0.6839[0.679,3.323]0.999经验IPI | 0.3534 0.2497[-0.139, 0.839] 0.923经验E | 0.0000 0.0000[-0.000, 0.000] 0.762经验WR | 0.5250 0.3482[-0.126, 1.209] 0.937经验Sigma2 | 0.0315 0.0055[0.023, 0.044] 1.000经验
使用后验预测分布预测响应
中的线性回归模型建立贝叶斯套索回归的先验模型.
进行贝叶斯套索回归:
为回归系数和扰动方差创建一个贝叶斯套索先验模型。使用默认收缩。
列出最后10期估计数据。
估计边际后验分布。
P = 3;PriorMdl = bayeslm(p,“ModelType”,“套索”,“VarNames”,[“他们”“E”“福”]);负载Data_NelsonPlosserFHS = 10;%预测视界大小X = DataTable{1:(end - fhs), priormll . varnames (2:end)};y = DataTable{1:(end - fhs),“GNPR”};XF = DataTable{(end - fhs + 1):end, priormll . varnames (2:end)};%未来预测数据yFT = DataTable{(end - fhs + 1):end,“GNPR”};%真实的未来反应rng (1);%用于再现性PosteriorMdl =估计(PriorMdl,X,y,“显示”、假);
使用后验预测分布和未来预测数据预测反应XF
.画出响应的真实值和预测值。
yF = forecast(PosteriorMdl,XF);图;情节(日期、DataTable.GNPR);持有在plot(date ((end - fhs + 1):end),yF) h = gca;HP = patch([dates(end - FHS + 1) dates(end) dates(end) dates(end - FHS + 1)],...h.YLim([1,1,2,2]),[0.8 0.8 0.8]);uistack(惠普、“底”);传奇(“预测地平线”,“真正的GNPR”,“预测GNPR”,“位置”,“西北”)标题(实际国民生产总值:1909 - 1970);ylabel (“rGNP”);包含(“年”);持有从
yF
是与未来预测数据相对应的真实GNP的未来值的10乘1向量。
估计预测均方根误差(RMSE)。
frmse =√(mean((yF - yFT).^2))
Frmse = 25.4831
预测均方根误差是预测精度的相对度量。具体来说,您使用不同的假设来估计几个模型。预测RMSE最低的模型是所比较的模型中表现最好的模型。
当您执行贝叶斯套索回归时,最佳实践是搜索适当的收缩值。这样做的一种方法是在收缩值网格上估计预测RMSE,并选择使预测RMSE最小化的收缩。
更多关于
贝叶斯线性回归模型
一个贝叶斯线性回归模型处理参数β而且σ2多元线性回归(MLR)模型yt=xtβ+εt作为随机变量。
为次t= 1,…,T:
yt是观察到的响应。
xt是一个1 × (p的观测值的行向量p预测因子。为了适应模型截距,x1t= 1t.
β是a (p的列向量,对应于组成列的变量的回归系数xt.
εt为均值为0的随机扰动,Cov(ε) =σ2我T×T,而ε是一个T-by-1向量包含所有扰动。这些假设意味着数据的可能性是
ϕ(yt;xtβ,σ2)为带均值的高斯概率密度xtβ和方差σ2评估在yt;.
在考虑这些数据之前,您需要考虑联合先验分布假设(β,σ2).在贝叶斯分析中,通过使用从数据的似然性中获得的关于参数的信息来更新参数的分布。结果是关节后分布(β,σ2)或条件后验分布参数的。
提示
λ
是一个调优参数。因此,使用收缩值网格执行贝叶斯套索回归,并选择最佳平衡拟合准则和模型复杂性的模型。对于估计,模拟和预测,MATLAB®没有标准化预测器数据。如果预测器数据中的变量具有不同的尺度,则为每个预测器指定收缩参数
λ
.
选择功能
的bayeslm
函数可以为贝叶斯线性回归创建任何支持的先验模型对金宝app象。
参考文献
[1]帕克、T.和G.卡塞拉。“贝叶斯套索。”美国统计协会杂志.Vol. 103 No. 482, 2008, pp. 681-686。
版本历史
在R2018b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。