问题标签 [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 回答
392 浏览

python - 计算大型稀疏矩阵中所有列之间的皮尔逊系数的最快方法是什么?

背景

我有一个稀疏数据集,例如Amazon Review Data。我想计算所有列之间的 PCC(皮尔逊相关系数)并将其保存以供以后重用。但是,获得结果很耗时。

例如,矩阵大约有 800k 列和 300k 行,但对于每一列,只有两三行有值,而其他行是 0(缺失值)。

是否有可能在合理的时间内得到 PCC 矩阵?

我试过的

我正在使用Python来完成这项工作。我尝试过的方法包括:

    1.

2.

在python中,我使用单个进程和单个线程来模拟执行for loop如下:

大约需要200天...

有什么解决办法吗?

因此,您能帮我解决这个问题,或者给我另一个角度考虑吗?

感谢您的200 天

0 投票
1 回答
50 浏览

machine-learning - 如何根据标签创建推荐人?

我正在使用 PHP 开发一个电子学习平台。如果您未通过特定问题,它会推荐视频。我如何着手创建接收标签并推荐相关视频的推荐系统?

csv 文件包括以下列:

  1. vid_id - 视频的主键和 id。
  2. ques_id - 外键。
  3. vid_name - 视频的名称。
  4. vid_tags - (1+1, 个位, 加法, 1 级) 形式的一些标签。

上面的标签也在类似的问题表中。

如果问题有标签(1 + 1,个位数,加法,1 级),我想制作接受上述标签的推荐器与具有相似标签的不同视频进行比较并给出推荐。

0 投票
1 回答
293 浏览

r - R如何从推荐实验室对象中获取关联规则(LHS,RHS,支持,置信度,提升)?

我目前正在使用R推荐器实验室构建产品推荐,在计算AR推荐器之后,我希望了解关联规则,但我找不到任何为什么要从推荐器对象中提取完整的关联规则。

下面是示例数据集

将矩阵转换为 binaryRatingMatrix

使用训练数据创建基于用户的 CF 推荐器

查看 AR 推荐对象,r@model$rule_base我发现“rule_base”

问题:如何从推荐对象中提取关联规则作为数据框?

  • 获取带有列的关联规则数据框(LHS、RHS、支持、置信度、提升、计数)
0 投票
0 回答
58 浏览

machine-learning - 为什么 ALS 可以很容易地并行计算?

我知道 ALS 可以部分并行计算,因为我们可以独立使用行/列来计算项目/用户潜在特征,但是如果我们已经计算了 user_latent 特征,我们将需要 item_latent 特征,以便下一步计算 user_latent 特征等等上。

所以,我的问题是它可以进一步优化吗?或者我们可以并行处理一个大矩阵这一事实对于实际应用来说已经足够了。

0 投票
1 回答
856 浏览

python - 基于余弦相似度的item-item推荐

作为我正在构建的推荐系统的一部分,我想实现基于余弦相似度的项目推荐。理想情况下,我想计算由 2048 个特征的 DenseVector 表示的 100 万个项目的余弦相似度,以便获得与给定项目最相似的前 n 个项目。

我的问题是我遇到的解决方案在我的数据集上表现不佳。

我试过了 :

这是使用 columnSimilarities() 的解决方案

pyspark 是否有更好的解决方案来计算余弦相似度并获得前 n 个最相似的项目?

0 投票
1 回答
14966 浏览

machine-learning - 了解 Precision@K、AP@K、MAP@K

我目前正在评估基于隐式反馈的推荐系统。我对排名任务的评估指标有点困惑。具体来说,我希望通过精确度和召回率来评估。

Precision@k 的优点是不需要对相关文档集的大小进行任何估计,但缺点是它是常用评估措施中最不稳定的,并且它的平均效果不好,因为相关文档的总数因为查询对 k 处的精度有很大影响

我自己注意到它往往非常不稳定,因此,我想对多个评估日志的结果进行平均。

我在想; 假设我运行一个返回以下数组的评估函数:

Numpy 数组包含每个用户的precision@k 分数。

现在,我的数据集中的所有precision@3分数都有一个数组。

如果我取这个数组的平均值,然后取 20 个不同分数的平均值:这是否等同于平均精度@KMAP@K,还是我理解的有点过于字面意思?

我正在写一篇带有评估部分的论文,所以定义的准确性对我来说非常重要。

0 投票
1 回答
658 浏览

python - 如何使用用户、文本数据调用 MultinomialNB.predict()?

我正在创建一个简单的推荐器,它会根据推文的相似性推荐其他用户。我使用 tfidf 对所有文本进行矢量化,并且能够将数据放入 aMultinomialNB但我不断收到尝试预测的错误

我试图将数据重塑为数组,但出现错误无法将字符串转换为浮点数。我什至可以对这些数据使用这个算法吗?我尝试了不同的列以查看是否得到结果,但位置错误相同。

数据看起来像这样

同样,我希望插入用户的推文和情绪,并根据相似性在数据中推荐另一个用户。

0 投票
0 回答
28 浏览

machine-learning - 评估推荐系统的选项

我创建了一个以这种方式工作的推荐系统:

- 每个用户选择一些过滤器,并根据这些过滤器生成一个分数

- 每个用户都使用基于这些分数的 k-means 进行聚类

- 每当用户收到建议时,我都会使用 pearson 的相关性来查看哪个用户与同一集群中的其他用户具有最佳相关性

我的问题是我不确定评估这个系统的最佳方法是什么?我已经看到一种方法是隐藏数据集的一些值,但对我来说并非如此,因为我没有预测分数。

有什么指标或我可以使用的东西吗?

0 投票
2 回答
448 浏览

algorithm - 在项目之间反复选择后确定排名的算法

我想编写一个小程序来帮助我根据大量一对一比较的结果对项目进行排名。

因此,如果我有 100 个项目,我会让用户在这组随机选择的两个项目之间反复选择。假设总共有 10.000 张选票。项目编号 10 在 1000 票中出现并赢得了与所有其他项目的所有直接对抗。项目编号 90人在100票中上来,赢了40票,输了60票。我可以利用现有的算法(例如来自推荐系统或类似系统)来构建这些项目的排名列表吗?

0 投票
0 回答
396 浏览

python - Keras:编码器的部分反向传播

概述

嗨,我目前正在尝试使用keras构建一个自动编码器推荐系统模型(我对使用 Tensorflow 没有信心),目前卡住了,因为我无法让 keras 进行部分反向传播。(如果可能,请提供代码或其他来源的示例)

AutoEnc RecSys 的工作原理

该系统的想法是将带有一堆零(“尚未审查”)的高维度评级数据(4k + 特征)提供给编码器,然后将其解码回原始维度。先前的零输入将更改为某个数字,该数字作为预测结果。

问题是

当您向编码器输入一堆零时,编码器将学习输出大量零以及输出(他们认为输入 0 是目标输出,这不是预期的结果)(0 表示未预测/未评级) .

因此,首先要做的是屏蔽损失函数以仅从非零的输入计算损失 (RMS)。(即在每列火车上仅使用非零特征进行前馈)。

然后是真正的问题......在得到损失之后,将发生反向传播,并且keras似乎对所有权重进行反向传播,其中一些(零)应该被忽略(以避免编码器学习输出零)(损失在层上的所有权重之间共享,它们基于相同的损失计算梯度)

有什么方法可以防止 keras 对由 zeros 输入的权重进行反向支持?

类似于 dropout,但这不是随机的,如果该节点的输入为零,则关闭节点/权重)

我尝试搜索一堆页面,主要是通过使用 Tensorflow 完成并制作自定义渐变函数。其他一些人建议简单地使用掩码,因为零损失 = 零梯度 = 没有反向传播,但这仅适用于单个数字预测,同时我的系统将返回高维数据(与输入相同的维度)。

注意:自定义损失函数对反向传播不起作用,损失是共享的,其中一些仍然需要损失来调整权重。我已经掩盖了损失函数,所以只有非零特征会影响损失函数。(正确的方法,但不完整)

一些细节:自动编码器架构:https ://prnt.sc/ntzmbf

我的模型:

自定义损失函数(屏蔽)

谢谢你 :)