【发布时间】:2021-09-26 18:53:23
【问题描述】:
来自https://glmnet.stanford.edu/articles/glmnet.html#multinomial-regression-family-multinomial- 的工作示例:
data(MultinomialExample)
x <- MultinomialExample$x
y <- MultinomialExample$y
cvfit <- cv.glmnet(x, y, family = "multinomial")
cvfit 然后返回:
Call: cv.glmnet(x = x, y = y, family = "multinomial")
Measure: Multinomial Deviance
Lambda Index Measure SE Nonzero
min 0.009791 35 1.409 0.05611 14
1se 0.022619 26 1.455 0.04132 9
现在我想提取 9 个非零系数。然而:
sum(matrix(coef(cvfit)$'1') != 0)
sum(matrix(coef(cvfit)$'2') != 0)
sum(matrix(coef(cvfit)$'3') != 0)
返回 10、12、10。此外:
length(Reduce(intersect,
list(rownames(coef(cvfit)$'1')[matrix(coef(cvfit)$'1') != 0],
rownames(coef(cvfit)$'2')[matrix(coef(cvfit)$'2') != 0],
rownames(coef(cvfit)$'3')[matrix(coef(cvfit)$'3') != 0])))
返回 1。
对于 lambda.1se,非零 = 9 代表什么?当type.multinomial = "ungrouped"(family = "multinomial" 时默认设置cv.glmnet())时,我如何恢复这些变量名称和相应的系数?
谢谢
【问题讨论】:
标签: r multiclass-classification glmnet multinomial