【问题标题】:In R, how can I explain the graph in glmnet package?在 R 中,我如何解释 glmnet 包中的图形?
【发布时间】:2020-06-17 09:57:49
【问题描述】:

我正在尝试理解“glmnet”包。 但我还有一些问题。 1. 大数是什么意思 (31, 31, 31.... 3, 2, 2, 2) 2.什么是垂直虚线?为什么选择两条线? 3. 为什么会出现曲线图案??

library(glmnet)
data(MultinomialExample)
cvfit=cv.glmnet(x, y, family="multinomial", type.multinomial = "grouped")
plot(cvfit)

而且,下面是 cvfit(result) 的绘图

谢谢

【问题讨论】:

  • 你是怎么得到 31 的?大声笑,如果我运行你的代码,我得到 30
  • 我不知道。但就我而言,我得到了 31 个。
  • 好的仔细检查..我不知道..,试着在下面回答你的问题

标签: r machine-learning statistics regression glmnet


【解决方案1】:

通过交叉验证,您试图在这种情况下找到弹性网络的 lambda 的最佳值。简而言之,弹性网络是套索和岭回归的混合体,其中岭回归试图将所有系数逼近零。 lambda(λ) 基本上告诉您将其强制为零的程度。

  1. 数字是非零系数的个数

在 x 轴上,您有不同的 lambda 值,glmnet 试图适应交叉验证。在最左侧,您的值接近于零,并且您会期望所有系数都不为零,这就是顶部的数字所代表的。你也可以在下面看到这个:

cvfit$nzero
 s0  s1  s2  s3  s4  s5  s6  s7  s8  s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 
  0   1   1   1   1   1   1   2   3   3   7   7   8   8   9   9   9  10  10  10 
s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 s32 s33 s34 s35 s36 s37 s38 s39 
 12  13  14  14  18  18  20  20  21  23  23  25  26  26  26  26  27  27  28  28 
s40 s41 s42 s43 s44 s45 s46 s47 s48 s49 s50 s51 s52 s53 s54 s55 s56 s57 s58 s59 
 29  29  30  30  30  30  30  30  30  30  30  30  30  30  30  30  30  30  30  30 
s60 s61 s62 s63 s64 s65 s66 s67 s68 s69 s70 s71 
 30  30  30  30  30  30  30  30  30  30  30  30 

来自小插曲:

nzero:每个“lambda”处的非零系数的数量。

  1. 这些线是具有最小偏差的 lambda 值,距离最小 lambda 1 se

y 轴是偏差,它告诉您在所有测试值中发生了多少错误。它越低,模型的预测能力就越好。您会期望得到一个最佳 lambda,它可以使您的预测误差最小。这是左起第一行。

cvfit$lambda.min
[1] 0.01291017

下一行是使用较少系数(因此更加简约)的 lambda,并且距离最佳预测模型还不算太远。这是第二行:

cvfit$lambda.1se
[1] 0.02717467

你可以在Friedman et althis post阅读更多内容

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 1970-01-01
    • 2013-09-11
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 2021-10-29
    • 2013-10-25
    相关资源
    最近更新 更多