简述lasso估计以及调节参数的CV与BIC准则

本文介绍了Lasso方法及其系数压缩特性,包括基本的Lasso估计和自适应Lasso的区别。重点讨论了调节参数的选择,如CV准则和BIC准则,并通过实际案例演示了如何在R语言中运用。最后展示了Lasso在人体健康数据中的应用,展示了其在变量筛选和防止过拟合方面的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Lasso

Lasso方法是系数压缩法中的一种,基于最小二乘方法的Lasso方法是基础,下面对最小二乘下的Lasso进行阐述。

1.1 Lasso估计

Lasso估计最先是由斯坦福大学的著名统计学家Tibshirani[2]提出的,其思想就是加一项惩罚函数,然后进行变量选择和参数估计,其可以表示为:

 (1)

即Lasso估计就是寻找最小的\beta,其中,\lambda是调节参数,n为样本容量,满足 (1)式的称为正则化Lasso估计。Lasso是一种系数压缩的方法,它最大的优点就是它能够连续缩减、压缩,并且是一种正则化估计,它能够准确选择出那些系数不为0的变量,即重要变量;同时,它也能够准确将一些不相关的变量系数压缩为0,从而实现变量选择。另外它也能给出线性回归模型系数的估计值。也正是基于Lasso估计的提出Efron等前辈提出了有效的角回归算法,Friedman等前辈提出了坐标下降算法等,这些算法的提出使得基于Lasso方法的变量选择方法迅速发展,且应用于各个领域。

1.2 自适应Lasso估计

由于不同的回归系数对模型的影响程度是不同的,而在 (1)式中,我们可以看见对于模型中不同的回归系数选择了同一个惩罚参数,显然这是不科学、不合理的。因此,为了解决这一问题,Zou[5]提出了自适应Lasso(adaptive Lasso)估计方法,其具体形式表示为:                         

   (2)

其中,\omega为权重,即通过设置不同的权重,对不同回归系数实行不同程度的惩罚,那些对因变量影响较大的自变量的系数进行较小的惩罚,而对那些对因变量影响较小或者不相关变量的自变量的系数进行较大的惩罚,从而实现自适应的变量选择。

2.调节参数的选择

关于调节参数的选择,也有很多学者研究,有不同的判断准则,但是应用最为广泛的是CV准则和BIC准则。下面对这两种准则做一简单介绍。

(a)CV准则

CV准则最简单的是留一交叉验证方法,它的思想就是把我们的数据集分成两部分,一部分是训练集,另一部分是测试集,如果数据集总共有n个样本,那将其中一个作为测试集,其余(n-1)个当做训练集,然后我们用训练集去拟合得到一个模型,再将测试集的自变量代入,可以得到其对应的因变量y的值。我们从第一个样本开始作为测试集,即第一次去掉(x1,y1),也就是把(x1,y1)当做测试集,剩余的{(x2,y2),...(xn,yn)}这个作为训练集,在这个训练集上去进行拟合线性回归模型,再将x1代入拟合完的线性回归模型中得出y1的拟合值

作为训练集,在这个训练集上去进行拟合线性回归模型,再将xi代入拟合好的模型中求得yi的拟合值\hat{^{y_{i}}},再计算

,就这样一直计算n次,得到n个均方误差MSEi,i=1,2,...n于是我们就可以得到n个均方误差的均值为:

 这个是在一个\lambda下对应的CV值,我们要选最优的,首先要给予一个初始\lambdamax,再采用格子点方法,可以采用100个格子点,将其分为100个\lambda

^{\lambda _{i }}=\frac{1}{100} * \lambda _{max}

,i=1,2,....100,,这样在100个\lambda下,我们可以对每一个\lambdai都求一个CV(\lambdai),然后我们再根据CV值最小原则选取最优的,即:

 基于CV准则下,将留一交叉验证法改进,我们有k折交叉验证法,两者本质思想是一样的,k折交叉验证法只是将样本分成了k个小组,然后每次留一组去进行测试,其余(k-1)组作为训练集,同理我们每次都可以计算出一个均方误差MSE,这样我们就可以得到kMSE,它们k个均方误差的均值是:

 同理,继续采用格子点方法,求出使得CV值最小的那个\lambda。显而易见,当k=n时候,k折交叉验证法就是留一交叉验证法。

 (b)BIC准则

所谓BIC准则,就是基于贝叶斯方法下的准则,和CV准则一样,首先要给予一个初始值 \lambdamax,再采用格子点方法,将初始值分割,可以采用100个格子点,将其分为100个,

^{\lambda _{i }}=\frac{1}{100} * \lambda _{max}

,i=1,2,....100,这样在这100个下,根据(1)式和(2)式,我们可以对每一个\lambdai都求一个\hat{\beta _{\lambda _{i}}},进而可以求出 \lambdai此对应的BIC( \lambdai), 我们再选择最小的 BIC( \lambdai)对应的 \lambdai,即

 其中df是在 \lambdai下求得的回归系数\hat{\beta _{\lambda _{i}}}中系数不为0的个数。这样我们就可以选出最优的调节参数。

