数据挖掘之用户画像实时更新流程

关注
数据挖掘之用户画像实时更新流程www.shan-machinery.com

嘉宾介绍: 

王成光,英文名light,硕士毕业8年

目前任职一点资讯研发架构师,曾先后历任职窝窝团高级研发工程师、优购搜索推荐架构师兼产品经理、搜狐架构师、网易技术专家等,主要专注于搜索、推荐、数据挖掘领域,曾独立研发设计多个搜索、个性化推荐项目。

本次分享的主题是用户画像实时更新流程,属于当前个性化推荐系统中的一个核心部分,这里我想从以下5点和大家分享:

1. 用户画像基本组成;

2. 用户画像计算涉及相关算法;

3. 用户画像存储及相关技术

4. 内部服务RPC实现方式

5. 用户画像计算流程及相关技术

一、用户画像组成

我们首先了解下百度数据开放平台大数据用户画像标签体系

如下图,百度这边 主要分为4个部分:生活日常、工作学习、兴趣爱好和消费倾向,每类下面又有若干子类,可以说标签体系本身也是分层的。

    此外,还有这张图所列出的,根据属性变化频繁程度和更新时间长短方面考虑的标签体系划分

    用户画像组成,先简单介绍到这里,让大家有个初步印象,接下来,咱们看第二点

二、用户画像计算涉及相关算法

下面为当前主流算法:

1). 内容相似:余弦定理、修正余弦定理、皮尔逊相关系数等

2). 关联规则:支持度和置信度

3).协同过滤: 基于user协同过滤和基于item协同过滤

4). 主题模型

5). 罗辑回归模型

6). 兴趣时间衰减、借鉴物理学牛顿冷却定律

上述都是当前主流推荐所用算法,鉴于时间关系,这里重点给大家介绍其中的内容相似涉及相关算法:

文本间的相似度计算,最终都会转化成两个文本向量之间的相似度计算,上述4个基本公式可以根据实际需要酌情选择, 这里重点给大家介绍下 后面两个公式的差异, 虽然修正余弦和皮尔逊相关系数外表乍看很像,但仔细看还是有很大差距的。差距就是:

如上图所示:

 

修正余弦中,变量所减去的均值为当前用户对其所参与的所有item评分的平均值;

 

而皮尔逊相关系数中,变量所减去的均值为所有参与该item的用户对其评分的平均值。

上述内容相似计算 也是nlp的基础,也是主题模型的基础

了解了 上述相关算法,那么我们考虑下如何存储用户画像。

三、用户画像存储及相关技术

生产环境中,一般我们将用户画像分为长期兴趣标签库、和短期兴趣标签库。

长期兴趣标签库:关系到所有用户,一般比较庞大,更新频率相对较低,而查询频繁且时效性较高,一般每天或数小时,因此这里建议使用Mongo3.x。

短期兴趣标签库:一般仅关系到当日活跃用户,数据相对较小,但查询和更新均很频繁,这里建议使用Redis3.x。

这里之所以 选择mongo3.x、redis3.x,是因为version3.0,无论对mongo,还是redis都有一个很大的调整,性能、io、健壮性,相比version2.x都有很大提升。

了解了上述存储及相关技术,我们来看服务系统内部通信技术实现。

四、内部服务实现

当前主流微服务架构技术RPC服务实现技术主要有:

dubbo/dubbox:前者淘宝开源,后者是当当做了进一步优化,目前好久没有更新。

thrift/nifty: facebook开源的rpc方案,nifty是thrift和netty的整合,已逐渐替代thrift.

avro: hadoop衍生的序列化框架及服务, 性能可以媲美thrift, idl更灵活。

jws: jdk自带,比较轻量级。

zero ice: 比较完善,但比较重量级,淘宝数据库引擎MyCAT底层通信就用的它。

这里建议大家考虑使用:Nifty  和  Avro,由于二者都不像dubbo和zero ice自实现负载均衡,因此,生产环境下使用时,考虑负载均衡方案,可以考虑两种:

1. 借助LVS或Haproxy实现;

2. 借助zookeeper, 服务端在服务启动时进行服务注册,客户端进行服务自动发现和监听,通过zookeeper完成服务的动态调整,实现负载均衡,这点可以参考duubo实现。

