【发布时间】:2022-07-26 18:07:04
【问题描述】:
我正在尝试构建产品推荐器。我正在使用 pyspark ml 推荐 ALS 矩阵分解模型。我有类似下面示例数据的数据,其中有客户和产品 ID 以及客户购买产品的次数 (prch_cnt)。我正在尝试为隐式偏好训练模型。我想知道的是在将它提供给模型之前是否需要对我的 prch_cnt 进行标准化。例如,cutomer_id=5 和 product_id=1 下面的 prch_cnt 应该是 prch_cnt=3/(3+1+1) 还是 prch_cnt=3 就可以了?我的理解是对于像评级这样的明确数据,每个产品的值范围通常是固定的(比如 1 到 5 星),否则你必须对其进行标准化。我想知道是否具有固定范围的可能值或匹配比例,是否也需要隐式?
数据:
+------------+--------+-------------------+
|customer_id |prch_cnt|product_id |
+------------+--------+-------------------+
|5 |3.0 |1 |
|5 |1.0 |2 |
|5 |1.0 |2 |
|7 |10.0 |1 |
|7 |1.0 |2 |
|9 |150.0 |2 |
+------------+--------+-------------------+
代码:
from pyspark.ml.recommendation import ALS
als = ALS(implicitPrefs=True,
nonnegative = True,
userCol="customer_id",
itemCol="product_id",
ratingCol="prch_cnt",
coldStartStrategy="drop")
model = als.fit(training)
# top 5 customer recs
userRecs = model.recommendForAllUsers(5)
【问题讨论】:
标签: pyspark recommendation-engine apache-spark-ml matrix-factorization