Spark中的ALS module假定数据采用(user, product, rating)
元组的形式。使用implicitPrefs=True
时,评级被认为是隐含评级,因此等于0的评级具有特殊含义,不会被视为未知。如Hu et al (2008)所述,隐式评级被ALS用作权重。使用隐式评级时,"缺失"评分need to be passed directly to the algorithms as zeros。
我的问题是:ALS模块是否需要用户提供"缺失"隐式评级为零,还是自动用零填充缺失的单元格?
举个例子,假设我有三个用户,三个产品及其评级(使用(user, product, rating)
格式):
(1, 1, 2)
(1, 2, 1)
(2, 2, 3)
(3, 1, 1)
(3, 3, 2)
因此,用户1没有对产品3进行评级,用户2没有评价1和2,等等。我可以将这些数据直接传递给ALS吗?或者,我是否必须扩展它所有3 * 3种可能的组合,其中未评级产品的评级为零,即
(1, 1, 2)
(1, 2, 1)
(1, 3, 0)
(2, 1, 0)
(2, 2, 3)
(2, 3, 0)
(3, 1, 1)
(3, 2, 0)
(3, 3, 2)
答案 0 :(得分:1)
这可能不被视为答案。
当然,无论是隐含的还是明确的,您都不需要传递缺失的评分。
火花的优势之一是使用稀疏矩阵表示来计算预测矩阵。
如果您想了解更多关于稀疏矩阵的信息,可以查看以下链接:
What are sparse matrices used for ? What is its application in machine learning ?
免责声明:我是该链接中答案的作者。