协同过滤的简介

来源:互联网 发布:软件机器码修改 编辑:程序博客网 时间:2024/05/16 08:37
协同过滤(collaborative filtering, CF)是当前推荐技术和算法中使用最广泛和认可度最高的算法之一。
一、概念
协同过滤指的是根据与某个人(或商品)的相似物的分析,来判断此人(或商品)的特点、价值和潜在属性。本质上是归纳法,即根据特殊的物品的特点,来推断一般性的这一大类物品的特点。比如想买一件衣服,你会向和自己穿着品味相似的人征求意见,原因是他们推荐的衣服可能对于我们也很合适。这既是协同过滤的核心思想。
协同过滤常用的有两种方法:基于用户的和基于商品的。
1、前者称为User-based CF,系统通过分析一个用户和哪些用户的特征比较像,然后看看这些用户喜欢哪些商品,进而可以将这些商品推荐给此用户。
2、后者称为Item-based CF,系统通过分析用户的购买行为来判断用户喜欢的商品类型,然后从这些商品类型中选出其他的商品来推荐给此用户。这里说的商品类型不仅是限制于平时的概念,如家电、衣服等,而且也可能是在数据或某些特征上很相似的一类商品,比如经常被同时购买。

二、基于用户的协同过滤
     当一个用户进入一个网站时,网站系统会找到和这个用户的爱好、兴趣、平时购买商品等相似的用户群,然后把这个用户群中经常购买的商品推荐给此用户。
1、首先要建立一个用户与商品偏好表

里面的数字表示用户对商品的喜好程度,数字越大说明越喜欢。这个表有多种生成方式:
(1)量化的方法有很多种,没有绝对正确的方法,只有最适合场景的方法。比如可以从用户对商品的打分、从购买的频繁程度、浏览的频繁程度等多个方面去量化。可以只取其中一种方法,或同时采用多种方法然后加权平均或取最大值。
(2)量化的范围有很多种。可以不设置上限,也设置上限以免某种商品过于突出导致与其他用户的匹配度都很低。
(3)商品的分类有很多种,可以用女装、男装来分类,也可以进一步细化,比如男士衬衫、女式长靴等。如果是垂直电商(在某一个行业或细分市场深化运营的电子商务模式),便适合进行细化分类,而如果是综合性电商,适合扩大分类粒度和范围。
2、根据此表,计算与待推荐用户(如ID=00001)和其他所有用户的相似度。
     要比较相似度,就要有计算相似度的算法。比较常用的是余弦相似性,向量a和向量b的余弦相似性的公式为

余弦相似度的范围为-1到1。如果a和b方向相同,不管长度是否相同,都会得到cos(a,b)=1,这是最高的相似度。
以用户00001和00002为例计算相似度:
(1)构造每个用户的向量。两个用户除了运动鞋之外都有偏好值,因此对应两个向量为 a=(10,7,2,4) 和 b=(8,7,8,5)。注意,不能将用户1的运动鞋默认为0,因为没有获取到运动鞋的偏好程度不代表此人对运动鞋不感兴趣。构造向量时要选择两个用户都有偏好值的商品才可以。
(2)计算cos(a,b)。

这个相似度接近1,因此相似度还是挺高的。
3、设置一个阈值,如0.8,查看相似度超过这个阈值的用户都有什么购物喜好,然后推荐给用户00001用户即可。
     除了用户与商品偏好表,还可以使用其他表来评价两个用户的相似度,比如年龄、性别、年收入等用户画像的特征,然后找到同一类人群所喜好的东西进行推荐。

 三、基于商品的过滤
     这个算法最早由亚马逊公司提出,给用户推荐那些和他们之前喜欢的商品相似的商品。算法步骤前面基于用户的协同过滤大致相同,也是需要计算商品之间的相似度,然后推荐相似度高的商品。
     但是,不同之处在于,并不是要建立一个商品属性的表来计算商品之间的余弦相似度。一是因为商品属性差异比较大,维度很广,做出来很可能是稀疏矩阵,不利于余弦相似度的计算 ;二是因为计算量太大,很难实现。所以转而通过分析用户对两种商品的购买情况来间接说明两种商品的相似度(更准确的说是正相关性)。
     核心思路:如果有很多人喜欢商品A的同时也喜欢商品B,那么商品A和商品B应该相关性很高。
     此时余弦相似度的计算公式变为:

其中,N(A)表示喜欢商品A的用户数量,N(B)表示喜欢商品B的用户数量,N(A^B)表示同时喜欢商品A和B的用户数量。
1、得到用户在一定时间段内购买商品的记录,如

注意,是在一段时期内买过的商品,而不是一次性购买的商品。
2、建立商品中间矩阵。

这个矩阵是在一定时间段内所有用户购买过两种商品的情况,比如有2个人在这段时期内既购买过象棋也购买过扑克牌。
3、计算任意两种商品之间的相似度。如象棋和围棋,则根据商品购买记录, N(A)=2,N(B)=2,根据商品中间矩阵,N(A^B)=1。因此

最后得到商品相似度表:

4、从某一个商品的一行中选择最大的几个商品进行推荐。如乒乓球的一行有扑克牌0.35和乒乓球拍1,因此会给买过乒乓球的人首推乒乓球拍,次推扑克牌。

四、特点分析
1、规模问题。用户较多时,基于用户的算法开销较大;商品较多时,基于商品的算法开销较大。因此需要进行优化,比如只分析购买频率或者购买数量超过一定数值的用户行为,或者被购买次数超过一定数量的商品,缩短分析时间段,等等。
2、冷启动问题。只有当一个新的商品被首次购买过之后,才有可能被推荐。因为两种算法的前提都是有用户去购买商品。当然,如果基于商品的算法的中间矩阵采用的不是用户购买情况而是商品本身的属性对比,那么是不会有冷启动问题的。
3、实时性。当一个用户购买一个新的商品之后,基于用户的算法的推荐结果可能不会产生变化,因为与这个用户相似的用户群可能不会产生变化。但是基于商品的算法很可能会有新的商品进行推荐。













原创粉丝点击