如何在 Spark 的 Bucketed Random Projection 中选择桶的长度?

Gio*_*gio 8 hash scala apache-spark

我应该如何在 Spark 的 LSH 算法Bucketed Random Projection 中最佳选择桶长度?

这是使用 .setBucketLength() 设置的参数,例如来自 Spark 文档:

  val brp = new BucketedRandomProjectionLSH()
  .setBucketLength(2.0)
  .setNumHashTables(3)
  .setInputCol("keys")
  .setOutputCol("values")
Run Code Online (Sandbox Code Playgroud)

任何支持铲斗长度选择的理论参考将不胜感激。

我在网上能找到的唯一建议是这个,它没有解释所选择的启发式方法的选择。

指定bucketLength的值,如果输入向量被归一化,pow(numRecords, -1/inputDim)的1-10倍将是一个合理的值。

因此,我不确定为什么这种启发式方法应该普遍有效。