3.一个例子

   为了了解和预测人体吸入氧气的效率,收集了31名中年男性的健康状况调查资料,共调查了7项指标:吸氧效率(Y)、年龄(x1,单位:岁)、体重(x2,单位:千克)、跑1.5千米所需要时间(x3,单位:分钟)、休息时的心率(x4,次/分钟)、跑步时的心率(x5,次/分钟)和最高心率(x6,次/分钟),数据见附录,在该资料中吸氧效率Y作为响应变量,其他六个变量作为协变量,建立多元回归模型并统计分析。

    把数据用文件data.csv保存,放在R语言的工作目录下,读数据并建立多元线性回归模型,用函数lm()计算,summary()提取信息[6],输出结果如下:

 (1)经验回归方程为:

 (2)回归系数的显著性检验:从各个回归系数的p值看出,变量x1,x3,x5和x6的p值小于显著性水平,可以认为它们是线性回归显著的,而变量x2和x4的p值大于显著性水平,认为它们是不显著的变量。进一步可以使用lasso方法压缩变量。

 lasso变量选择

用程序包glmnet中的函数对上述数据进行lasso回归分析,输出的结果如下:

 从上面的结果可以看出,采用“一个标准差”准则的\lambda = 0.5836时,可以产生稀疏解,使得x2,x4和x6 的系数为0,使得模型更为简单,不易导致过拟合。

自适应lasso变量选择

用程序包msgps中的函数对上述数据进行lasso回归分析,输出的结果如下:

 从上面结果可以看出,当采用BIC方法选取调节参数时,把x2和x4变量的系数被压缩成0, 使得模型更为简单,不易导致过拟合。

R中实现代码:

library(glmnet)
library(MASS)
library(Matrix)
library(latex2exp)
library(msgps)
W=read.csv('C:/Users/ASUS/Desktop/data.csv') 
lm.reg=lm(W$Y~W$X1+W$X2+W$X3+W$X4+W$X5+W$X6)
summary(lm.reg)
x=cbind(W$X1,W$X2,W$X3,W$X4,W$X5,W$X6)
y=c(W$Y)
fit_lasso=glmnet(x,y,alpha=1,nlambda=100)
lam=fit_lasso$lambda
cv.lasso=cv.glmnet(x,y,alpha=1)
coef(cv.lasso,S="lambda.lse")
alasso_fit=msgps(x,y,penalty="alasso",gamma=1)
summary(alasso_fit)

数据

Y

X1

X2

X3

X4

X5

X6

44.609

44

89.47

11.37

62

178

182

45.313

40

75.05

10.07

62

185

185

54.297

44

85.84

8.65

45

156

168

59.571

42

68.15

8.17

40

166

172

49.874

38

89.02

9.22

55

178

180

44.811

47

77.45

11.63

58

176

176

45.681

40

75.98

11.95

70

176

180

49.091

43

81.19

10.85

64

162

170

39.442

44

81.42

13.08

63

174

176

60.055

38

81.87

8.63

48

170

186

50.541

44

73.03

10.13

45

168

168

37.388

45

87.66

14.03

56

186

192

44.754

45

66.45

11.12

51

176

176

47.273

47

79.15

10.6

47

162

164

51.855

54

83.12

10.33

50

166

170

49.156

49

81.42

8.95

44

180

185

40.836

51

69.63

10.95

57

168

172

46.672

51

77.91

10

48

162

168

46.774

48

91.63

10.25

48

162

164

50.388

49

73.57

10.08

67

168

168

39.407

57

73.37

12.63

58

174

176

46.08

54

79.38

11.17

62

156

165

45.441

56

76.32

9.63

48

164

166

54.625

50

70.87

8.92

48

146

155

45.118

51

67.25

11.08

48

172

172

39.203

54

91.63

12.88

44

168

172

45.79

51

73.71

10.47

59

186

188

50.545

57

59.08

9.93

49

148

155

48.673

49

76.32

9.4

56

186

188

47.92

48

61.24

11.5

52

170

176

47.467

52

82.78

10.5

53

170

172