对外服务,考虑到易用性和跨平台等诸多因素,可以考虑使用web service,其典型技术实现方式:

1)基于springmvc rest,需要依赖tomcat、resin或jboss等第三方容器,比较重量级

2)基于嵌入式jetty,不需要依赖于第三方容器,单独启动一个进程即可实现,相对轻量级

生产环境下,考虑到易用性和维护性、健壮性,建议使用第二种方式。

上述服务实现方式,大家可以根据自己实际需要,酌情选择适合自己的方案。

了解了算法、存储和底层通信服务实现,我们就可以开始最终平台搭建,实现最终目的。

五、用户画像实时更新流程及相关技术

这个流程图勾画出了新闻推荐系统的核心,完成用户画像的实时更新,主要涉及推荐系统中的两个核心部分:面向终端用户的实时推荐服务和 用户画像实时更新服务

 

其中新闻索引库 ES,即当前炙手可热的全文检索引擎工具ElasticSearch,

当然提到ES, 有些朋友可能会问,为什么不选择lucene基础之上的另一个同样热火朝天的apapche顶级开源项目Solr/SolrCloud。

当然提到ES, 有些朋友可能会问,为什么不选择lucene基础之上的另一个同样热火朝天的apapche顶级开源项目Solr/SolrCloud。

当然提到ES, 有些朋友可能会问,为什么不选择lucene基础之上的另一个同样热火朝天的apapche顶级开源项目Solr/SolrCloud。

《分布式实时计算框架原理及实践案例》书中不仅对此用户画像实时更新有详细介绍:详细流程设计说明、数据字典设计、核心实现代码等,而且有对个性化推荐系统所用各个技术组件的介绍,这其中,就包括对ES和Solr的对比分析。

图中light_drtc为本人开源的一个轻量级分布式实时计算框架,它本身就是参考Storm的spout/bolt、Spark Streaing的Mini-batch设计思想和底层实现技术实现,当然本书中也有storm、spark streaming的使用实例对比。

最后,给大家介绍下本书的内容简介和写作目的:

本书内容简介:

"授人以鱼不如授人以渔",本书是作者以此初心写成,主要参考当前主流分布式实时计算框架Storm的任务分发和Spark Streaming的Mini-Batch设计思想,以及底层实现技术,开源了作者自研的轻量级分布式实时计算框架——Light_drtc,并且重点介绍设计思想和相关实现技术(Kafka/RabbitMQ、Redis/SSDB 、GuavaCache、MongoDB、HBase、ES/SolrCloud、Thrift、Avro、Jetty),最后从工程角度向大家介绍完整的个性化推荐系统,并实例介绍Light_drtc在用户画像实时更新的应用。本书描述浅显易懂,希望读者理解分布式实时计算的实现原理,并快速上手解决实际问题。

本书适合读者包括:高校师生及企业中从事分布式计算的中高级工程师、架构师及技术管理者等。

本书写作动机:

1. 弥补国内互联网技术开源届在分布式实时计算框架方面的不足,希望对从事分布式计算的中高级工程师及管理者有一定借鉴和参考意义,也希望对高校师生学习有参考价值。

2. 对本人硕士毕业八年工作经验的个人总结和交代,希望对同行有所帮助;

3. 作为一名父亲,想给孩子做个榜样,培养孩子主动学习的好习惯。

今天本人分享主题结束,希望对大家有帮助,欢迎大家多多交流,谢谢!

 

互动问答

1、能简要分析下对ES和Solr的对比吗?

       答:

第一张图是本人之前做的对比实验结果,书中会对后面几项由详细说明

 

第二、第三张图 是DBEngines上对305个数据库引擎对比 以及 二者 今年发展情况

 

2、第三张图是网上的吗?

 

答:DBEngine 是一个比较权威的第三方数据库评估网站

3、关于es你有什么学习的书推荐或者建议吗?

 

答:我这本书中有一章专门介绍 es 安装、配置、使用,当然 官方文档是最详细的。

 

4、写书有什么感受,对个人有何提升?

 

答:写书,可以让自己对过去某些方面做一个全面总结以后知识体系更加系统。

https://www.shan-machinery.com