1 数据收集
收集数据是构建推荐引擎的第一步也是最关键的一步。可以通过两种方式收集数据:显式和隐式。显示数据是用户有意提供的信息,比如电影排名,相反隐氏数据则不是用户主动提供,而是从数据流中收集得到的信息,例如搜索历史、点击率、历史订单等。
2 数据存储
数据量决定了模型的建议有多好,例如,在电影推荐系统中,用户对电影的评价越多,推荐给其他用户的效果就越好。数据类型对采用何种存储类型有很重要的影响,这种类型的存储可以包括一个标准的SQL数据库、NoSQL数据库或某种类型的对象存储。
3 数据过滤
在收集和存储数据之后,我们必须对其进行过滤,以便提取出最终推荐所需的相关信息。
3.1 基于内容的过滤
- 推荐的产品类似于用户过去喜欢的产品。
- 基于内容的过滤算法找到了轮廓向量与项目向量夹角的余弦,也就是余弦相似度。
- 以Netflix为例:它们以向量形式保存与每个用户相关的所有信息。这个向量包含用户过去的行为,也就是用户喜欢/不喜欢的电影和他们给出的评分,这个向量也被称为轮廓向量(profile vector)。所有与电影相关的信息都存储在另一个叫做项目向量(item vector)中。项目向量包含每个电影的细节,如类型、演员、导演等。
- 欧几里得距离/皮尔逊相关性计算相关性
- 这种搭建推荐引擎的方法泛化性能很差。不能推荐新的产品给用户,例如用户历史数据显示喜欢动作片,那么推荐就会一直推荐动作片而不会推荐纪录片、爱情片等等。