【发布时间】:2016-12-03 21:53:06
【问题描述】:
我想使用 spark mllib 和协同过滤技术中的 ALS 算法构建一个推荐应用程序。我的数据集具有字符串形式的用户和产品特征,例如:
[{"user":"StringName1", "product":"StringProduct1", "rating":1},
{"user":"StringName2", "product":"StringProduct2", "rating":2},
{"user":"StringName1", "product":"StringProduct2", "rating":3},..]
但Rating 方法似乎只接受用户和产品功能的 int 值。这是否意味着我必须构建一个单独的字典来将每个字符串映射到一个 int?我的数据集将包含用户和产品的重复条目。mllib 库本身是否有内置解决方案?
感谢您的帮助!
编辑:不,这不是重复的,因为该问题的答案似乎不适合我的情况。 spark.ml.recommendation.ALS.Rating 库似乎不支持 user 或 item 的字符串值。我需要这种支持。
【问题讨论】:
-
表格或数据集是什么?是
RDD[(String, String, Float)]吗? -
@JohnTitusJungao 是的。
-
@void JohnTitusJungao 的回答应该足够了。你不会在这里期待别的,对吧?
-
@zero323 不,这对我有好处。只是想知道 ml 模块是否有一个解决方案可以接受用户或项目的字符串值,因为您将其标记为重复。
-
其实我错了。我以为字符串有
specializedALS 版本,但它只有Int和Long。不过,您可以使用StringIndexer和管道。
标签: scala apache-spark apache-spark-mllib collaborative-filtering