基于隐式反馈的建议 - Spark Mlib

时间:2015-12-24 18:30:08

标签: apache-spark logistic-regression apache-spark-mllib collaborative-filtering

我从用户那里得到了关于他们与不同产品交互的隐含反馈。以下是数据集的结构:user_id,product_category,event_date,view_count,purchase_count

根据这些数据,我试图预测用户对产品类别的亲和力得分。 MLIB隐式表单期望输入数据集的格式为Rating(user:Int,product:Int,rating:Double)。但是如何包含view_count和purchase_count?

如果不能使用MLLIB,我可以使用任何其他方法。我的产品类别有限(仅限8个产品类别)。在这种情况下,我可以使用8个逻辑回归模型来预测亲和力吗?

由于

2 个答案:

答案 0 :(得分:4)

您所描述的内容称为multinomial logistic regression,用于multiclass classification。这是典型logistic regression的概括,它只有2个结果(二元)。

看起来你正试图应用一个collaborative filtering模型,正如你所指出的那样在这种情况下不会起作用。

查看multinomial logistic regression的Spark ML / MLlib文档。

您可以将每个输入(view_count和purchase_count)视为单独的要素(输入数据),以使用现有的已知数据(包括结果)来训练模型。

当您对新数据进行评分/预测时,模型将返回每个可能结果的概率:8,在这种情况下......每个产品类别为1。然后选择概率最高的类别。

以下是一些相关的Spark文档链接:

Spark的Logistic回归编程指南

http://spark.apache.org/docs/latest/mllib-linear-methods.html#logistic-regression

当前spark.mllib Logistic回归API

http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.classification.LogisticRegressionModel

http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.evaluation.MulticlassMetrics

新的spark.ml Logistic回归API

(注意:目前这只支持二进制,逻辑回归,但是当它可用时你应该迁移到它)

http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.ml.classification.LogisticRegression

http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator

答案 1 :(得分:0)

您是在尝试预测亲和力得分还是继续推荐基于亲和力的推荐?例如,您可能具有购买与访问的比率,将其保持为评级(此处为亲和度评级)并执行推荐