Ars*_*lam 14 apache-spark word2vec apache-spark-mllib
根据mllib.feature.Word2Vec - spark 1.3.1文档[1]:
def setNumIterations(numIterations: Int): Word2Vec.this.type
Run Code Online (Sandbox Code Playgroud)
设置迭代次数(默认值:1),该值应小于或等于分区数.
def setNumPartitions(numPartitions: Int): Word2Vec.this.type
Run Code Online (Sandbox Code Playgroud)
设置分区数(默认值:1).使用较小的数字来提高准确性.
但是在这个Pull Request [2]中:
为了使我们的实现更具可伸缩性,我们分别训练每个分区,并在每次迭代后合并每个分区的模型.为了使模型更准确,可能需要多次迭代.
问题:
参数numIterations和numPartitions如何影响算法的内部工作?
考虑到以下规则,在设置分区数和迭代次数之间是否需要权衡?
更准确 - >更多迭代a/c到[2]
更多迭代 - >更多分区a/c到[1]
更多分区 - >精度更低
当增加分区数量时,会减少每个分区训练的数据量,从而使每个训练步骤(词向量调整)更加“嘈杂”且不太确定。Spark 的实现通过在增加分区数量时降低学习率来响应此问题,因为有更多进程更新向量权重。