在 glmnet 包中类型测量差异?

问题描述 投票:0回答:2

glmnet 包中使用“mse”和“class”有什么区别?

log_x <- model.matrix(response~.,train)
log_y <- ifelse(train$response=="good",1,0)
log_cv <- cv.glmnet(log_x,log_y,alpha=1,family="binomial", type.measure =  "class")
summary(log_cv)
plot(log_cv)

对比

log_x <- model.matrix(response~.,train)
log_y <- ifelse(train$response=="good",1,0)
log_cv <- cv.glmnet(log_x,log_y,alpha=1,family="binomial", type.measure =  "mse")
summary(log_cv)
plot(log_cv)

我注意到我的曲线或绘图中的平滑度略有不同,并且准确性有百分之几的差异。但是对于预测二项式类响应,是否有一种类型的测量比另一种更合适?

r
2个回答
2
投票

这取决于您的案例研究以及您想从模型中学到什么。来自帮助文件

默认为 type.measure="deviance",使用平方误差 对于高斯模型(又名 type.measure="mse" )[...]。类型.测量=“类” 仅适用于二项式和多项式逻辑回归,并给出错误分类 错误

因此,您必须问自己,在您的问题中,您是否想要最小化错误分类误差或均方误差。

对于哪一个最好没有直接的答案。它们是两个不同的统计数据,模型根据交叉验证生成的不同模型来决定最佳的惩罚参数是什么。


0
投票

对于二项式族,cv.glmnet 中的默认值不是错误分类错误,而是偏差。

其次,你永远不会对二项式族使用均方误差损失。

cv.glmnet 中二项式族的适当类型测量是“default”(偏差)、“auc”(auc)和“class”(错误分类错误)。就是这样。

© www.soinside.com 2019 - 2024. All rights reserved.