如何解释 cv.glmnet 返回的系数?它们是功能重要性吗?

机器算法验证 r 物流 多项分布 网络
2022-03-31 05:38:40

我有大量的植被数据,这些数据被分解为 13 个栖息地类别。我试图确定哪些植被倾向于落入或不存在于具有任何意义的栖息地。我已经开始运行多项逻辑回归,特别是使用 glmnet(因为我有大约 200 个变量,只有大约 260 个观察值)。

使用以下代码运行 cv.glmnet:

cv<-cv.glmnet(data,Class,family="multinomial",nfolds=50,standardize=FALSE)

我得到了一个我很难理解的数字列表,但是我找到了代码:

coef(cv, s=cv$lambda.1se)

它返回每个栖息地类别的每个变量的系数,该 lambda 比最小 Lambda 值大 1 SE(据我所知,这是公认的 lambda 值)。

(Intercept)                                              0.7914263664   
Salix                                                    0.0000000000  
Mash                                                     0.0000000000   
Pin                                                      0.0000000000   
Choke                                                    .          
Betula                                                   0.0025260258   
Ideae                                                    0.0000000000   
Leather                                                  0.0000000000

我想知道的是,使用这些系数,是否可以说明具有最大量级的那些值(最接近 -1 和 +1)在定义该类时是最重要的,而那些接近 0 的值并不重要,并且在 cv.glmnet 期间删除了带有句号的那些。所以在这种情况下,植物“白桦”会比其他植物更有影响力,而“扼流圈”是如此没有影响力以至于它被移除了?另外,不知道拦截是什么意思,但我想我可以自己找到那个。

1个回答

首先,任何系数为零的变量都已从模型中删除,因此您可以说它不重要。

其次,你不能真正推断系数的重要性,除非你在回归之前对它们进行了缩放,这样它们都具有相同的均值和标准差(即使那样你也必须小心!)。如果您的变量未缩放,则具有较大平均值的变量往往具有较大的绝对系数。

另一种选择是引导数据样本,为每个样本拟合模型,并计算系数周围的置信区间。

最后,您如何为模型选择“alpha”参数?