好的推荐系统,不仅能预测用户的行为,还能帮助用户发现他们可能感兴趣但不容易发现的东西。
最近看了项亮老师的《推荐系统实践》,深感个性化推荐在当下的互联网产品中的地位,个性化推荐是有效【提高用户粘度】的方法,从而【鼓励用户产生更多的行为】。但是对于不同阶段的产品、不同类型的产品有特定的推荐算法,下面我就简单介绍一下。
对于一个全新的产品想做个性化,面对缺少用户数据积累这样的一个情况,就不得不考虑推荐系统的冷启动问题(cold start)。虽说数据稀缺,但是仍然有一些方法能帮助产品经理获得一些数据,这也是我之前没有考虑到的。解决方案有如下几种:
1.直接推荐热门排行榜:这在某种意义上是群体性的个性化,相比随机推荐效果要好
2.利用用户注册信息:!!很重要,性别、年龄、地区能极大地缩小推荐范围!
3.提供社交网络账号登录:很多产品提供第三方社交账号登录不仅仅是为了方便,更重要的是获得你的社交数据,从而给你推荐你朋友喜欢过的内容。
4.登录时进行兴趣询问:比如Jinni在初次使用会询问喜欢的电影类型以及对应类型下几部电影的评分
5.新物品推荐:对于新加入的物品,基于物品内容信息的推荐更加可靠,一段时间后可以利用UserCF和ItemCF(协同过滤)
6.找专家标注:比如Pandora,一开始没有用户行为数据也没有物品内容信息,找专家对400度个维度进行标注然后得到相似度列表
解决了冷启动的问题之后,用户在我们的产品上积累了一定的数据,那么一般会从以下四个维度进行推荐:【基于用户行为数据的推荐】、【基于用户标签数据的推荐】、【基于上下文信息的推荐】、【基于社交网络的推荐】。
基于用户行为数据的推荐应用比较广泛,适合各种各样的网站、APP。
1.基于用户的协同过滤(User CF):物以类聚,人以群分。如果你们喜欢的东西重合度很高,那么TA喜欢过的东西就很有可能被你喜欢。比如新浪微博推荐好友时,首先回去找那些和你【共同关注数】高的好友中你未关注的人。
2.基于物品的协同过滤(ItemCF):与UserCF类似,只不过是基于物品相似表,物品相似表可以基于物品内容构建,也可以基于该物品被类似的一群人喜欢过作为相似度的依据来构建。
3.隐语义模型:如果你喜欢某样东西,那么先去找这样东西属于哪个类,推荐给你这个类下的其他东西即可。
4.基于图的模型:用户u对物品i进行了操作,就可以表示为(u,i),这样一来就可以构成一个用户-物品的二部图,通过考虑【两个顶点之间的路径数】、【两个顶点之间路径的长度】、【两个顶点之间路径经过的顶点】对用户u做一个TopN的用户序列排名。
第二类是基于用户标签的推荐:这样的推荐形式需要用户给内容打标签,如最早的书签社交网站Delicious,现在的文艺青年社区豆瓣也有大量让你选择你看过的电影、图书并且鼓励你打标签,这种基于分众分类的方式能汇聚集体智慧帮助用户找到他喜欢的内容。
第三类基于上下文的推荐就是要考虑时间、位置、心情等因素,比如对于电商网站来说夏天和冬天推荐的商品应该不同,对于音乐类软件来说早晨和晚上推荐的歌曲应该不同,团购网站来说,应该基于地理位置推荐附近的商家。
第四类是基于社交网络关系的推荐,这类推荐适合有丰富社交关系的网站,如新浪微博、facebook、instagram。
1.基于领域的社会化推荐算法:衡量用户u和用户v的熟悉程度和兴趣相似度
2.基于图的社会化推荐算法:比如豆瓣就有群组,可以构成群组-用户-内容的图结构,再对内容进行排序
3.信息流推荐:比如在微博中我关注用户很多,但并不是所有的言论我都感兴趣,因此推荐系统应该对信息流进行排序。排序依据可以参考facebook的EdgeRank,其主要思路如下:Facebook的EdgeRank综合考虑了每个会话的时间、长度与用户兴趣的相似度,它将其他用户对当前用户信息流中的会话产生过行为的行为称为edge,一条会话的权重定义为∑(Edges e)UeWeDe,结论就是如果一个会话被你熟悉的好友最近产生过重要的行为,它就会有比较高的权重。但这个EdgeRank算法只考虑了社会化推荐,对内容本身没有考虑,因此加入会话长度,话题相关性和用户熟悉程度能有效提升算法的准确度。
算法构成了推荐系统的核心,除此之外应该将UI、日志系统都纳入到整个推荐工作的考虑当中来,他们是互相配合和支持的。
总的来说就是这四类,产品经理可以结合自己产品的特点,有针对性的收集相关数据,如在注册界面要求选择个人基本信息、添加标签或评价反馈机制,当然这样的功能改动以不增加用户负担和不影响用户体验为前提,推荐系统是一个产品不可或缺的一部份,需要用系统和长远的眼光重视这个部分。