1

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

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

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

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

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

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

4

1 回答 1

1

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

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

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

于 2018-07-31T16:41:04.350 回答