glmnet包中的偏差度量的确切定义,是否具有交叉验证?


12

对于当前的研究,我通过二项式因变量通过R中的glmnet包使用Lasso方法。

在glmnet中,可以通过交叉验证找到最佳的lambda,并将生成的模型与各种度量进行比较,例如分类错误或偏差。

我的问题:glmnet中的偏差有多准确?如何计算?

(在Friedman等人的相应论文“通过坐标下降的广义线性模型的正则化路径”中,我仅对cv.glmnet中使用的偏差发现了这一评论:“平均偏差(减去左侧的对数似然的两倍数据)”(第17页))。


它与所使用的偏差相同glm(至少应该如此-我知道只有一个偏差定义)。
Hong Ooi 2014年

是的,但是我认为他们按照我第一篇文章中的引用所指出的方式对其进行了扩展。据我了解,Deviance可以比较两个模型的性能,但是作者如何包括交叉验证的遗漏数据呢?“减去剩余数据对数似然的两倍”有何意义?
Jo Wmann 2014年

1
好了,谢谢,现在我想我明白了:偏差定义为-2 * log似然性,或者更确切地说是(2 * log-likelihood)/(null模型的对数似然性)。这也解释了为什么它们对不同λ值的偏差度量不超过0.2的间隔。根据交叉验证的k-1倍估算模型,并将其应用于其余倍数。对于剩余折数上的应用,将计算对数似然分数。重复k次,并返回上述定义的偏差度量的每个lambda的k个结果的平均值。
Jo Wmann 2014年

1
是的,它总是在每个lambda的所有折叠中取平均值。我认为您可以直接使用偏差,也可以使用wrt与null模型的比率,这可能是仅拦截模型。有两个陷阱:a)折叠可能没有完全相同数量的数据点b)每个折叠包含(自然)不同的数据。要解决(a),您可以简单地将偏差除以所选折中的数据点数。同时使用比率法固定(a)和(b)。偏差模型假设每个模型中的数据集都是相同的(在MAP估计中,它们忽略分母的情况是相同的)。
Cagdas Ozgenc 2014年

1
但是,一旦折痕进入图片,折痕的分母就不同了。因此,比率可以通过消除分母来解决。但是我不知道平均数倍时这有多大的问题。
Cagdas Ozgenc 2014年

Answers:


9

Friedman,Hastie和Tibshirani(2010)中,出于交叉验证的目的,二项式模型的偏差被计算为

减去剩余数据对数似然的两倍(第17页)

鉴于这是文档glmnet(第2和5页)中引用的论文,这很可能是包装中使用的公式。

实际上,在函数的源代码中cvlognet,响应的偏差残差计算为

-2*((y==2)*log(predmat)+(y==1)*log(1-predmat))

predmat简单地在哪里

predict(glmnet.object,x,lambda=lambda)

并从encolsing cv.glmnet函数传入。我使用了本文的JStatSoft页面上可用的源代码,但我不知道该代码是最新的。该程序包的代码非常简单易读。您随时可以通过键入进行检查glmnet:::cv.glmnet


1

除了@shadowtalker的答案外,当我使用软件包glmnet时,我觉得交叉验证中的差异也已归一化。

library(glmnet)
data(BinomialExample)

fit = cv.glmnet(x,y, family = c("binomial"), intercept = FALSE)
head(fit$cvm) # deviance from test samples at lambda value

# >[1] 1.383916 1.359782 1.324954 1.289653 1.255509 1.223706

# deviance from (test samples? all samples?) at lambda value
head(deviance(fit$glmnet.fit))

# >[1] 138.6294 134.5861 131.1912 127.1832 122.8676 119.1637

参考:deviance R文档

因为如果我进行除法,

head(deviance(fit$glmnet.fit)) / length(y))

结果是

[1] 1.386294 1.345861 1.311912 1.271832 1.228676 1.191637

这非常接近fit $ cvm。

@Hong Ooi对此发表的评论可能是这样的:

/programming/43468665/poisson-deviance-glmnet

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.