问题标签 [recommender-systems]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1456 浏览

keras - 平均平均精度 (mAP) 度量 keras

我正在训练一个 keras 模型,该模型将项目嵌入成对并输出二进制分类(接近 word2vec)。我需要在每个 epoch 之后为推荐系统找到模型的 mAP,以便能够进行比较。除了每次使用新嵌入从头开始计算之外,我真的找不到其他方法。如果有人有办法,我将不胜感激。

0 投票
2 回答
814 浏览

python - 根据兴趣匹配人

以下问题:通过填写表明个性、生活方式、兴趣等的个人资料提供的数据,根据兼容性分数匹配用户。

每个属性都是真 (1) 或假 (0) 的标签(例如,性格冷静的属性)。假设我们想要找到两个用户的兼容性。

从 panda DataFrame 中提取个性

从用户 3 中减去用户 2,对差异进行平方,然后将差异的总和与最大可能偏差(一个类别的属性数量等个性)相关联。倒数是相似度的分数。所有类别(例如生活方式)都是如此

每个用户都与 DataFrame 中的所有其他用户进行比较:

根据特定类别的相似性对用户的重要性,通过将相似性分数乘以偏好数据框来加权相似性分数:

结果将是从 0 到 1 的兼容性分数。

它工作得很好,但是运行它需要相当多的时间,特别是如果比较的用户数量(100+)增加了。有什么建议可以加快速度,使代码更容易吗?

0 投票
0 回答
168 浏览

r - Recommenderlab:接收多个用户的重复预测

我正在使用 R 中的 Recommenderlab 构建一个推荐系统,为新用户提供精酿啤酒建议。

但是,在运行模型时,我会收到每个用户对大部分训练数据集的相同预测,或者收到“字符(0)”作为输出。如何接收与每个用户关联且不重复的预测?

我正在使用的数据集可以在这里找到:https ://www.kaggle.com/rdoume/beerreviews/version/1

我尝试将数据框直接转换为矩阵,然后转换为 realRatingMatrix。

为了获得任何建议,我需要在将数据框转换为矩阵之前使用 data.table 库中的“dcast”函数。

我还尝试从矩阵中删除第一列以删除用户 ID。

需要注意的一点是,在对数据进行采样时,可能有几行“reviewer”为空白,但评分和啤酒 ID 在那里。

上面的代码将导致:

将数据框转换为矩阵,然后将 realRatingMatrix 转换为不首先转换为表格的结果是用户的推荐结果为:

首先使用“dcast”函数,然后将数据帧转换为矩阵并删除第一列,然后转换为 realRatingMatrix 为几乎每个用户返回相同的预测:

任何帮助是极大的赞赏。

0 投票
0 回答
65 浏览

collaborative-filtering - 协同过滤,大数据的运行时方法

我有一个大数据集。近 300,000 个用户和 3000 万行。在运行时处理用户-用户过滤的最佳方法是什么?

在运行时甚至离线完成时,逐个用户迭代非常慢。

数据现在在一个mysql数据库中。

谢谢。

0 投票
1 回答
608 浏览

python - 如何通过 LightFM python 包生成用户到用户推荐?

我正在通过以下代码创建数据集:

我通过以下方式生成火车模型:

然后我使用cosine_similarity方法sklearn来获得相似之处:

但是当打印similarities.shape它的回报时:

虽然我有 5 个用户并且我认为它必须是 (5,5) ,但我错了吗?像这样的矩阵:

如何让用户及其分数推荐给用户?谢谢

我的 LightFM 版本是:1.15

我使用python 3.6

0 投票
1 回答
74 浏览

r - 使用箱线图查找和可视化最佳和最差项目

我是来自Jester项目的笑话数据集 2 ( jester_dataset_2.zip )的数据集,我想将笑话分成具有相似评级的笑话组,并适当地可视化结果。

数据看起来像这样

这是Dataset 2的一个子集。

我发现我不能使用方差分析,因为同质性不一样。因此,我使用 R 中 agricolae 包中的 Kruskal–Wallis 方法。

这里是组。

问题是我不知道如何适当地可视化笑话组。我正在使用箱线图来显示每个笑话的置信区间。

根据 KW 测试给出的颜色,以某种方式为每个盒子(每个笑话)涂上适当的颜色会很好。

我怎么能那样做?或者有没有更好的方法在数据集中找到最好和最差的笑话?

0 投票
0 回答
50 浏览

machine-learning - 在矩阵分解中设置电影评分限制

有没有办法限制矩阵分解算法的电影评分输出?我有一个评分从 1 到 5 的矩阵,但是在训练模型后,有些电影的评分在 5 以上。这正常吗?有没有办法使收视率正常化,以使收视率严格在 1-5 之间。

在下面的链接https://www.researchgate.net/publication/282663370_Film_Recommendation_Systems_using_Matrix_Factorization_and_Collaborative_Filtering中,他们在运行算法之前提到了规范化,我还不能尝试,但我仍然没有感觉它会解决问题。

0 投票
1 回答
210 浏览

python - lightfm 错误:并非所有估计的参数都是有限的,您的模型可能已经发散

我正在运行这个非常简单的代码:

使用以下输出:

我所有的 Scipy 稀疏矩阵都被归一化(即值是01)。

我试图改变学习计划和学习率,但没有结果。

我已经检查过,仅当我将项目特征添加到方程式时才会发生这种情况。仅使用交互或交互 + 用户功能运行 lightfm 时没有错误。

AFAIK,我已经安装了最新版本:

任何的想法?谢谢!

更新 1

我想知道我的稀疏矩阵是否太稀疏了......不过,我尝试过非常少的形状,并且出现了同样的错误:

确实,我做错了什么...

更新 2

我想我发现了问题......我做了以下实验:

即我像往常一样有例外。现在,如果你观察交互矩阵,它有一个关于用户和项目的交互,在用户和项目特征矩阵中,它们的所有特征分别设置为 0。所以,让我们在用户特征矩阵中改变它,例如:

瞧!

我们可以对项目特征矩阵做同样的事情:

因此,我将尝试找到一种过滤与全零用户和项目功能相关的交互的方法,然后我会发布它;)

0 投票
0 回答
95 浏览

pyspark - 'Param' 对象上的错误不可调用 - 用于推荐系统的 Apache Spark

我正在使用 apache spark 作为推荐系统。在评估部分,为了找到准确率和召回率,我得到了错误。

代码如下所述



我提到的错误是

“'Param' 对象不可调用”。

请任何人都可以建议我解决方案。提前致谢。

0 投票
0 回答
21 浏览

python - 排除交互项目并返回前 N 个建议的包?

我有兴趣了解为什么现有推荐系统库中似乎没有很多实现直接为用户返回前 N 个推荐。

我刚开始构建我的第一个推荐系统项目,并惊讶地发现有多少库和教程以类似的结尾

而不是提供一个函数来为所有用户返回前 N 个推荐。我通常必须计算每个用户和项目向量的乘积,将已购买项目的分数更新为 -1,这样它们就不会被选中,然后对每个用户的项目进行部分排名以返回前 N 个推荐。

我想要这个功能的原因是我想离线训练我的模型并将结果保存到 DB 中,该 DB 被馈送到仪表板。仅保存模型嵌入会占用更多存储空间,并且为每个用户重新计算前 N 个项目会导致太多延迟。

为什么这个过程没有被广泛模块化?那里有没有实现我不知道的库或者这不是常见的做法?