在 R 中,如何解释 glmnet 包中的图表?

Seu*_*eon 2 statistics regression r machine-learning glmnet

我试图理解“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)
Run Code Online (Sandbox Code Playgroud)

并且,下面是 cvfit(结果) 的绘图

在此输入图像描述

谢谢

Stu*_*olf 5

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

\n\n
    \n
  1. 这些数字是非零系数的数量
  2. \n
\n\n

在 x 轴上,您有不同的 lambda 值,glmnet 试图与交叉验证相匹配。在最左边,您的值接近于零,并且您期望所有系数都非零,这就是顶部数字所代表的。您还可以在下面看到这一点:

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

这是来自小插图:

\n\n
\n

nzero:每个 \xe2\x80\x98lambda\xe2\x80\x99 处的非零系数数。

\n
\n\n
    \n
  1. 这些线是具有最小偏差的 lambda 值,并且距最小 lambda 1 se
  2. \n
\n\n

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

\n\n
cvfit$lambda.min\n[1] 0.01291017\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
cvfit$lambda.1se\n[1] 0.02717467\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以在弗里德曼等人的这篇文章中阅读更多内容

\n