我想创建一个基于二进制点击数据的内容推荐系统,该系统还考虑了视图。
用户接触过哪些内容并因此有机会点击,目前受到基于规则的系统的影响,该系统并不总是记录在案。我确实有查看数据(如果用户在他们的屏幕上看到了内容,无论它是否被点击。),我想知道如何在传统的矩阵分解推荐系统中考虑到这一点,例如这个item-item 方法,或者如果还有其他更好的选择。
任何在 Python 中实现的建议都是奖励!
我想创建一个基于二进制点击数据的内容推荐系统,该系统还考虑了视图。
用户接触过哪些内容并因此有机会点击,目前受到基于规则的系统的影响,该系统并不总是记录在案。我确实有查看数据(如果用户在他们的屏幕上看到了内容,无论它是否被点击。),我想知道如何在传统的矩阵分解推荐系统中考虑到这一点,例如这个item-item 方法,或者如果还有其他更好的选择。
任何在 Python 中实现的建议都是奖励!
最干净的解决方案的最简单答案可能是将您的二进制点击数据和视图数据组合到您可以优化的另一个模型特征中。这看起来像什么取决于您对端到端系统的了解。
例如,用户点击浏览量高的东西是“好”,还是用户点击浏览量低的东西更好?仅根据这个问题,您可能有非常不同的公式:
normalization_function((1/views) * mean(clicks))
与也许normalization_function((view) * mean(clicks))
请务必检查您的矩阵分解实现的假设,但这个新功能可能只能与您的点击数据交换。
作为旁注,我不确切知道您正在实施什么,但点击和查看通常代表不同的东西 - 作为粗略的指导(点击=参与,查看=眼球),因此将它们结合起来可能意义不大。
项目-项目协同过滤可以应用于一元数据。该资源非常适合学习一元数据上的项目-项目协同过滤。
在你的情况下,你只有积极的一面:点击。从这里开始,您可以通过两种方式进行:
我不会对视图数据进行建模。你说这是基于另一个基于规则的系统。如果您尝试对视图数据进行建模,您将学习基于规则的系统(而不是用户的偏好)。例如,如果两个用户都可能查看该项目,则只会告诉您有关现有系统的信息。
我建议只使用点击数据。假设用户查看并点击了一个项目,那么用户可能点击了哪些其他项目。
Python 有一个Implicit包,它为这种类型的数据实现了几种不同的流行推荐算法。