前段时间做可一些用户画像方面的工作,对用户画像技术有了初步了解。如果你是一个对大数据和用户画像技术完全不了解的小白,希望这篇文章可以提供一点帮助。
在项目开展前,当然要先了解用户画像主要是干什么的,下面是我总结的两篇文章,大家可以先对大数据和用户画像有个基本的认识。
刚入门大数据看文章和书籍时对一堆框架(上图)肯定是一脸懵。我知道你很急,但是你先别急,上面这篇文章介绍了大数据中常用的框架,可以帮助我们对工具和框架有些基础概念,便于以后项目使用选型。在实际项目中再去深入理解。
如果刚接触用户画像,可以先通过以上两篇文章对用户画像挖掘和应用有初步了解。如果你读完以后是一脸懵的话,我知道你很急,但是你先别急。下文就详细进行实操对基础概念有更深入的了解~搞环境!上代码!!
不要一来就上大数据,我们先在本地使用小数据走个流程~
为了在本地使用数据库表,以及对数据进行处理,我们先安装一些软件。
这里软件的安装,我在之前文章也有总结
https://cloud.tencent.com/developer/article/2229927
https://cloud.tencent.com/developer/article/2229927
环境安装好后,我们就可以储备技能了。人生苦短,我用python,所以我选择pyspark。
Spark主要是用Scala语言开发,部分使用Java语言开发,运行在JVM中。同时在外层封装,实现对python,R等语言的开发接口。
Spark 集群由集群管理器 Cluster Manager、工作节点 Worker、执行器 Executor、驱动器 Driver、应用程序 Application 等部分组成。
spark在外层封装了python接口,主要是借助py4j实现python和java的交互。这样python使用者就不用多学一门java,轻松使用python进行大数据开发。
py4j
py4j是用python和java实现的库。通过PY4J,python可以动态访问Java虚拟机中的Java对象,Java程序也可以回调Python对象。
pyspark实现机制如下图:
在driver端,spark执行在JVM,python通过py4j调用Java的方法,SparkContext利用Py4J启动一个JVM并产生一个JavaSparkContext,将pyspark程序映射到JVM中;
在Executor端,spark也执行在JVA,task任务已经是序列后的字节码,不需要用py4j了,但是如果里面包含一些python库函数,JVM无法处理这些python函数,所以会需要为每个task启动一个python进程,通过socket通信将python函数在python进程中执行后返回结果。
对于spark的基础概念详细介绍,可以看看我的这篇文章:pyspark(一)--核心概念和工作原理
对于pyspark的使用,可以在项目实践过程中慢慢积累学习。
买好装备,学好技能,可以简单实战下了~
我当时是先从实现一个RFM模型入手,熟悉从数据库读取库表,对库表进行操作以及分析的流程,顺便熟悉pyspark的一些常用API。
利用用户的消费流水,对用户的消费水平打标签~实现简单的用户付费画像。
同样我们也可以利用用户的行为流水,对用户的兴趣打标签~
以一个简单示例介绍,比如我们有如下表格数据:
ftime | uin | item_id | act_cnt | act_duration |
---|---|---|---|---|
20230717 | 1 | 1234 | 5 | 3600 |
表示用户1在2023年6月16号,对id:1234这个物品,交互了4次(登录/点赞评等交互),累计一天在线时长 3600秒。
第一步:标签体系映射。item_id:1234这个表示用户什么兴趣爱好啊?我们需要对item_id到tag的解析,这里面涉及到太多算法,不做太多介绍。假设通过算法我们可以解析出:1234映射的tag就是“王者荣耀”。
ftime | uin | tag | act_cnt | act_duration |
---|---|---|---|---|
20230717 | 1 | 王者荣耀 | 5 | 3600 |
第二步:兴趣分数。例子中我们知道用户的交互次数和交互时长。按最简单方式,基于标签tag,我们统计“王者荣耀”用户最大交互次数是10次,最大在线时长是8小时。那按最简单规则计算分数,value/max_value,可以得到:
ftime | uin | tag | act_cnt_score | act_duration_score |
---|---|---|---|---|
20230717 | 1 | 王者荣耀 | 0.5 | 0.125 |
第三步:融合兴趣分数。现在我们有两个分数:交互分数A和在线时长分数B。我们再用简单规则,将两个维度的分数融合:\alpah * A + \beat * B
ftime | uin | tag | score |
---|---|---|---|
20230717 | 1 | 王者荣耀 | 0.35 |
现在就得到了用户"1"在"王者荣耀"的兴趣度是"0.5"~短期(天)兴趣画像就出来啦~
以上内容阐述了如何通过最直观简洁的方式来构建用户画像,让大家对用户画像的概念有更深入的理解。在实际项目实施中,每一步骤都需要结合具体业务进行算法的选择,同时也需要面对复杂的工程流程以确保项目上线。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。