我正在使用MLlib为Spark中的隐式数据构建推荐系统。我试图找到一个已经实现的功能,向在训练期间没有看到的用户提出建议,我可以找到任何东西。有谁知道这样的功能是否存在?否则任何人都对如何有效实施它有任何建议?
答案 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合并为内核表示。
但是,如果您只需要批量推荐,那么可以通过连接使上述方法变得高效。