【发布时间】:2014-05-26 20:30:41
【问题描述】:
我正在使用 MLlib 为 Spark 中的隐式数据构建推荐系统。我试图找到一个已经实现的功能来向在培训期间没有看到的用户提出建议,我可以找到任何东西。有人知道这样的功能是否存在吗?否则有人对如何有效地实施它有任何建议吗?
【问题讨论】:
标签: apache-spark collaborative-filtering
我正在使用 MLlib 为 Spark 中的隐式数据构建推荐系统。我试图找到一个已经实现的功能来向在培训期间没有看到的用户提出建议,我可以找到任何东西。有人知道这样的功能是否存在吗?否则有人对如何有效地实施它有任何建议吗?
【问题讨论】:
标签: apache-spark collaborative-filtering
没有这个功能。事实上,鉴于您从 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 让它变得很慢。要快速实施建议(例如
但是,如果您只需要批量推荐,则可以通过加入来提高上述方法的效率。
【讨论】: