两种基于邻域的推荐算法

推荐系统的基本算法:基于邻域的推荐(基于用户的协同过滤、基于物品的协同过滤)

http://www.jianshu.com/p/01b860b4c5fb

一、基于用户的协同过滤:当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而A没有听说过的物品推荐给A。

步骤:

1、找到与目标用户u相似的用户集合{V}。

方法:计算两个用户的兴趣相似度。

给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过正反馈的物品集合,

Jaccard公式简单地计算u和v的兴趣相似度:

或者通过余弦相似度计算:

举个例子。用户A对物品{a,b,d}有过行为,用户B对物品{a,c}有过行为,利用余弦相似度公式计算用户A和用户B的兴趣相似度为:

如果对所有两两用户都利用余弦相似度计算相似度,这种方法的的时间复杂度是O(U*U),这在用户数大的时候非常耗时。事实上,很多用户相互之间并没有对同样的物品产生过行为,很多的时候|N(u)∩N(v)|=0。可以首先筛选出≠0的用户对。

为此,可以首先建立物品到用户的倒排表。对于每个物品都保存对该物品产生过行为的用户列表。令稀疏矩阵C[u][v]=|N(u)∩N(v)|。那么,假设用户u和v同时属于倒排表中K个物品对应的用户列表,就有C[u][v]=K。从而,可以扫描倒排表中每个物品对应的用户列表,将用户列表中的两两用户对应的C[u][v]加1。例子展示如下:

2、利用UserCF算法计算和用户兴趣最相似的K个用户喜欢的物品。

UserCF算法中用户u对物品i的感兴趣程度:

S(u,K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,wuv是用户u和用户v的兴趣相似度,rvi代表用户v对物品i的兴趣

二、基于物品的协同过滤:这个算法是目前业界引用最多的算法。基于物品的协同过滤算法给用户推荐那些和他们之前喜欢的物品相似的物品。主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢B。

步骤:

1、计算物品之间的相似度;

2、根据物品的相似度和用户的历史行为给用户生成推荐列表。

---------------------------

定义物品的相似度可以用如下公式,其中 N(i) 是喜欢物品 i 的用户数,如下公式表示了喜欢物品 i 的用户中有多少的比例用户也喜欢 j :

该公式存在一个问题:如果物品 j 很热门,那么 Wij 就会很大,接近1,为避免马太效应,可以用下面的公式:

该公式惩罚了物品 j 的权重,减轻了热门物品会和很多物品相似的可能性。

你可能感兴趣的:(两种基于邻域的推荐算法)