我们要求根据现有客户对客户缺失人口统计数据进行估算。创建新客户时,如果我们缺少其人口统计数据,我们需要使用现有客户通过其他属性查找最近的等效客户来对其进行估算。
为此,我们目前使用R使用余弦相似性。以下是使用的函数。
csim <- function(a, b){
return(crossprod(as.numeric(a), as.numeric(b)) /
sqrt(crossprod(as.numeric(a)) * crossprod(as.numeric(b))))
}
我们有100K的抽样客户名单。每天我们都会有近6000名新客户需要一些人口统计数据来估算。因此,对于每个新客户,我们使用100K的List计算余弦距离,并使用最近客户的属性对它们进行计算。
上述过程涉及R中的100K * 6000次迭代,即使使用doParllel包也需要很长时间。我想在火花中做同样的事。
我可以看到我们有RowMatrix类,它有方法columnSimilarities()。但它似乎无法解决我的目的。
我有输入RDD-输入客户列表 - 6k到7k矢量 我有SampleRDD-客户样本用于估算 - 100K向量。
对于inputRDD中的每个向量,我需要从Sample RDD找到最近的向量。
请帮助提出建议