在Spark中,随机森林分类器的准确率和训练数据占用的分区数有关系吗?
例如,我们将训练数据存储在10个分区上,并训练一个RandomForest分类器(RF1).然后我们将训练数据重新分区在20个分区上,并训练第二个RandomForest分类器(RF2).RF1和RF2在技术上有什么区别吗?
这个问题看起来很有逻辑,但实际上有点明显。
如果你重新分区,你就会改变数据的分布,每次都是如此。同样的数据在N个或N+M个分区上取训练数据时,通常不会产生同样的结果。
val Array(trainingData, testData) = data.randomSplit(Array(0.7, 0.3))
那么,获得你的训练和测试、验证数据,在参数相同的情况下,就是一组不同的结果。
所以,你使用的是不同的训练数据,很可能会因此得到稍微不同的结果。
所以,简短的答案是肯定的,也是否定的。有一个间接的关系,也可能不是你问问题时想的那样。不能说分区越多就意味着精度越高。
我跑了很多次。
...
val data = data0.repartition(N) // N varying
...
val Array(trainingData, testData) = data.randomSplit(Array(0.7, 0.3),seed=333)
...
我注意到,随着分区数量从较低到较高,我得到了不同的精度,有时较高,有时不高。