在内容-based过滤推荐系统中处理连续特征的错误

我有一个内容-based的推荐系统,它的工作…还算可以。我相当确定这是解决这个问题的正确方法(将已建立的“用户”与几乎总是新的“项目”进行匹配,但这些项目包含与现有项目相似的已知特征)。

在研究过程中,我发现几乎所有关于内容-based过滤的例子都使用文章/电影作为例子,并且专门研究从文本块中提取的编码tf-idf特征。这并不完全是我所处理的情况,但我的大部分特征都是布尔特征,因此制作一个类似的向量并查看余弦距离并不特别困难。我还有一个连续特征,我对其进行了缩放并包含在向量中。正如我所说,它似乎有效,但相当不确定,我认为我知道部分原因…

我使用的连续特征是一个评分(我们称之为“美味度”),在几乎所有情况下,更高的分数会表明该项目对用户更有利。它是连续的,但也有一个明确的“方向”(不确定这是不是正确的术语)。一个方向上的错误与另一个方向上的错误是不一样的。

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

我如何修改或引入其他类型的距离度量,以考虑到美味度错误/距离在一个方向上与另一个方向上的错误/距离是不一样的?

(作为一个次要问题,我如何决定如何最好地缩放这个连续特征与我的布尔特征相邻?)


回答:

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

(1) 编写你自己的距离函数。明显的方法是从每个向量中移除deliciousness元素,独立评估该差异。对向量的其余部分使用余弦相似性。根据需要将该数值与味道差异结合起来。

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注