【问题标题】:Handling Error for Continuous Features in a Content-Based Filtering Recommender System基于内容的过滤推荐系统中连续特征的处理错误
【发布时间】:2019-01-08 03:05:33
【问题描述】:

我有一个基于内容的推荐器,它很好用。我相当肯定这是解决这个问题的正确方法(将已建立的“用户”与几乎总是新的但包含与现有项目相似的已知特征的“项目”匹配)。

在研究过程中,我发现几乎所有基于内容的过滤示例都使用文章/电影作为示例,并且只关注使用来自文本块的编码 tf-idf 特征。这并不是我要处理的内容,但我的大部分特征都是布尔特征,所以制作一个相似的向量并查看余弦距离并不是特别困难。我还有一个连续特征,我对其进行了缩放并包含在向量中。正如我所说,它似乎有效,但很不稳定,我想我知道部分原因......

我正在使用的连续功能是评分(我们称之为“美味”),其中,几乎在所有情况下,较高的分数表示项目对用户更有利。它是连续的,但它也有一个明确的“方向”(不确定这是否是正确的术语)。一个方向的错误与另一个方向的错误不同。

我遇到过一些用户对“美味”评分平庸的项目给予高评价的案例,但从逻辑上讲,他们仍然更喜欢更美味的东西。该用户的向量可能具有 2.3 的平均美味。我对余弦距离的理解是,在我的模型中,如果该用户遇到两个完全相同的新项目,除了一个具有 1.0 的美味,另一个具有 4.5 的美味,它实际上会偏爱前者,因为它更短向量之间的距离。

如何在此处修改或合并某种其他类型的距离度量,以考虑到一个方向的美味误差/距离与另一方向的误差/距离不同?

(作为第二个问题,我如何决定如何最好地扩展我的布尔特征旁边的这个连续特征?)

【问题讨论】:

    标签: python machine-learning cosine-similarity recommender-systems


    【解决方案1】:

    有两种基本方法可以解决这个问题:

    (1) 编写自己的距离函数。显而易见的方法是从每个向量中删除deliciousness 元素,独立评估该差异。对向量的其余部分使用余弦相似度。根据需要将该数字与口味差异相结合。

    (2) 转换您的deliciousness 数据,使生成的度量 是线性的。这将允许“正常”距离度量按预期工作。

    【讨论】:

    • 首先,谢谢你,这真的很有帮助。关于方法一,您是否会推荐我将余弦相似度度量和美味距离度量结合起来的特定方法?我应该将它们相加并测试一些不同的权重吗?
    • 你问错人了:照照镜子。额外因素如何影响您最终推荐的总体满意度或与之相互作用?这就是您必须在代码中体现的功能。如果至少对您的范例和用户期望没有基本的了解,我就没有输入的基础。它可能是简单的加法,或调和平均,或两个数字的乘积——或其他一些函数。
    猜你喜欢
    • 2015-12-26
    • 1970-01-01
    • 2012-07-15
    • 2011-09-04
    • 2014-05-26
    • 2012-09-03
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多