对于用户只能看到所有项目的一小部分的情况,什么推荐引擎?

数据挖掘 机器学习 推荐系统
2021-10-01 09:59:53

我想在文档管理系统中添加推荐功能。它是存储大多数公司文档的服务器。员工浏览 Web 界面并单击以下载(或在线阅读)他们想要的文档。
每个员工只能访问所有文档的子集:

员工只能访问所有文档的子集

我的目标:向员工推荐他们的队友最近打开的文档,或者作为他们刚刚打开的文档的附件的电子表格,或者他们可能想要阅读的任何内容。

有许多公开数据的推荐引擎(所有 Netflix 用户都可以看到所有电影),但这里的情况很特殊:每个员工只能访问所有文档的一小部分,而在 Netflix 中,任何用户都可以访问所有电影。

示例:Employee1 可以读取 DocumentA,但不能读取 DocumentB。Employee2 可以同时读取,而 Employee3 不能读取任何内容。

当然,我绝不能向员工推荐她/他无权访问的文件。此外,我想我应该只在有权访问它的员工的背景下考虑文档的受欢迎程度。更复杂的是,员工有时会从一个项目转移到另一个项目,这会影响他们有权访问的文档。

  • 这种问题有名字吗?
  • 可以在不降低精度/效率损失的情况下将其减少为更常见的问题吗?
  • 如果不是,哪种方法可以很好地解决此类问题?

注意:类似 Netflix 的推荐引擎还不够好。如果只有 10 名员工(包括我)可以访问,则具有 50 次查看的文档应该是显眼的,但如果 100000 名员工可以访问它,则不是显眼的。

如果需要,这里有一些数据细节:平均公司有 1000 名员工,大约 10000 个文档,一个员工每天点击大约 5 个文档。每个项目平均有 10 名员工可以访问它,并且有大约 100 个文档。每个员工平均同时处理 5 个项目。

3个回答

我觉得你需要分别解决两件事。

首先,您需要对系统中的用户进行访问控制。您可以将访问令牌附加到每个用户和文件。在处理之前过滤文件数据库。

其次,对文档进行排名我建议对文档权重和用户权重相对于当前浏览用户有一些权重。

例如,我可以如下考虑文档权重和用户权重,但根据您的系统,它们可能要复杂得多-

DocumentWeight = Number of Views/ Number of Users can Access
UserWeight = ## Relative to browsing user- Users in similar project will have higher weights

DocumentScore = Sum over all viewed users{DocumentWeight x UserWeight}

您可以对文档进行排名,这将统计您需要的文档。我希望这会有所帮助。

根据您的描述,我建议您查看称为协同过滤的方法。基本上,您可以将文档的任何查看/下载视为对某些项目的积极反馈,然后向查看类似文档的用户推荐这些项目。

隐藏结果的过滤应该在每个用户的基础上进行(您可以找到所有可能的建议,但只输出用户有权查看的那些)。

看看Mining of Massive Data Sets pp. 328,它最终将引导您了解推荐系统中常用的 SVD。