您的位置:首页 > 运维架构 > 网站架构

关于社交网站好友推荐算法调研

2016-05-06 14:07 471 查看

 1.从共同关注和间接关注说起

关于社交网站好友推荐,我认为不外乎分三种类型,一.找到自己现实生活中认识的朋友;二.在纷乱复杂的用户中找到和自己兴趣点一样志趣相投的人。

我们先从第一点说起,更明确指的是希望推荐系统可以推荐到现实生活中的朋友圈的那些还没有互相关注的人,所以我们只考虑和用户之间双向关注的那些用户,抽象到图的概念即为无向图。再进一步抽象,可以这样描述这样一个问题,给定一个无向图,求每个顶点E中不与E直接相连的相邻顶点的相邻顶点。求顶点集过程时如遇到此顶点已在顶点集中,需要增加他的计数变量,然后对求得的顶点集按照计数变量大小排序,排名越高,则说明共同关注和间接关注越多,则说明俩人有很大概率在现实中认识。

我们可以来分析下算法的复杂度并试着优化。若用户之间的关系采用邻接矩阵存储,设顶点(用户)数量为M,若要求出所有用户的共同关注,则算法的复杂度为O(N^3)(易证)。还有办法做的更快么??从实际考虑,这个用户之间关系的矩阵一定是个十分稀疏的图,所以,我们可以遍历图中所有的边,然后对每条边再遍历所有的顶点,看该顶点是否只和该边的一个顶点相连。复杂度降低到了O(M*N),更直观的表示:假设平均每个用户有k个好友,则M=N*k/2,则该算法时间复杂度为O(N^2*k),是不是降低了很多!

2.电子商务中的协作过滤(Collaborative Filtering)在社交网络中的应用

在查询关于推荐算法的过程中,我了解到了应用在电子商务系统的应用十分广泛的协作过滤,协作型过滤主要思想即以人为本,通过搜索其他人对某些东西的评价来向用户推荐,协作过滤又分user-based基于用户的协同过滤和item-based基于产品的协同过滤。

2.1 user-based在社交网络中的应用

User-based主要分三步1.建立用户评分模型2.寻找相似用户3.推荐结果。其主要思想是先通过用户和一些用户对某一些东西的评分,通过余弦夹角来计算用户之间的相似度(已了解,在此不赘述),然后从与你最相似的一批用户中推荐给你他们喜欢而你还不知道的东西。其中通过夹角余弦来确定相似度着实惊艳到了我。

考虑到用户对评分标准的不确定性,我们可对相似度的计算方法进行一定的修正,即计算用户对某东西的评分时用当前评分减去用户对所有物品的平均评分,以相对评分代替绝对评分。

了解user-based后我思考,这个在电子商务中适用的算法可否适用于好友推荐呢?完全可以,我们可以借鉴求用户相似度的算法来进行好友推荐。我们可以用一堆类似标签(tag)的东西来模拟商品,比如动漫,音乐,DOTA,段子,甚至用户自己填写资料中的籍贯,所在大学,专业.....将每个tag看作一个维度,求目标用户和其他用户关于这些tag的夹角余弦,求得越接近1表明两用户越相似。用这种方法可以推荐给用户和他有一样兴趣的人,缺点是用户,或维度太多时时间开销太大,或者用户tag信息太少时难以推荐。

2.2 item-based在社交网络中的应用。

Item-based和user-based类似,也分为三个步骤,建立用户评分表,计算物品之间的相似度,推荐结果。其中相似度的计算又分计算夹角余弦和更为简单的Slope-one协同过滤,在wiki百科中详细的例子和解释,也不在此赘述。

我认为item-based可以适用于向用户推荐一些热门的活跃的公众用户(微博大V),我们可以把这些公众用户想象成一个个item,结合目标用户所关注用户建表。表中A[i][j]为用户i,对j的量化后的喜好程度,可以具体根据点赞,评论,转发,是否拉黑等信息量化成具体数字。有了目标用户所关注的用户对他们的评价,我们就可以用item-based的算法来评估目标用户对一个未关注公众用户的喜好程度,然后就可以以此为基准进行推荐公众了。

3.基于内容的过滤在社交网络上的应用

  协作过滤中最为核心的是通过已有一部分用用户的相关信息来推荐,如果某个用户所关注的兴趣和资源比较冷门,自身的好友又比较少,是否还有更为有效的推荐方式呢。

  基于内容的过滤可能会解决这个问题,基于内容,顾名思义,就是根据用户感兴趣的内容,通过评价用户已评价内容和未评价内容的相关性,推荐给用户最相似的资源。与item-based不同在于内容之间的相似度不依赖于其他用户的评价,而是两内容之间的绝对相似度,例如文本资源可以通过关键词来匹配相似度。用了用户可能会感兴趣的内容,我们就可以检索经常发布这些内容的用户,将其推荐给目标用户。我认为这种过滤方式针对性强,特别是针对小众的冷门的话题,容易找到用户真正想要的内容。例如用户对重金属音乐很感兴趣,可以根据内容过滤推荐给用户经常分享重金属音乐的一些用户,这种推荐尤其能增加用户对该社交网络的好感。

 <
4000
/span>

4.总结

  实际的社交网络纷乱且复杂,我们很难找到一个对所有情况都使用的算法,所以在合适的场景使用合适的算法会有很好的效果,多种算法相互结合取长不断也会令推荐的结果更好。

 

参考文献:

1.一种基于聚类的协同过滤和基于内容过滤相结合的个性化推荐算法 作者:高凤荣杜小勇王珊

http://www.ccf.org.cn/resources/1190201776262/2010/07/12/h0475900020.pdf

 

2.wiki百科slope one词条,协同过滤词条:

  https://zh.wikipedia.org/wiki/Slope_one

3.知乎问题:网易云音乐推荐算法是怎样的 :

  http://www.zhihu.com/question/26743347
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息