【问题标题】:Content based recommender system with sklearn or numpy带有 sklearn 或 numpy 的基于内容的推荐系统
【发布时间】:2014-05-26 15:40:56
【问题描述】:

我正在尝试在 python/pandas/numpy/sklearn 中构建基于内容的推荐系统。

以下是所涉及的矩阵及其大小:

X: n_customers * n_features(包含每个客户的特征)

Y: n_customers *n_products(包含每个客户对每个产品的评分)

Theta:n_features * n_products

目的是学习 Theta,以便能够预测客户对所有产品的评分 (X*Theta)。实际上,Y 是一个稀疏矩阵,客户得分仅占产品总量的很小百分比。这就是 Y 包含很多 NaN 值的原因。

这是我的问题:

这是一个包含许多目标的回归问题(此处目标 = 产品)。但我只想对非空值进行回归。因为 NaN 的数量因一种产品而异,我该如何对其进行矢量化?

假设有 1000 种产品和 100 000 名客户,每个产品都有 20 个功能。

对于每个产品,我需要对非空值进行回归。所以如果没有向量化,我需要 1000 个不同的回归器,每个回归器学习一个长度为 20 的 Theta 向量。

如果可能的话,我想用 sklearn 解决这个问题。例如,岭回归考虑了多个目标(Y 作为矩阵)

我希望它足够清楚。

感谢您的帮助。

【问题讨论】:

  • 我不知道为什么你有空值,任何scipy.sparce 矩阵都表示缺失值为0。另外,你不知道有多少产品功能,对吧?
  • 实际上 Y 是我从 pandas 中的 pivot 命令构建的 DataFrame。我使用稀疏这个词来强调这样一个事实,即每个客户只对少数产品(例如从 2 到 6)进行评分,而产品却超过 1000 种。我为每个客户提供功能(比如说 20 个)。这在 X DataFrame (n_customers*n_features) 中表示。关于客户的所有特征都是已知的
  • 从你的问题来看,我不推荐sklearn.linear_model.ridge回归对象。是的,它们是多目标,但截至目前,这些目标不能通过例如任何方式链接或共享信息。协方差矩阵。由于您的问题有许多缺失值,因此隐式或显式使用目标产品之间共享的信息至关重要。您是否研究过矩阵完成技术?这不完全是您想要做的,但可能会有所帮助。例如,您可以将 X 和 Y 水平粘贴在一起并尝试估算缺失值。

标签: python numpy machine-learning scikit-learn recommendation-engine


【解决方案1】:

我相信您可以使用中心余弦相似度/pearson 相关性来完成这项工作,并利用协同过滤技术来实现这一目标

在使用 pearson co-relation 之前,您需要用零填充 Null(没有任何条目的字段),现在 pearson co-relation 将相似度矩阵集中在零附近,从而提供最佳推荐。

【讨论】:

    猜你喜欢
    • 2011-09-04
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2017-12-07
    • 2012-07-15
    • 2015-01-16
    • 2018-06-23
    相关资源
    最近更新 更多