1

我使用 R 包 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)
}

新编辑(9.1.2017):上述上下文的重要后续问题。

据我所知,我的代码中没有使用任何“伪随机对象”(例如生成随机数等),因为我基本上适合树(使用 r-package rpart)和提升树(使用 r-package adabag ) 到一个大数据集。当我执行我的代码时,你能解释一下“伪随机性”在哪里进入吗?

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

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

4

1 回答 1

1

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

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

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

请注意,在信息安全的情况下,拥有一个(伪)随机种子很重要,它不容易被暴力攻击猜到,因为(简而言之)知道安全程序内部使用的种子值为其铺平了道路被黑。在科学和统计中,情况正好相反——你和任何与你分享代码/研究的人都应该知道种子,以确保可重复性。

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

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

于 2016-12-24T04:53:10.673 回答