0.内容提要
随着知识爆炸的新社会形态逐渐明晰,如何从纷繁复杂的知识中获取到自己最想要的那一个已经成为热门问题,比如商品个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,可以帮助用户在商品选择方面提供个性化的决策支持。
1.推荐算法综述
目前主要的推荐算法主要分为6类:
1. 基于内容推荐
基于内容推荐是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推断的,而不需要依据用户对项目的评价意见,更多的需要用机器学习的方法从关于内容的特征描述的事件中得到用户的兴趣资料。用户的资料模型取决于所用学习方法,常用的有决策树,神经网络和基于向量的表示方法等。基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户偏好的改变而改变。
基于内容推荐方法的优点:
(1)不需要其他用户的数据,没有冷开始问题和稀疏问题;
(2)能为具有特殊兴趣爱好的用户进行推荐;
(3)能推荐新的或者不是很流行的项目,没有新项目问题;
(4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目;
(5)已经有比较好的技术,如关于分类学习方面的技术已相当成熟。
缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的机构性,并且用户的口味必须能用内容特征形式来表达,不能显式的得到其他用户的判断情况。
2. 协同过滤推荐
协同过滤推荐技术是推荐系统中应用最早和最为成功的技术之一,它一般采用最邻近技术,利用用户的历史爱好信息计算用户之间的距离。然后利用目标用户的最邻近用户对商品的评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。
协同过滤最大的优点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐,电影。基于协同过滤的推荐系统可以说是从用户的角度来进行相应推荐的,而且是自动的,不需要用户努力的找到适合自己兴趣的推荐信息,如调查问卷等。和基于内容的过滤方法对比,协同过滤具有如下的优点:
(1)能够过滤难以进行机器自动内容分析的信息,如艺术品,音乐等;
(2)共享他人的经验,避免了内容分析的不完全和不精确;
(3)有推荐新信息的能力,可以发现内容上完全不相似的信息,用户对推荐信息的内容事先是预料不到的,这也是协同过滤基于内容过滤一个较大的差别,可以发现用户潜在的但自己尚未发现的兴趣爱好;
(4)能够有效的使用其他相似用户的反馈信息,减少用户的反馈量,加快个性化学习的速度。
3. 基于关联规则推荐
基于关联规则的推荐是以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购买某些商品时有多大的倾向去购买另外一些商品。算法的第一步关联规则的发现最为关键且耗时,是算法的瓶颈,但可以离线进行。
4. 基于效用推荐
基于效用推荐是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去建立一个效用函数。因此,用户资料模型很大程度上是由系统所采用的效用函数决定的。基于效用推荐的好处是它能把非产品的属性考虑进去,如供应商的可靠性和产品的可得性等考虑到效用计算中。
5. 基于知识推荐
基于知识推荐在某种程度上可以看成一种推理技术,它不是建立在用户需要和偏好的基础上推荐的。基于知识的方法因它们所用的功能知识不同而有明显的区别。效用知识是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系。所以用户资料可以是任何支持推理的知识结构,它可以是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。
6. 组合推荐
由于各种推荐方法都有优缺点,所以在实际中,组合推荐经常被采用。研究应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用于基于内容的方法和协同过滤的推荐方法去产生一个预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐的一个重要原则就是通过组合后要能避免或弥补各自推荐技术的弱点。在组合上,有研究人员提出了七种组合思路:
1)加权:加权多种推荐技术的结果;
2)变换:根据问题背景和实际情况或要求决定变换采用不同的推荐技术;
3)混合:同时采用多种推荐技术给出多种推荐结果为用户提供参考;
4)特征组合:组合来自不同推荐数据源的特征被另一种推荐算法所采用;
5)层叠:先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在这个结果上产生更精确的推荐结果;
6)特征扩充:一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中,感觉有点像特征组合;
7)元级别:用一种推荐方法产生的模型作为另一种推荐方法的输入。
2.基于潜在因子算法(Latent Factor)的应用实例
每一个用户(user)都有自己的偏好,比方A喜欢带有小清新的、吉他伴奏的、王菲等元素(latent factor)。假设一首歌(item)带有这些元素,那么就将这首歌推荐给该用户,也就是用元素去连接用户和音乐。每一个人对不同的元素偏好不同,而每首歌包括的元素也不一样。
实际上能够理解为latent factor是对用户属性和音乐属性的双重降维(相当于把高维的用户音乐属性降维到一个k维的隐空间进行表达)。将用户属性音乐属性都使用一个k维的向量表示,终于预測出某一用户对某一音乐的评分即为这两个向量的内积。
1.确定偏好程度
表示不同的用户对于不用元素的偏好程度,1代表很喜欢,0代表不喜欢。
2.构建潜在因子-音乐矩阵P
P表示每种音乐含有各种元素的成分。比方下表中,音乐A是一个偏小清新的音乐,含有小清新这个Latent Factor的成分是0.9,重口味的成分是0.1,优雅的成分是0.2。利用这两个矩阵,我们能得出张三对音乐A的喜欢程度是:张三对小清新的偏好音乐A含有小清新的成分 对重口味的偏好音乐A含有重口味的成分 对优雅的偏好*音乐A含有优雅的成分,即:
0.6*0.9 0.8*0.1 0.1*0.2 0.1*0.4 0.7*0=0.69 。每一个用户对每首歌都这样计算能够得到不同用户对不同歌曲的评分矩阵。
3.潜在因子计算
这个潜在因子(latent factor)是怎么得到的呢?由于面对海量的让用户自己给音乐分类并告诉我们自己的偏好系数显然是不现实的,其实我们能获得的数据仅仅实用户行为数据。我们沿用的量化标准:单曲循环=5, 分享=4, 收藏=3, 主动播放=2 , 听完=1, 跳过=-2 , 拉黑=-5,在分析时能获得的实际评分矩阵R。其实这是个很稀疏的矩阵,由于大部分用户仅仅听过所有音乐中很少一部分。
怎样利用这个矩阵去找潜在因子呢?这里主要应用到的是矩阵的UV分解。也就是将上面的评分矩阵分解为两个低维度的矩阵,用Q和P两个矩阵的乘积去预计实际的评分矩阵,并且我们希望预计的评分矩阵 。 对于一个大型的评分矩阵X(m*n,m为用户数。n为音乐数量。矩阵中每一项便是这一用户对这一音乐的评分,显然这会是一个很稀疏的矩阵),我们希望由这一评分矩阵得到两个分解后的矩阵U(m*k。用户属性在隐空间内的表示)与V(n*k,音乐属性在隐空间内的表示)。使得U乘以transpose(V)能够尽可能地逼近矩阵X,即由抽取的用户属性音乐属性。我们能够“尽可能地还原出”原本输入的大型评分矩阵X——这一分解便被称为”UV分解”。
这里涉及到最优化理论。在实际应用中,往往还要在后面加上2范数的罚项,然后利用梯度下降法就能够求得这P,Q两个矩阵的预计值。这里我们就不展开说了。比如我们上面给出的那个样例能够分解成为这样两个矩阵,这两个矩阵相乘就能够得到预计的得分矩阵。将用户已经听过的音乐剔除后,选择分数最高音乐的推荐给用户就可以。