通过两次拟合增强树来获得不同的值

时间:2016-12-24 01:18:18

标签: r machine-learning boosting

我使用R-package adabag将增强树拟合到(大)数据集(140个观测值,包含3 845个预测变量)。

  

我使用相同的参数和相同的数据集执行此方法两次,并且每次返回不同的精度值(我定义了一个简单的函数,给出了数据集的准确性)。   我是否犯了错误,或者通常是在每个拟合中,不同的精度值会返回?这个问题是基于数据集很大的事实吗?

在给定预测值和真实测试集值的情况下返回精度的函数。

    err<-function(pred_d, test_d)
{
  abs.acc<-sum(pred_d==test_d)
  rel.acc<-abs.acc/length(test_d)

  v<-c(abs.acc,rel.acc)

  return(v)
}

new Edit(9.1.2017): 关于上述背景的重要问题。

  

据我所知,我不使用任何&#34;伪随机对象&#34; (例如在我的代码中生成随机数等),因为我基本上适合树(使用r-package rpart)和增强树(使用r-package adabag)到大型数据集。你能解释我在哪里&#34;伪随机性&#34;进入,当我执行我的代码?

编辑1:树也发生了类似的现象(使用R-package rpart)。

编辑2:数据集虹膜上的树(使用rpart)没有发生类似的现象。

1 个答案:

答案 0 :(得分:1)

如果您没有设置种子(使用set.seed()),则没有理由期望获得相同的结果。

如果您正在进行统计而不是信息安全,那么您设置的种子无关紧要。您可以使用几种不同的种子运行模型来检查其灵敏度。你只需要在涉及伪随机性的任何事情之前设置它。大多数人在代码的开头设置它。

这在统计学中无处不在;它影响所有语言的所有概率模型和过程。

请注意,在信息安全的情况下,拥有一个(伪)随机种子非常重要,这种种子不会被强力攻击轻易猜到,因为(简而言之)知道安全程序内部使用的种子值会铺平道路因为它被黑客入侵。在科学和统计学中,情况正好相反 - 您和您共享代码/研究的任何人都应该了解种子,以确保重复性。

https://en.wikipedia.org/wiki/Random_seed

http://www.grasshopper3d.com/forum/topics/what-are-random-seed-values