全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
10758 9
2017-06-01
我用R语言的glmnet包做Lasso回归,做的是二分类,代码如下:

g <- cv.glmnet(xd, yd,family="binomial",type.measure="auc", nfolds = 10)
g$lambda.1se #最佳lambda值
g.best <- g$glmnet.fit #对应的最佳模型
g.coef <- coef(g$glmnet.fit, s = g$lambda.1se) #系数
xishu<-as.matrix(g.coef[which(g.coef != 0)] )#选择的变量
fn<-feature_NUM[which(g.coef != 0)]




我用以上代码提取了模型中的变量与系数。算出了每个例子的分值score


然后用predict进行预测:
pre <-predict(g$glmnet.fit,newx=xd,s=g$lambda.1se, type='link')

这一句算出的结果,我一直以为就是score,但和score对比完全不同
(不过我知道,把这个向量作logit变换就是type='response'的结果,然后以0.5作截点分类就是type='class'的结果)
用这个预测向量去预测效果不错,但我并不知道用type='link'得到的这个向量和score有什么关系?
如果是没关系的,那么这个预测向量又是怎样算出来的呢?说明文档说是线性模型的预测值,不就应该是score吗?


恳请有相关经验的大神来解答一下这个疑问。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-6-1 12:36:40
怎么美元符号把整个排版都弄乱了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-1 23:56:47
LZ说的score指的是什么?另外,如果用cv.glmnet拟合出来的model,可以直接用predict去预测(详见predict.cv.glmnet)。根据GLM的推导,link预测的值是linear predictor的值,也就是η,而η=Xβ。如果link function为g(这里是logit),那么E(Y|X)=g^{-1}(η)。最后,建议LZ直接type = \'class\'就好~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-2 14:15:08
foozhencheng 发表于 2017-6-1 23:56
LZ说的score指的是什么?另外,如果用cv.glmnet拟合出来的model,可以直接用predict去预测(详见predict.cv ...
我理解楼主说的score就是ita。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-2 15:03:47
foozhencheng 发表于 2017-6-1 23:56
LZ说的score指的是什么?另外,如果用cv.glmnet拟合出来的model,可以直接用predict去预测(详见predict.cv ...
谢谢大神回复解答
嗯,这个score应该就是η,就是每个变量的系数乘以对应的变量的值相加得到的,应该就是η=Xβ,但很奇怪用link预测的值和我自己另外写式子算的值不一样,不知道是不是中间做了什么变换?!
另外“如果link function为g(这里是logit),那么E(Y|X)=g^{-1}(η)。”这一句不太懂...
type=class效果没link的好
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-2 15:04:11
jameschin007 发表于 2017-6-2 14:15
我理解楼主说的score就是ita。
嗯,你说得没错
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群