概念
协同指的的是运用群体行为找到用户可能希望的物品
过滤指的是丢弃掉一些不值得给用户推荐的物品,如评分较低的或者用户已经点击购买过的物品。
协同过滤的思想是通过群体的行为来找到某种相似性(比如用户之间的相似性或者物品之间的相似性),通过这种相似性来为用户做推荐,简单来讲就是人以类聚,物以群分 。
协同过滤类型
协同过滤推荐一般分为三种类型
1.基于用户的的协同过滤[UserCF]
2.基于物品的协同过滤[ItemCF]
3.基于模型的协同过滤[ModelCF]
基于用户 (UserBased) 的协同
表达的含义是将与一个用户相似的用户喜欢的物品推荐给这个用户。这里需要做的是首先找到和一个用户相似的用户,然后找到相似用户喜欢的物品 (可以理解成发生过特定行为或者评分高的物品) ,预测这个用户对这些物品的评分,找到评分高的若干物品推给该用户就可以了。
基于物品 (ItemBased) 的协同
表达的含义是找到与一个用户喜欢的物品 (可以理解成发生过特定行为或者评分高的物品) 相似的物品推荐给这个用户。 这里需要做的是首先找到一个物品的相似物品,然后将这些相似的物品打分排序,找到评分高的若干物品推荐给用户就可以了。
基于模型 (ModelBased) 的协同
这个相对就比较复杂了,也是目前较为主流的协同过滤算法,其相关算法完全可以写本书了。我们这里对其思想做一个了解即可。
假设我们有N个用户,M个物品,只有部分用户和部分物品之间是有联系的
(这一点很容易想到,比如用户不能看完我们文章库的所有内容,用户也不可能对商品库的所有商品都有收藏等购买行为)
其他部分都是空白 (这里我们把N用户和M个物品,看成一个N*M的矩阵) ,我们可以想象这个矩阵是一个稀疏矩阵,大部分是空白的,我们现在要做的就是,用这些矩阵中已有的数据,使用某些算法去将空白区域的值给填补上 (就像数独游戏一样,已知一些数据,填补空白数据) ,这样我们就相当于有了每一个用户对每一个物品数据,我们按照这个数据排序,推荐TOPN
的物品给用户就可以了。这就是基于模型协同过滤的核心思想。想要给空白处填补数据可以使用很多种算法,比如 矩阵分解,分类,回归,神经网络等等 。