您的位置:首页 > 其它

关于推荐系统设计

2015-12-15 00:00 267 查看
摘要: 这里主要是总结了一下我们系统中,实现用户推荐的设计思路和经验。

在我们的系统设计中,推荐的内容主要涉及到两方面:_1,为当前用户推荐可能感兴趣的用户;2、使用者推荐可能感兴趣的内容。_写这个文章主要是总结一下我们设计中的经验,也可以暴露一下我们的不足。

关于数据

在设计推荐系统的时候,涉及到两个载体,用户和产品(eg:图片),我们的推荐系统主要是围绕这两者来设计的。
用户的属性:年龄、性别、国籍、用户组
产品的属性:上传用户、产品标签[类别、标签]、产品描述
针对这两者,我们还收集了用户对产品的点击、评论、分享等行为记录

为当前用户推荐好友的设计思路

这里是列表文本对于新注册的用户,我们推荐的依据主要是看他的注册信息来推荐,根据国籍、年龄、用户组以及当前系统中用户的活跃度,按照一定比例为用户推荐可能会产生交流的用户列表,同时提供几个互动的任务来激励或者说帮组用户来交友,对于冷启动,我们没有想到什么好的法子。

这里是列表文本对于一已经存在过一段时间用户,主要依据的是兴趣匹配,其次是他好友列表中的二度或者三度好友(他的好友A的用户列表中的其他人)来筛选后选的用户列表,然后根据当前的用户属性以及候选用户的活跃度,按照比例生成推荐列表,比如系统总共要为用户推荐10个同样兴趣的好友,其中要有1个新用户,1个VIP用户,1个超级活跃的用户,5个普通用户,2个等待唤醒的用户等等这种业务需求。
整体的逻辑处理如下图:



为用户推荐产品的设计思路

做这件事情之前,我们做了很多准备工作。诸如利用对上传的内容进行分词、人工干预、提供奖励制度鼓励用户为现有的和新添加的内容建立标签,并通过A/B的方法比较标签的适用性等等,尽量为所有的内容做了标签集。
在做推荐的时候照旧做了两套方案:

针对新用户或者没有操作行为的用户,我们通过用户属性筛选出来属性近似的用户,计算这些用户喜好或上传的内容推荐给当前用户,并从新添加的内容中,随机筛选一部分提供给用户。

针对有操作行为的用户我们采用多套方案并行的方法:



在符合运营要求的内容中我们筛选后选数据的主要手段如下:
根据用户的历史记录,按照用户兴趣筛选出来一部分数据,推荐给和用户浏览记录近似的内容,这里要注意规避热门数据的干扰。
同时,从用户好友、与用户属性相似的用户上传的内容中,也提供一部分候选数据。我们是这样认为的,如果A和B是好友关系,或者A和B的用户属性类似,那A对B上传的内容可能会有兴趣。
再有就是经过时间衰减后,相对冷一点的数据。
生成候选数据集之后,根据用户的最近浏览记录、内容发布者的活跃度、用户属性维度以及用户为自己定义的感兴趣的标签等数据,对候选数据进行去重,按比例搭配,生成最终推荐给用户的内容。

后记

以上就是我们推荐系统设计的主要思路,在这个过程中,需要注意的是:
1、数据的准备工作。一切推荐行为都是基于数据的,不管你采用怎么样子的推荐算法都需要有完整的有意义的数据支持,这个数据不需要多么全面,但是一定要足够你的设计使用。
2、不要为技术而技术。不管基于物品的推荐还是基于用户的推荐,都是存在误差的,在考虑推荐的时候,更多的是从业务上考虑,要推荐给用户有意义的内容。
3、要注意热门数据的干扰,尤其是做协同过滤的时候,虽然也可以增加基于内容推荐或者其它学习模型来做一些处理,但是我们并没有做那些,主要还是基于实际场景的需要。
最后就是要说,推荐的设计不是一成不变的,要进行定期的离线数据分析,统计我们推荐的覆盖率、准确度等等,根据这些指标和业务不断调整我们的推荐算法。
这只是一些浅显的总结,有很多不成熟的地方,欢迎发邮件给我指正,邮箱是:saintatgod@gmail.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  推荐系统