电影/商品 推荐的两种经典算法

基于近邻的协同过滤算法

也被称为基于内存的算法(memory-based algorithm)。是最早的为协同过滤而开发的算法之一。这类算法是基于相似的用户已相似的行为模式对物品进行评分,并且相似的物品往往获得相似的评分这一事实。基于近邻的算法分为以下两个基本类型:
(1)基于用户的协同过滤:这种类型中,把与目标用户A相似的近邻用户的评分用来为A进行推荐,这些“同组群体”对每件物品的评分的加权平均值将用来计算用户A(对物品)的预计评分。
(2)基于物品的协同过滤:为了推荐目标物品B,首先确定一个物品集合S,使S中的物品与B相似度最高。然后,为了预测往意十不用户A对B的评分,需要确定A对集合S中物品的评分。这些评分的加权平均值将用来计算用户A对物品B的预计评分。

基于内容的推荐算法

基于内容的推荐系统尝试为用户匹配那些与其喜欢的物品相似的物品。这种相似性不一定基于用户之间的评分相关性,而是基于用户喜欢的对象的属性。不同于使用与目标用户相关的其他用户评分的协同过滤方法,基于内容的系统更加关注目标用户自己的评分,以及用户喜欢的物品的属性。因此其他用户在基于内容的系统中扮演的角色不太重要。换句话说,基于内容的方法利用不同的数据源给出推荐。

下面给出本系统基于内容的推荐算法的实现步骤。

(1)数据预处理和特征提取
这部分主要是对电影属性信息进行一个预处理,并提取电影的特征信息。在我们爬取的电影属性信息中,有些电影的某些属性信息是空值,或者属性值包含有空格、换行符、制表符等无用信息,我们需要先将这些属性信息通过一些字符串处理函数将其去掉。然后,我们需要从每部电影的属性信息中提取出关键词,将关键词作为电影的特征。做出这种选择是因为非结构化文本描述通常在各个领域中广泛使用,并且它们仍然是最自然的描述物品的方式,在很多情况下,我们可以用几个词来描述或者代表这个物品。比如我们将每部电影的导演、演员、电影类型、电影标签等作为关键字。那么和该部电影在导演、演员、电影类型、电影标签等关键字上都特别相似的电影就有可能是类似的。比如《唐伯虎点秋香》和《喜剧之王》演员都有周星驰,类型都是喜剧,那么它们的相似度就还是比较高的。
(2)数据特征表示和清洗
这部分主要是将处理好的电影数据特征进行特征表示,即转换为向量空间表示,然后再进行数据降维[16],数据归一化等一系列处理得到特征矩阵。
(3)相似度计算
这部分主要是根据电影的特征表示即特征矩阵来计算电影与电影之间的相似度,同样可以选用Cosine相似度来进行计算。得到电影与电影之间的相似度之后,我们可以按相似度对电影列表进行排序,优先为用户推荐相似度高的电影。

下面是商品推荐的例子

目前常见的商品推荐算法是协同过滤,公认比较常用的方法俗称“邻居方法”。邻居方法中有两种视角:第一种是基于用户;第二种是基于商品。

基于用户的协同过滤,称为User-based CF(User-based Collaborative Filtering)。系统通过分析一个用户和哪些用户(参考用户)的特征比较相似,然后看看这些参考用户喜欢买哪类的商品,再从这些商品里挑出一些推荐给该用户。

基于商品的协同过滤,称为Item-based CF(Item-based Collaborative Filtering)。系统通过数据分析和挖掘用户的购买行为,来判断用户喜欢的商品类型,然后从那些用户喜欢的商品类型里挑出一些推荐给用户。

1. User-based CF 基于用户的协同过滤

算法核心思路:当用户进入一个电商平台时,作为电商平台系统找到那些和该用户兴趣/喜好类似的人,然后看看他们喜欢什么,就给该用户推荐什么。简而言之,A和B两个用户相似,然后给A推荐B喜欢的东西。

2. Item-based CF 基于商品的协同过滤

这种算法给用户推荐那些和他们之前喜欢的商品相似的商品。(天猫经常这么搞)

一般,推荐算法核心思想是,给用户推荐那些和他们之前喜欢的物品相似的物品。

比如,内容推荐算法的“基于内容的协同过滤”,用户A之前阅读过NBA的相关信息,该算法会根据此行为给你推荐所有NBA相关的内容(去看头条的,就是这个套路),但是基于物品的协同过滤有点不同,Item-based CF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。

Item-based CF算法认为,“有很多人喜欢商品A,同时他们也喜欢商品B,所以A和B应该是比较类似的商品。

你可能感兴趣的:(推荐算法,知识储备,推荐算法)