第6章的标题是“利用社交网络数据”,为什么要用社交网络数据?答:好友的推荐对于增加用户对推荐结果的信任度非常重要。
社交网络定义了用户之间的联系,可以用图G(V,E,w)定义社交网络。一般来说,有3种不同的社交网络数据:
- 双向确认的社交网络数据,用户A和B之间形成好友关系需要通过双方的确认,一般用无向图表示
- 单向关注的社交网络数据,用户A可以关注用户B而不需要得到用户B的允许,一般用有向图表示
- 基于社区的社交网络数据,用户之间没有明确的关系
基于社交网络的推荐的优势在于1)好友推荐可以增加推荐的信任度;2)社交网络可以解决冷启动问题。但是,社会化推荐并不一定能提高推荐算法的离线精度。我是这样理解的,好友之间的兴趣一般都不太一样,所以直接根据社交信息推荐不一定准确,但是社交信息可以适当拓展用户的兴趣,也许一个用户一开始对某个物品并不感兴趣,但是他发现他的好友对这个物品感兴趣,说不定就增加了他对这个物品的兴趣,这样就可以为该物品拓展新的用户。
对于社会化推荐算法,作者在本章介绍了2种相关算法。一种是基于邻域的社会化推荐算法,该算法和UserCF类似,只不过此时不是计算用户之间的相似度,而是计算用户之间的熟悉度(用户之间的共同好友比例),即。另外一种就是基于图的社会化推荐算法,此时的图模型与之前的图模型有一点不同,基于社交网络数据的图模型依然是一个用户物品二分图,但是用户节点之间是有边的,之前的图模型只是用户节点和物品节点之间有边。
基于图的社会化推荐模型在实际中实现是比较困难的,原因就是当用户数量很大的时候系统很难在短时间内将所有用户的历史行为数据读入,而在推荐时好友的历史行为数据时必须的。改进方法有两种,一种是对数据进行截断,推荐时只参考部分好友的部分历史行为数据,但这只是治标不治本。另外一种就是重新设计数据库,为每个用户都维护一个消息队列,当一个用户产生一条行为数据时,每个与之相关的用户的消息队列都会写入一条信息,这种改进方式的好处在于推荐时数据的读取很快,缺点就是行为数据产生时会有大量的写操作。
个人总结:社会化推荐对推荐结果准确率没有多大提升效果,关键在于通过用户好友增加用户对推荐结果的信任度,从而让用户单击那些很冷门的推荐结果。
网友评论