<think>嗯,我现在需要比较和理解对数线性模型中AIC和BIC准则的应用及差异。首先,我应该回顾一下AIC和BIC的基本概念,然后看看它们在对数线性模型中的具体应用。 我记得AIC是赤池信息准则,而BIC是贝叶斯信息准则。两者都是用来进行模型选择的,通过平衡模型的拟合优度和复杂度来选择最佳模型。但它们的公式和侧重点可能不同。根据引用[4],AIC和BIC都加入了惩罚项,但具体怎么计算的呢? AIC的公式应该是$-2\ln(L) + 2k$,其中L是似然函数的最大值,k是参数个数。而BIC的公式是$-2\ln(L) + k\ln(n)$,n是样本量。所以BIC参数个数的惩罚更严格,尤其是当样本量大的时候。这样在样本量大时,BIC倾向于选择更简单的模型,而AIC可能选择更复杂的,对吗? 那在对数线性模型中,这两个准则的应用有什么不同呢?对数线性模型常用于列联表分析,分析多个分类变量之间的关系。模型选择在这里很重要,因为变量之间可能存在交互效应,需要确定哪些交互项应该包含在模型中。 根据引用[3],AIC的绝对值不重要,重要的是比较不同模型的AIC值,选择较小的那个。而BIC同样如此。但引用[4]提到,AIC的目标是找到预测能力最好的模型,可能有过拟合的风险,而BIC更倾向于找到真实的模型,假设真实模型在候选模型中。 所以在对数线性模型中,如果目标是预测,可能优先考虑AIC;如果希望找到真实的变量关系,可能选BIC。但需要确认样本量大小,因为BIC的惩罚项涉及样本量,大样本时更严格。 另外,引用[1]和[2]提到在sklearn中使用AIC和BIC进行模型选择,比如Lasso回归。这可能对数线性模型的应用类似,都是通过信息准则来权衡拟合和复杂度。 但具体到对数线性模型,比如用Poisson回归或者log-linear模型时,似然函数的具体形式会影响AIC和BIC的计算。这时候需要注意模型的对数似然计算是否正确,参数的数量是否准确,包括交互项的参数。 例如,一个包含三个变量的对数线性模型,可能有主效应、二阶交互、三阶交互等不同复杂度的模型。用AIC和BIC分别评估,可能会得到不同的最优模型。这时候需要根据研究目的选择准则。 另一个问题是,使用场景方面,AIC适用于样本量较小或当真实模型不在候选模型中时,而BIC在样本量大时更有效,且假设真实模型在候选模型中。这可能影响对数线性模型的选择结果。 总结起来,区别可能在于惩罚项的不同导致的选择倾向,以及不同的理论背景(AIC基于信息论,BIC基于贝叶斯后验概率)。应用场景则根据样本量、研究目的(预测还是解释真实结构)来选择。 需要验证这些观点是否正确,并确保引用的资料支持这些结论。例如引用[3]提到AIC对比时绝对值不重要,而引用[4]指出两者的不同惩罚项和理论依据。这些都可以用来支撑回答。 可能还需要考虑具体例子,比如在对数线性模型中选择不同交互项时,AIC和BIC如何影响模型选择结果。比如,当存在多个可能的交互项时,AIC可能选择一个包含更多交互项的模型,而BIC可能选择一个更简洁的模型,尤其是在大样本情况下。 最后,生成相关问题需要考虑用户可能进一步的问题,比如如何计算对数线性模型的AIC/BIC,或者在实际应用中如何选择这两个准则,或者它们其他准则(如交叉验证)的比较。</think>### 对数线性模型中AICBIC准则的比较 #### 1. **核心区别** - **公式差异** - **AIC**: $ \text{AIC} = -2\ln(L) + 2k $ - **BIC**: $ \text{BIC} = -2\ln(L) + k\ln(n) $ 其中,$L$为模型最大似然值,$k$为参数个数,$n$为样本量。 BIC的惩罚项随样本量增大而增强,对复杂度更敏感[^4]。 - **理论目标** - AIC旨在最小化预测误差,适合**模型预测**场景,即使真实模型不在候选范围内[^4]。 - BIC基于贝叶斯后验概率,假设真实模型在候选模型中,适合**探索真实数据结构**。 #### 2. **应用差异** - **样本量影响** - 小样本时,AIC可能更优;大样本时,BIC倾向于选择更简单模型[^4]。 - 例如:对数线性模型中,若分析$10^4$样本的列联表,BIC可能忽略弱交互项。 - **模型复杂度控制** - AIC允许适度过拟合以提高预测能力。 - BIC严格惩罚参数数量,避免冗余变量(如高阶交互项)[^2]。 #### 3. **使用场景** - **选择AIC** - 预测新数据、候选模型不包含真实模型、样本量较小[^3]。 - 示例:电商用户行为对数线性模型,需预测点击率时。 - **选择BIC** - 探索变量间真实关系、样本量较大、假设真实模型在候选中。 - 示例:医学列联表分析,需确定疾病多因素的关联结构时。 #### 4. **计算示例(Python)** ```python import statsmodels.api as sm # 对数线性模型(以列联表为例) data = sm.datasets.get_rdataset("Titanic").data model = sm.formula.glm( "count ~ C(Class) * C(Sex) * C(Age)", data=data, family=sm.families.Poisson() ).fit() print(f"AIC: {model.aic}") # 输出AIC值 print(f"BIC: {model.bic}") # 输出BIC值 ``` 通过对比不同模型(如是否包含三阶交互项)的AIC/BIC,选择更优模型。 #### 5. **注意事项** - 避免跨工具计算AIC/BIC,因实现方式可能不同[^3]。 - 需结合假设检验(如似然比检验)综合评估模型[^1]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值