lassoblm

贝叶斯线性回归模型套索正规化

描述

贝叶斯线性回归模型宾语lassoblm指定回归系数的联合先验分布和干扰方差(βσ2)实现贝叶斯套索回归[1]。对于Ĵ= 1,…,NumPredictors的条件先验分布βĴ|σ2拉普拉斯(双指数)分布的均值和比例尺是0吗σ2/λ,在那里λ是套索的正则化或收缩参数。先验分布σ2逆和形状有关吗一个和规模

数据可能性是 · Ť = 1 Ť ϕ ÿ Ť ; X Ť β σ 2 在哪里ϕÿŤ;XŤβσ2)的高斯概率密度评估在ÿŤ均值XŤβ和方差σ2。由此产生的后验分布在分析上是不容易处理的。有关后验分布的详细信息,请参阅易于分析后验

通常,在创建贝叶斯线性回归模型对象,它仅指定线性回归模型的联合先验分布和特征。也就是说,模型对象是用于进一步使用的模板。具体而言,纳入数据到模型对于后验分布的分析和特征选择,通过模型对象和数据到适当的目标函数

创建

描述

PriorMdl= lassoblm(NumPredictors创建一个贝叶斯线性回归模型对象(PriorMdl) 由...组成的NumPredictors预测和截距,和套NumPredictors财产。的联合先验分布(βσ2)适用于实现贝叶斯lasso回归[1]PriorMdl是一个模板,它定义了先验分布并指定了套索正则化参数的值λ和维β

PriorMdl= lassoblm(NumPredictors名称,值属性(除了NumPredictors)使用名称-值对参数。将每个属性名括在引号中。例如,lassoblm(3“λ”0.5)指定的收缩0.5对于三个系数(不是截距)。

属性

全部展开

当您使用的名称 - 值对参数语法创建模型对象,你可以设置可写的属性值,或者在您通过使用点符号模型对象。例如,为了设置为收缩的所有系数,除截距,至0.5,输入

PriorMdl。LAMBDA=0.5;

贝叶斯多元线性回归模型中预测变量的个数,指定为非负整数。

NumPredictors必须与预测数据中的列数相同,预测数据是在模型估计或模拟期间指定的。

当指定NumPredictors,排除该值的任何截距项。

在创建模型之后,如果您更改了值NumPredictors使用点符号,然后这些参数恢复到默认值:

  • 变量名(VarNames

  • 收缩参数(LAMBDA

数据类型:

标志用于包括回归模型截距,指定为在此表中的值。

价值 描述
从回归模型中排除截距。因此,β是一个p维向量,其中p是的价值NumPredictors
真正的 在回归模型中包含一个截距。因此,β是(p+ 1)维向量。此规范导致Ť在估计和模拟过程中,需要将1乘1的向量预先写入预测数据。

如果在预测项数据中包含一列1,则设置拦截

例子:“拦截”,假的

数据类型:合乎逻辑

显示的预测变量名,指定为字符串向量或字符向量的单元向量。VarNames必须包含NumPredictors元素。VarNames (Ĵ变量的名称在列中吗Ĵ的预测数据集,你估计,仿真或预测过程中指定。

默认值是β{β(1),(2),…,β(p)},在那里p是的价值NumPredictors

例子:'VarNames',[ “UnemploymentRate”;“CPI”]

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

所有回归系数的Lasso正则化参数,指定为正的数值标量或(拦截+NumPredictors)-乘1的正数值向量。更大的值LAMBDA使相应系数收缩接近零。

假设X是一个Ť——- - - - - -NumPredictors在估计、模拟或预测期间指定的预测数据矩阵。

  • 如果LAMBDA是一个向量和拦截真正的λ(1)为截距的收缩,拉姆达(2)是用于第一预测器的系数的收缩X(:,1)拉姆达(3)第二个预测系数的收缩是吗X (:, 2)、……λ(NumPredictors + 1)最后一个预测系数的收缩是吗X (:, NumPredictors)

  • 如果LAMBDA是一个向量和拦截λ(1)是用于第一预测器的系数的收缩X(:,1)、……拉姆达(NumPredictors)最后一个预测系数的收缩是吗X (:, NumPredictors)

  • 如果你提供标量小号对于LAMBDA,则所有预测因子的系数都在X有收缩小号

    • 如果拦截真正的,截距为0.01,lassoblm商店(0.01;* (NumPredictors, 1)]LAMBDA

    • 否则,lassoblm商店*的(NumPredictors, 1)LAMBDA

例子:'LAMBDA',6

数据类型:

逆先验的形状超参数σ2,指定为数值标量。

一个必须至少-(拦截+ NumPredictors) / 2

保持固定,反伽马分布变得更高和更浓缩为一个增加。该特征称为先验模型σ2更重比后估计中的可能性。

反伽马分布的函数形式见易于分析后验

例子:“一个”,0.1

数据类型:

反演先验的尺度参数σ2,指定为正标量或

一个保持固定,反伽马分布变得更高和更浓缩为增加。该特征称为先验模型σ2更重比后估计中的可能性。

例子:“B”, 5

数据类型:

对象函数

估计 对贝叶斯线性回归模型进行预测变量选择
模拟 模拟贝叶斯线性回归模型的回归系数和扰动方差
预测 贝叶斯线性回归模型的预测响应
情节 可视化贝叶斯线性回归模型参数的先验和后验密度
总结 贝叶斯分布汇总统计数据线性回归模型预测变量的选择

例子

全部折叠

考虑预测美国实际国民生产总值的多元线性回归模型(GNPR)采用工业生产指数(IPI)、总就业人数(Ë)和实际工资(或者说是)。

GNPR Ť = β 0 + β 1 IPI Ť + β 2 Ë Ť + β 3 或者说是 Ť + ε Ť

对所有 Ť ε Ť 是具有0和方差的平均一系列独立的高斯干扰的 σ 2

假设这些先验分布:

  • 对于Ĵ= 0,…,3, β Ĵ | σ 2 拉普拉斯分布的均值是0,刻度是 σ 2 / λ ,在那里 λ 为收缩参数。这些系数是条件独立的。

  • σ 2 一世 G 一个 一个 是一个逆伽马分布的形状和规模,分别。

建立贝叶斯线性回归的先验模型。指定谓词的数量p

p = 3;Mdl = lassoblm (p);

PriorMdl是一个lassoblm贝叶斯线性回归模型对象表示回归系数和扰动方差的先验分布。在命令窗口,lassoblm显示先验分布的总结。

或者,您可以通过传递预测器的数量来为Bayesian lasso回归创建一个先验模型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)

MdlMdlBayesLM是等效的模型对象。

你可以使用点符号集创建模型的可写的属性值。将回归系数名称对应的变量名。

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®将变量名与显示器中的回归系数关联起来。

考虑线性回归模型建立贝叶斯Lasso回归的先验模型

建立执行贝叶斯lasso回归的先验模型。指定谓词的数量p以及回归系数的名称。

p = 3;PriorMdl = bayeslm(P,'ModelType'“套索”'VarNames',(“他们”“E”“福”]);收缩= PriorMdl.Lambda
收缩=4×10.0100 1.0000 1.0000 1.0000

PriorMdl将所有预测器的收缩值存储在其中LAMBDA财产。收缩(1)是收缩的截距,和中的元素收缩率(2:结束)对应的预测因子的系数Mdl.VarNames。截距的默认收缩是0.01,默认值是1对于所有其他系数。

加载Nelson-Plosser数据集。为响应和预测序列创建变量。因为lasso对可变尺度很敏感,所以要标准化所有的变量。

加载Data_NelsonPlosserX = DataTable {: PriorMdl.VarNames(2:结束)};y = DataTable {:,“GNPR”};X = (X - nanmean(X))./nanstd(X);y = (y - nanmean(y))/nanstd(y);

虽然此示例对变量进行了标准化,但您可以通过设置LAMBDA财产PriorMdl收缩值的数值向量。

通过估计的边际后验分布实现贝叶斯套索回归 β σ 2 。因为Bayesian lasso回归使用Markov chain Monte Carlo (MCMC)进行估计,所以设置随机数种子来重现结果。

rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:拉索与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经验或者说是| 0.2215 - 0.1367[-0.024,0.494]0.956经验Sigma2 | 0.0343 - 0.0062[0.024, 0.048] 1.000经验

PosteriorMdl是一个empiricalblm存储的模型对象来自的后验分布 β σ 2 考虑到数据。估计显示在命令行边缘后验分布的总结。摘要对应于回归系数和干扰方差,和列的行对应于后验分布的特性。该特性包括:

  • CI95,其中包含95%贝叶斯等价可信区间的参数。例如,回归系数的后验概率Ë(标准化)是在[-0.110,0.365]是0.95。

  • 积极的,其中包含参数大于0的后验概率。例如,截距大于0的概率是0。

默认情况下,估计平丢弃老化大小5000然而样品,一个好的习惯是检查一个轨迹曲线的绘制的充分混合,缺乏短暂的。绘制轨迹曲线的绘制每个参数。您可以访问绘制一条撰写的分布(属性BetaDrawsSigma2Draws)使用点表示法。

图;对于j = 1:(p + 1) subplot(2,2,j);情节(PosteriorMdl.BetaDraws (j,:));标题(sprintf (' % s ',PosteriorMdl.VarNames {j}));结束

图;情节(PosteriorMdl.Sigma2Draws);标题(“Sigma2”);

跟踪曲线表明,吸引似乎拌匀。该图显示没有可检测到短暂或序列相关性,以及吸引不状态之间跳跃。

绘制系数和扰动方差的后验分布。

图;情节(PosteriorMdl)

Ë或者说是可能不是重要的预测,因为0是高密度的在他们的后验分布的区域内。

考虑线性回归模型建立贝叶斯Lasso回归的先验模型及其在使用默认套索收缩执行变量选择

当你实现套索回归,通常的做法是标准化的变量。不过,如果你想保留系数的解释,但变量有不同的尺度,那么你就可以执行不均匀收缩通过指定不同的收缩为每个系数。

建立执行贝叶斯lasso回归的先验模型。指定谓词的数量p以及回归系数的名称。

p = 3;PriorMdl = bayeslm(P,'ModelType'“套索”'VarNames',(“他们”“E”“福”]);

加载Nelson-Plosser数据集。为响应和预测序列创建变量。确定变量是否由不同的人物绘制每个指数的趋势。

加载Data_NelsonPlosserX = DataTable {: PriorMdl.VarNames(2:结束)};y = DataTable {:,“GNPR”};图;情节(日期、y)标题(“GNPR”

对于j = 1:3图;情节(日期、X (:, j));标题(PriorMdl。VarNames (Ĵ+1));结束

的变量GNPRIPI,或者说是似乎有一个指数趋势。

从变量中去掉指数趋势GNPRIPI,或者说是

定义Y = Log(Y);X(:,[1 3])=日志(X(:,[1 3]));

所有预测变量都有不同的尺度(要了解更多细节,请输入描述在命令行)。显示每个预测变量的平均值。因为变量包含领先的缺失值,使用nanmean

predmeans = nanmean(X)
predmeans =1×3104×0.0002 4.7700 0.0004

第二预测的值远大于与其它两个预测和响应的。因此,第二预测的回归系数可以出现接近于零。

使用点标记法,将非常低的收缩归因于截距,将0.1的收缩归因于第一个和第三个预测因子,将1000的收缩归因于第二个预测因子。

PriorMdl.Lambda = [1E-5 0.1 1E4 0.1];

通过估计的边际后验分布实现贝叶斯套索回归 β σ 2 。因为Bayesian lasso回归使用MCMC进行估计,所以设置随机数种子来重现结果。

rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:拉索与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经验或者说是| 0.5250 - 0.3482[-0.126,1.209]0.937经验Sigma2 | 0.0315 - 0.0055[0.023, 0.044] 1.000经验

考虑线性回归模型建立贝叶斯Lasso回归的先验模型

执行Bayesian lasso回归:

  1. 建立回归系数和扰动方差的贝叶斯lasso先验模型。使用默认收缩。

  2. 把最后10个时期的数据从估算中拿出来。

  3. 估计边缘后验分布。

p = 3;PriorMdl = bayeslm(P,'ModelType'“套索”'VarNames',(“他们”“E”“福”]);加载Data_NelsonPlosserfhs = 10;预测层位大小X = DataTable{1:(end - fhs),PriorMdl.VarNames(2:end)};y = DataTable{1:(end - fhs),“GNPR”};XF = DataTable{(end - fhs + 1):end,PriorMdl.VarNames(2:end)};今后%的预测数据yFT = DataTable{(end - fhs + 1):end,“GNPR”};%真正的未来应对rng (1);%的再现性PosteriorMdl =估计(PriorMdl, X, y,“显示”、假);

预测响应采用后验预测分布和未来预测数据XF。绘制响应的真实值和预测值。

yF =预测(PosteriorMdl XF);图;情节(日期、DataTable.GNPR);持有plot(date ((end - fhs + 1):end),yF) h = gca;hp = patch([date (end - fhs + 1) date (end) date (end) date (end) date (end - fhs + 1)],h.YLim ([1, 1、2、2]), [0.8 0.8 0.8]);uistack(惠普、“底”);传奇(“预测地平线”“真正的GNPR”“预测GNPR”“位置”“西北”)标题("实际国民生产总值:1909 - 1970 ");ylabel ('rGNP');xlabel('年');持有

yF为未来预测数据对应的实际GNP未来值的10乘1向量。

估计预测均方根误差(RMSE)。

frmse = sqrt(mean((yF - yFT).^2))
frmse = 25.4831

预测RMSE是预测精度的相对量度。具体地说,您使用不同的假设来估计几个模型。预测RMSE最低的模型是被比较模型中表现最好的模型。

当你执行Bayesian lasso回归时,最佳实践是寻找合适的收缩值。一种方法是在收缩值的网格上估计预测RMSE,并选择最小化预测RMSE的收缩值。

更多关于

全部展开

提示

  • LAMBDA是一个调优参数。因此,使用收缩值网格进行Bayesian lasso回归,选择最能平衡拟合准则和模型复杂度的模型。

  • 用于估计、仿真和预测,MATLAB®不标准化预测数据。如果预测数据中的变量具有不同的尺度,则通过提供一个数值向量来为每个预测器指定一个收缩参数LAMBDA

选择功能

bayeslm函数可以为贝叶斯线性回归创建任何支持的先验模型对金宝app象。

参考

[1]T.帕克和G.卡塞拉。“贝叶斯套索”。美国统计协会杂志。第103卷,第482号,2008年,第681-686页。

介绍了在R2018b