- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在处理 glmnet 与 glm 时,我遇到了 lambda=0 和 family="poisson"的收敛问题。我的理解是,对于 lambda=0(和 alpha=1,默认值),答案应该基本相同。
下面的代码与 glmnet 帮助页面 (?glmnet) 上的泊松示例略有不同。唯一的变化是 nzc = p 这样所有变量都在真实模型中
N=1000; p=50
nzc=p
x=matrix(rnorm(N*p),N,p)
beta=rnorm(nzc)
f = x[,seq(nzc)]%*%beta
mu=exp(f)
y=rpois(N,mu)
#With lambda=0 glmnet throws the convergence error shown below
fit=glmnet(x,y,family="poisson",lambda=0)
#It works with default lambda passed in
# but estimates are quite different from glm.
fit=glmnet(x,y,family="poisson") #use default lambdas
fit2=glm(y~x,family="poisson")
plot(coef(fit2)[2:(p+1)],
coef(fit,s=min(fit$lambda))[2:(p+1)],
xlab="glm",ylab="glmnet")
abline(0,1)
#works fine with gaussian response and lambda=0 or default lambda
#glm and glmnet identical
mu = f
y=rnorm(N,mu)
fit=glmnet(x,y,family="gaussian",lambda=0)
fit2=glm(y~x)
plot(coef(fit2)[2:(p+1)], coef(fit)[2:(p+1)])
abline(0,1)
这是错误信息
Warning messages:
1: from glmnet Fortran code (error code -1); Convergence for 1th lambda value not reached after maxit=100000 iterations; solutions for larger lambdas returned
2: In getcoef(fit, nvars, nx, vnames) :an empty model has been returned; probably a convergence issue
更新:问题似乎在于当 family="poisson"时 glmnet 估计的截距与 lambda 本身的设置无关。
fit=glmnet(x,y,family="poisson")
#intercept should be close to 0
coef(fit)[1,]
#but it is huge
#passing in intercept=FALSE however generates the convergence error again
fit=glmnet(x,y,family="poisson", intercept=FALSE)
最佳答案
我认为您对 lambda 和 alpha 感到困惑。 alpha
是惩罚因子,设置为 0 会给你岭回归。通常它被设置为介于 0.1 和 1 之间的值。lambda
通常未设置,帮助页面上有一条警告不要将其设置为单个值:
WARNING: use with care. Do not supply a single value for lambda
我不知道为什么您认为套索惩罚应该与未惩罚的泊松模型相同。惩罚模型的全部意义在于较少受到普通回归模型的偏差和约束的影响。
关于r - 当家庭 ="poisson"的 lambda=0 时,glmnet 缺乏收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19326096/
我不明白为什么我的 Java 代码没有出现错误。我有一个使用泛型类型的类: import java.util.*; // For ArrayList public class Hat { pub
我正在 Pygame 中开发一款射击类游戏供我自己娱乐,在创建玩家的基本 Action 的过程中我遇到了一些疑问,“Dash”和“Switch”均未按预期工作。 ... def switch(self
当我加载一个显示的网页时,为什么我要为每个图像的 HTTP 请求打开一个新的 TCP 连接?为什么在页面加载期间不重复使用单个 TCP 连接? 最佳答案 我认为浏览器通常会打开多个连接,以便它可以并行
我一直在谷歌搜索,只能找到 a trivial example Compute Capability 3.0 中的新动态并行性在其链接的其中一份技术简报中介绍 from here .我知道 HPC 专
我使用 Telerik 和 Microsoft CDN,分别用于它们各自的 AJAX 工具包。两者在 99% 的情况下都工作得很好。然而,我最近在两家不同的咖啡馆工作并访问了我的网站:第一家咖啡馆不允
我在一家从事网络托管的 IT 公司工作,而且我个人对 SQL 非常缺乏经验*。 *看起来很糟糕 我的一个客户正在尝试将 Epos 系统与其 magento 网站集成,在 Epos 集成过程中,他们遇到
我的代码现在有一个循环,它调用蒙特卡洛函数来计算多个样本的简单积分(y=x,从 0 到 1),并将总时间和积分值写入文本文件。然后循环增加线程数并继续前进。现在大约有 8 个线程,时间峰值约为 2.6
所以 HTTP/2 增加了我想要利用的性能。出于各种原因,我不喜欢连接我的 javascript,而 HTTP/2 无论如何都会使它变得不必要。 但是。我正在开发一个将部署在客户本地网络中的网络应用程
我写了一个非常简单的 Haskell 程序: main = print $ sum $ map read ["55", "99", "101"] 鉴于我过去的经验,我预计会得到一个“歧义类型”错误,因
我是一名优秀的程序员,十分优秀!