文档章节

关于推荐系统设计

saintatgod
 saintatgod
发布于 2015/12/15 17:55
字数 1362
阅读 603
收藏 21

在我们的系统设计中,推荐的内容主要涉及到两方面:_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

© 著作权归作者所有

saintatgod
粉丝 20
博文 32
码字总数 10455
作品 0
东城
程序员
私信 提问
程序员转型架构师,推荐你读这几本书

从CRUD的程序员,到系统的架构师,进阶推荐读这几本书。架构师书单分为两部分,第一部分是关于系统架构的方法论,包括领域驱动设计,微服务,整洁架构,第二部分介绍各大互联网大公司是如何做...

邴越
10/17
0
0
你不能错过的“推荐系统”资料合集

推荐系统的搭建是个复杂工程,涉及到实时计算、离线计算,以及各种数据采集、流转等,对自建推荐系统来说,更是很有困难。云栖社区将在6月16日晚20点组织一场在线分享《21天搭建推荐系统》,...

小云栖
2016/06/15
1
0
关于树状数据结构存储怎样设计比较合理

想设计一个关于树状数据结构的存储方案,典型的多级评论系统的存储,在关系型数据库中怎样存储,如果是别的类型数据库也请推荐一下,比如说NoSQL,是否合适用于此类型数据存储?

一别丶经年
2013/11/01
359
3
求荐书。内容是关于j2ee系统设计、灵活运用设计模式。

最近在写一个系统,虽然功能差不多实现了。但总感觉不大满意,代码结构有些凌乱不够调理,修改起来总感觉不爽不对劲。所以想找本相关的书看看充充电。 以前看过HeadFirst关于设计模式的讲解,...

itwriter
2014/10/17
50
0
好文收藏系列(一)

好多好文章看完就直接丢了,或者放在浏览器标签内,但是标签多了也会烦,以后一段时间整理下放blog上。 用 Go 实现零停机升级 TCP 服务 http://www.mikespook.com/2012/05/%E7%BF%BB%E8%AF%9...

王二狗子11
2018/01/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Tensorflow 2.0安装

Tensorflow2.0安装环境: Ubuntu 16.04或更高(64位) Windows 7或者更高(64位,且支持python3) 安装Tensorflow 2.0 GPU版本的需要安装NVIDIA相关软件包: NVIDIA驱动 :版本必须410.x或更...

JosiahMg
17分钟前
4
0
TL138/1808/6748F-EasyEVM开发板硬件、CPU、FLASH、RAM

TL138/1808/6748F-EasyEVM是广州创龙基于SOM-TL138/SOM-TL1808/SOM-TL6748F核心板开发的一款开发板。由于SOM-TL138/SOM-TL1808/SOM-TL6748核心板管脚兼容,所以此三个核心板共用同一个底板。...

Tronlong创龙
25分钟前
4
0
百度嵌入式AI解决方案EdgeBoard之内存驱动设计介绍

1. 背景介绍 由于 FPGA 具备可编程和高性能计算的特点,基于FPGA硬件的AI计算加速,正广泛地应用到计算机视觉处理领域。其中极具代表性的部署方式之一就是使用FPGA和CPU组合构成异构计算系统...

AI君
31分钟前
6
0
开放应用模型(OAM):全球首个云原生应用标准定义与架构模型

Kubernetes 项目作为容器编排领域的事实标准, 成功推动了诸如阿里云 Kubernetes (ACK)等云原生服务的迅速增长。但同时我们也关注到,Kubernetes 的核心 API 资源比如 Service、Deploymen...

Mr_zebra
34分钟前
4
0
《Linux操作系统-Exynos4412》编译和安装Busybox

开发环境:Exynos4412-iTOP-4412开发板 现在 Busybox 的配置已经完成了,接下来开始编译 Busybox,在 Ubuntu 的终端输入 “make”命令开始编译 Busybox,如下图。 下图为编译过程中的截图。 ...

书白
37分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部