基于内容的过滤推荐系统中连续特征的错误处理
Handling Error for Continuous Features in a Content-Based Filtering Recommender System
我有一个基于内容的推荐系统……很好用。我相当确定这是解决此问题的正确方法(已建立的 "users" 与 "items" 的匹配实际上总是新的,但包含与现有项目相似的已知功能)。
在我进行研究时,我发现几乎所有基于内容的过滤示例都使用 articles/movies 作为示例,并且只关注使用来自文本块的编码 tf-idf 功能。那不是我正在处理的,但我的大部分特征都是布尔特征,所以制作一个相似的向量并查看余弦距离并不是特别困难。我还有一个连续特征,我对其进行了缩放并包含在矢量中。正如我所说,它似乎有效,但非常不稳定,我想我知道部分原因...
我使用的连续特征是评分(我们称其为 "deliciousness"),在几乎所有情况下,评分越高表明该项目对用户更有利。它是连续的,但它也有一个清晰的 "direction"(不确定这是否是正确的术语)。一个方向的错误与另一个方向的错误不同。
我遇到过这样的情况,有些用户对 "deliciousness" 分数一般的项目给予了很高的评价,但从逻辑上讲,他们仍然更喜欢更美味的东西。该用户的矢量可能具有 2.3 的平均美味度。我对余弦距离的理解是,在我的模型中,如果该用户遇到两个完全相同的新项目,除了一个美味度为 1.0 而另一个的美味度为 4.5,它实际上会更喜欢前者,因为它更短矢量之间的距离。
我如何在此处修改或合并某种其他类型的距离度量,以考虑到一个方向的美味 error/distance 与另一个方向的 error/distance 不同?
(作为次要问题,我如何决定如何最好地缩放我的布尔特征旁边的这个连续特征?)
有两种基本方法可以解决这个问题:
(1)自己写距离函数。显而易见的方法是从每个向量中删除 deliciousness
元素,独立评估该差异。对向量的其余部分使用余弦相似度。根据需要将该数字与口味差异相结合。
(2) 转换您的 deliciousness
数据,使生成的指标 为 线性。这将允许 "normal" 距离度量按预期完成其工作。
我有一个基于内容的推荐系统……很好用。我相当确定这是解决此问题的正确方法(已建立的 "users" 与 "items" 的匹配实际上总是新的,但包含与现有项目相似的已知功能)。
在我进行研究时,我发现几乎所有基于内容的过滤示例都使用 articles/movies 作为示例,并且只关注使用来自文本块的编码 tf-idf 功能。那不是我正在处理的,但我的大部分特征都是布尔特征,所以制作一个相似的向量并查看余弦距离并不是特别困难。我还有一个连续特征,我对其进行了缩放并包含在矢量中。正如我所说,它似乎有效,但非常不稳定,我想我知道部分原因...
我使用的连续特征是评分(我们称其为 "deliciousness"),在几乎所有情况下,评分越高表明该项目对用户更有利。它是连续的,但它也有一个清晰的 "direction"(不确定这是否是正确的术语)。一个方向的错误与另一个方向的错误不同。
我遇到过这样的情况,有些用户对 "deliciousness" 分数一般的项目给予了很高的评价,但从逻辑上讲,他们仍然更喜欢更美味的东西。该用户的矢量可能具有 2.3 的平均美味度。我对余弦距离的理解是,在我的模型中,如果该用户遇到两个完全相同的新项目,除了一个美味度为 1.0 而另一个的美味度为 4.5,它实际上会更喜欢前者,因为它更短矢量之间的距离。
我如何在此处修改或合并某种其他类型的距离度量,以考虑到一个方向的美味 error/distance 与另一个方向的 error/distance 不同?
(作为次要问题,我如何决定如何最好地缩放我的布尔特征旁边的这个连续特征?)
有两种基本方法可以解决这个问题:
(1)自己写距离函数。显而易见的方法是从每个向量中删除 deliciousness
元素,独立评估该差异。对向量的其余部分使用余弦相似度。根据需要将该数字与口味差异相结合。
(2) 转换您的 deliciousness
数据,使生成的指标 为 线性。这将允许 "normal" 距离度量按预期完成其工作。