【发布时间】:2021-02-27 14:19:31
【问题描述】:
我正在尝试使用有关餐馆的数据在 Yelp 数据集上创建一个简单的基于内容的过滤模型。
我有一个这种格式的DataFrame
>>> business_df.dtypes
address object
attributes object
business_id object
categories object
city object
hours object
is_open object
latitude float64
longitude float64
name object
postal_code object
review_count int64
stars float64
state object
现在我正在尝试构建一个基于内容的协同过滤模型,并在其中回答“给定一家餐厅,推荐类似餐厅”的问题
我正在尝试在此处实现 Content-Based Recommender 下给出的模型 - https://www.datacamp.com/community/tutorials/recommender-systems-python
基本上,他们使用一些文本字段来构建一个 Count Vectorizer 矩阵,然后对行进行余弦相似度以获得电影之间的相似度。
他们后来说
引入流行度过滤器:此推荐器将选取 30 部最相似的电影,计算加权评分(使用上面的 IMDB 公式),根据该评分对电影进行排序,并返回前 10 部电影。
我正在尝试使用类别、属性、纬度和对数(距离)、星星和评论计数(根据评论计数加权的星星 - 评论数量越多,星星的权重越大)来构建类似的模型.
但我不知道如何将数字列合并到这里的模型中。我确定我不能将数值列传递到计数向量器中。
我可以通过简单地计算数值列之间的余弦相似度(或 Pearson 相关性)来构建 2 个模型 - 1 个带有文本字段和其他模型 - 并将这 2 个结合起来吗?如果是,我该怎么做?
或者我是否可以遵循数据营模型并在模型中填写文本字段,然后使用公式来合并评分?如果是,我仍然无法根据经纬度计算距离
【问题讨论】:
-
为什么你认为数字之间的余弦距离比词向量之间的余弦距离更难?想想余弦距离的欧几里得定义。
-
@tripleee 我在想我不能在我添加文本的相同计数矢量化函数中添加数字,解决方案是对文本进行计数矢量化,对数字分别进行 Pearson 相关。但我仍然不知道如何将这两个结果组合成连贯的东西。
标签: python recommendation-engine cosine-similarity