【问题标题】:input for Alternating Least Square交替最小二乘的输入
【发布时间】:2018-01-03 01:56:18
【问题描述】:

我们正在将 ALS 用于通过 Spark/Scala 基于用户/点击数据的推荐模型。

评分栏是一个分数[0,1]

val als = new ALS()
    .setImplicitPrefs(true)
    .setRank(myrank)
    .setRegParam(mylambda)
    .setAlpha(myalpha)
    .setMaxIter(numIter)
    .setUserCol("myuseridx")
    .setItemCol("myitemidx")
    .setRatingCol("rating")
val model = als.fit(training)

我的问题是:隐式模型的输入数据在技术上是否必须包含所有用户项目组合,即那些没有被购买的用户项目组合?

【问题讨论】:

    标签: scala apache-spark collaborative-filtering


    【解决方案1】:

    ALS 通过固定用户或项目矩阵并使用最小二乘法来解决推荐问题。本质上,对于隐式数据集,这意味着所有未设置为 1 的项目都被视为零。所以你只需要包括积极的意见。

    这里有更多讨论: http://yifanhu.net/PUB/cf.pdf

    【讨论】:

    • "与显式数据集不同,这里的模型应该将所有用户项目偏好作为输入,包括那些与任何输入观察无关的偏好(因此暗示零偏好)。这是至关重要的,因为给定的观察结果本质上偏向于积极的偏好,因此不能很好地反映用户的个人资料。但是,将所有用户项目值作为模型的输入会引发严重的可扩展性问题“
    • 是的,没错。正如我所提到的,即使您没有明确设置零,模型也会将它们视为零。
    • 这句话来自:yifanhu.net/PUB/cf.pdf 但现在我记得超参数 alpha 的用途是什么。我想你是对的。但现在我还有一个问题,如果你不介意帮助我的话。如何计算模型的 AUC 分数?我有我的训练集的评级标签,如果我遵循不将零值放在我的 RDD[Ratings] 中的逻辑,我很难理解如何计算我的 TP - FP - TN - FN 分数。谢谢
    • 我的意思是没有必要输入零,因为模型会考虑它们(它会存储在一个稀疏向量中,这样可以更有效地评分和使用)。但是为了评估,你会假设零是存在的(即用户没有购买的项目意味着用户不喜欢)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多