Spark MLlib协同过滤

时间:2014-05-19 16:07:06

标签: apache-spark collaborative-filtering

我正在使用MLlib为Spark中的隐式数据构建推荐系统。我试图找到一个已经实现的功能,向在训练期间没有看到的用户提出建议,我可以找到任何东西。有谁知道这样的功能是否存在?否则任何人都对如何有效实施它有任何建议?

1 个答案:

答案 0 :(得分:2)

这没有任何功能。实际上,根据您从MLlib获得的基于RDD的简单模型,制作即时推荐并不是真的可行。您可以在此博文中看到http://blog.cloudera.com/blog/2014/03/why-apache-spark-is-a-crossover-hit-for-data-scientists/

中的实现
def recommend(questionID: Int, howMany: Int = 5): Array[(String, Double)] = {
  // Build list of one question and all items and predict value for all of them
  val predictions = model.predict(tagHashes.map(t => (questionID,t._1)))
  // Get top howMany recommendations ordered by prediction value
  val topN = predictions.top(howMany)(Ordering.by[Rating,Double](_.rating))
  // Translate back to tags from IDs
  topN.map(r => (tagHashes.lookup(r.product)(0), r.rating))
}

lookup让它变得非常缓慢。要快速实施建议(例如< 10ms),您必须将RDD合并为内核表示。

但是,如果您只需要批量推荐,那么可以通过连接使上述方法变得高效。