我用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吗?
恳请有相关经验的大神来解答一下这个疑问。