全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2780 3
2017-11-10
用k-fold cross validation生成的error来判断哪个模型更加合适的时候,
使用cv.glm()函数前为什么要set.seed?
另外发现seed不一样,生成的结果也不一样,例如下面的code:
1、
library(boot)

set.seed(10)
cv.error=rep(0,5)
for (i in 1:5){
  glm.fit=glm(nox~poly(dis,i),data=Boston)
  cv.error[i]=cv.glm(Boston,glm.fit,K=10)$delta[1]
}

当把seed设置为10时,结果是:
> cv.error
[1] 0.005490919 0.004095812 0.003863046 0.003918877 0.004121742


此时观察结果,应该是第三个模型最优。

2、seed为1时,结果如下:
> cv.error
[1] 0.005536329 0.004077147 0.003899587 0.003862127 0.004298590
此时应该是第四个模型最优。


请问为什么会出现这种情况嘞??
set.seed影响的到底是什么????????
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-11-12 11:31:51
liyuell 发表于 2017-11-10 15:25
用k-fold cross validation生成的error来判断哪个模型更加合适的时候,
使用cv.glm()函数前为什么要set.se ...
set.seed是设置随机种子,是为了让随机的运行结果能够重现。设置成不同的数当然就是不同的随机值了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-13 11:30:47
就是你需要重现时,就输入对应的种子数,就会重现对应的数据。
至于你说不同的种子数, 结果不一样, 说明两个模型效果差不多, 有随机波动,需要多几次随机数据的测试,看看哪个模型得分最好。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-1-2 16:18:06
jameschin007 发表于 2017-11-13 11:30
就是你需要重现时,就输入对应的种子数,就会重现对应的数据。
至于你说不同的种子数, 结果不一样, 说明 ...
懂了!谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群