Как вы извлекаете коэффициенты, соответствующие конкретному lambda
объекта cv.glmnet
, построенного на полиномиальной модели? Когда я пытаюсь сделать это, используя синтаксис, который можно использовать для биномиальной модели, функция coef
возвращает список разреженных матриц коэффициентов, а не конкретную разреженную матрицу.
Пример:
tempcv <- cv.glmnet(x=as.matrix(iris[,-5]), y=iris[,5], family="multinomial",
nfolds=20, alpha=0.5)
coefsMin <- coef(tempcv, s="lambda.min")
Когда я запустил это, я получил:
> coefsMin[[3]]
5 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) -19.091925
Sepal.Length .
Sepal.Width -3.755938
Petal.Length 4.355219
Petal.Width 8.909600
> coefsMin[[2]]
5 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 4.616488
Sepal.Length 1.649614
Sepal.Width .
Petal.Length -1.088160
Petal.Width -1.884997
> coefsMin[[1]]
5 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 14.475437
Sepal.Length -1.843070
Sepal.Width 5.312490
Petal.Length -2.698684
Petal.Width -5.708280
Таким образом, записи списка coefsMin
могут иметь разные уровни коэффициентов и разные степени разреженности. Все ли наборы коэффициентов как-то соответствуют одному и тому же значению lambda
? Если да, то есть ли причина (кроме разреженности) предпочесть одно другому?
Спасибо!