用户画像数据建模方法_用户画像分析

Python012

用户画像数据建模方法_用户画像分析,第1张

近些年,互联网进入了“ 大数据 时代”。经历了12、13两年热炒之后,人们逐渐冷静下来,更加聚 焦于如何利用大数据挖掘潜在的商业价值,如何在企业中实实在在的应用大数据技术。伴随着大数据应用的讨论、创新,个性化技术成为了一个重要落地点。伴随着对人的了解逐步深入,一个概念悄然而生: 用户画像 (UserProfile),完美地抽象出一 个用户的信息全貌,可以看作企业应用大数据的根基。

一、什么是用户画像?

男,31岁,已婚,收入1万以上,爱美食,团购达人,喜欢红酒配香烟。

这样一串描述即为用户画像的典型案例。如果用一句话来描述,即:用户信息标签化。

如果用一幅图来展现,即:

二、为什么需要用户画像

用户画像的核心工作是为用户打标签,打标签的重要目的之一是为了让人能够理解并且方便计算机处理,如,可以做分类统计:喜欢红酒的用户有多少?喜欢红酒的人群中,男、女比例是多少?

也可以做数据挖掘工作:利用关联规则计算,喜欢红酒的人通常喜欢什么运动品牌?利用聚类算法分析,喜欢红酒的人年龄段分布情况?

大数据处理,离不开计算机的运算,标签提供了一种便捷的方式,使得计算机能够程序化处理与人相关的信息,甚至通过算法、模型能够“理解” 人。当计算机具备这样的能力后,无论是搜索引擎、推荐引擎、广告投放等各种应用领域,都将能进一步提升精准度,提高信息获取的效率。

三、如何构建用户画像

一个标签通常是人为规定的高度精炼的特征标识,如年龄段标签:25~35岁,地域标签:北京,标签呈现出两个重要特征:语义化,人能很方便地理解每 个标签含义。这也使得用户画像模型具备实际意义。能够较好的满足业务需求。如,判断用户偏好。短文本,每个标签通常只表示一种含义,标签本身无需再做过多 文本分析等预处理工作,这为利用机器提取标准化信息提供了便利。

人制定标签规则,并能够通过标签快速读出其中的信息,机器方便做标签提取、聚合分析。所以,用户画像,即:用户标签,向我们展示了一种朴素、简洁的方法用于描述用户信息。

3.1 数据源分析

构建用户画像是为了还原用户信息,因此数据来源于:所有用户相关的数据。

对于用户相关数据的分类,引入一种重要的分类思想:封闭性的分类方式。如,世界上分为两种人,一种是学英语的人,一种是不学英语的人;客户分三类, 高价值客户,中价值客户,低价值客户;产品生命周期分为,投入期、成长期、成熟期、衰退期…所有的子分类将构成了类目空间的全部集合。

这样的分类方式,有助于后续不断枚举并迭代补充遗漏的信息维度。不必担心架构上对每一层分类没有考虑完整,造成维度遗漏留下扩展性隐患。另外,不同的分类方式根据应用场景,业务需求的不同,也许各有道理,按需划分即可。

本文将用户数据划分为静态信息数据、动态信息数据两大类。

静态信息数据

用户相对稳定的信息,如图所示,主要包括人口属性、商业属性等方面数据。这类信息,自成标签,如果企业有真实信息则无需过多建模预测,更多的是数据清洗工作,因此这方面信息的数据建模不是本篇文章重点。

动态信息数据

用户不断变化的行为信息,如果存在上帝,每一个人的行为都在时刻被上帝那双无形的眼睛监控着,广义上讲,一个用户打开网页,买了一个杯子;与该用户 傍晚溜了趟狗,白天取了一次钱,打了一个哈欠等等一样都是上帝眼中的用户行为。当行为集中到互联网,乃至电商,用户行为就会聚焦很多,如上图所示:浏览凡 客首页、浏览休闲鞋单品页、搜索帆布鞋、发表关于鞋品质的微博、赞“双十一大促给力”的微博消息。等等均可看作互联网用户行为。

本篇文章以互联网电商用户,为主要分析对象,暂不考虑线下用户行为数据(分析方法雷同,只是数据获取途径,用户识别方式有些差异)。

在互联网上,用户行为,可以看作用户动态信息的唯一数据来源。如何对用户行为数据构建数据模型,分析出用户标签,将是本文着重介绍的内容。

3.2 目标分析

用户画像的目标是通过分析用户行为,最终为每个用户打上标签,以及该标签的权重。如,红酒 0.8、李宁 0.6。

标签,表征了内容,用户对该内容有兴趣、偏好、需求等等。

权重,表征了指数,用户的兴趣、偏好指数,也可能表征用户的需求度,可以简单的理解为可信度,概率。

3.3 数据建模方法

下面内容将详细介绍,如何根据用户行为,构建模型产出标签、权重。一个事件模型包括:时间、地点、人物三个要素。每一次用户行为本质上是一次随机事件,可以详细描述为:什么用户,在什么时间,什么地点,做了什么事。

什么用户 :关键在于对用户的标识,用户标识的目的是为了区分用户、单点定位。

以上列举了互联网主要的用户标识方法,获取方式由易到难。视企业的用户粘性,可以获取的标识信息有所差异。

什么时间 :时间包括两个重要信息,时间戳+时间长度。时间 戳,为了标识用户行为的时间点,如,1395121950(精度到秒),1395121950.083612(精度到微秒),通常采用精度到秒的时间戳即 可。因为微秒的时间戳精度并不可靠。浏览器时间精度,准确度最多也只能到毫秒。时间长度,为了标识用户在某一页面的停留时间。

什么地点 :用户接触点,Touch Point。对于每个用户接触点。潜在包含了两层信息:网址 + 内容。网址:每一个url链接(页面/屏幕),即定位了一个互联网页面地址,或者某个产品的特定页面。可以是PC上某电商网站的页面url,也可以是手机 上的微博,微信等应用某个功能页面,某款产品应用的特定画面。如,长城红酒单品页,微信订阅号页面,某游戏的过关页。

内容 :每个url网址(页面/屏幕)中的内容。可以是单品的相关信息:类别、品牌、描述、属性、网站信息等等。如,红酒,长城,干红,对于每个互联网接触点,其中网址决定了权重;内容决定了标签。

注:接触点可以是网址,也可以是某个产品的特定功能界面。如,同样一瓶矿泉水,超市卖1元,火车 上卖3元,景区卖5元。商品的售卖价值,不在于成本,更在于售卖地点。标签均是矿泉水,但接触点的不同体现出了权重差异。这里的权重可以理解为用户对于矿 泉水的需求程度不同。即,愿意支付的价值不同。

标签 权重

矿泉水 1 // 超市

矿泉水 3 // 火车

矿泉水 5 // 景区

类似的,用户在京东商城浏览红酒信息,与在品尚红酒网浏览红酒信息,表现出对红酒喜好度也是有差异的。这里的关注点是不同的网址,存在权重差异,权重模型的构建,需要根据各自的业务需求构建。

所以,网址本身表征了用户的标签偏好权重。网址对应的内容体现了标签信息。

什么事 :用户行为类型,对于电商有如下典型行为:浏览、添加购物车、搜索、评论、购买、点击赞、收藏 等等。

不同的行为类型,对于接触点的内容产生的标签信息,具有不同的权重。如,购买权重计为5,浏览计为1

红酒 1 // 浏览红酒

红酒 5 // 购买红酒

综合上述分析,用户画像的数据模型,可以概括为下面的公式:用户标识 + 时间 + 行为类型 + 接触点(网址+内容),某用户因为在什么时间、地点、做了什么事。所以会打上**标签。

用户标签的权重可能随时间的增加而衰减,因此定义时间为衰减因子r,行为类型、网址决定了权重,内容决定了标签,进一步转换为公式:

标签权重=衰减因子×行为权重×网址子权重

如:用户A,昨天在品尚红酒网浏览一瓶价值238元的长城干红葡萄酒信息。

标签:红酒,长城

时间:因为是昨天的行为,假设衰减因子为:r=0.95

行为类型:浏览行为记为权重1

地点:品尚红酒单品页的网址子权重记为 0.9(相比京东红酒单品页的0.7)

假设用户对红酒出于真的喜欢,才会去专业的红酒网选购,而不再综合商城选购。

则用户偏好标签是:红酒,权重是0.95*0.7 * 1=0.665,即,用户A:红酒 0.665、长城 0.665。

上述模型权重值的选取只是举例参考,具体的权重值需要根据业务需求二次建模,这里强调的是如何从整体思考,去构建用户画像模型,进而能够逐步细化模型。

四、总结 :

本文并未涉及具体算法,更多的是阐述了一种分析思想,在计划构建用户画像时,能够给您提供一个系统性、框架性的思维指导。

核心在于对用户接触点的理解,接触点内容直接决定了标签信息。内容地址、行为类型、时间衰减,决定了权重模型是关键,权重值本身的二次建模则是水到渠成的进阶。模型举例偏重电商,但其实,可以根据产品的不同,重新定义接触点。

比如影视产品,我看了一部电影《英雄本色》,可能产生的标签是:周润发 0.6、枪战 0.5、港台 0.3。

最后,接触点本身并不一定有内容,也可以泛化理解为某种阈值,某个行为超过多少次,达到多长时间等。

比如游戏产品,典型接触点可能会是,关键任务,关键指数(分数)等等。如,积分超过1万分,则标记为钻石级用户。钻石用户 1.0。

百分点现已全面应用用户画像技术于推荐引擎中,在对某电商客户,针对活动页新访客的应用中,依靠用户画像产生的个性化效果,对比热销榜,推荐效果有显著提升:推荐栏点击率提升27%, 订单转化率提升34%。

云图中的每个字的大小与出现的频率或次数成正比,词云图的统计意义不是特别大,主要是为了美观,用于博客和网站比较常见。

导入数据

library(tm)

library(wordcloud)

Text1<-paste(scan("Text1.txt",what=character(0),sep=""),collapse="")

Text2<-paste(scan("Text2.txt",what=character(0),sep=""),collapse="")

TEXT<-data.frame(c(Text1,Text2),row.names=c("Text1","Text2"))

TEXT_title<-data.frame(doc_id=row.names(TEXT),text=TEXT$c.Text1..Text2.

复制

)#这里的doc_id不可替换成别的词

创建数据框格式的文本

#创建数据框格式的文本,第一列是doc_id,第二列是文章内容

TEXT_ds<-DataframeSource(TEXT_title)

复制

构建语料库

Corpus<-VCorpus(TEXT_ds)

复制

针对语料库文本转换

思路:删除语料库中的标点符号,字母转换为小写,删除数字,删除空白字符,过滤掉停止词库之后转换为纯文本。

Corpus<-tm_map(Corpus,removePunctuation)#删除标点符号

Corpus<-tm_map(Corpus,tolower)#转换为小写

Corpus<-tm_map(Corpus,removeNumbers)#删除数字

Corpus <- tm_map(Corpus,stripWhitespace)#删除空白字符

Corpus <- tm_map(Corpus,function(x){removeWords(x,stopwords())})

Corpus <- tm_map(Corpus,PlainTextDocument)#转换为纯文本

复制

针对语料库断字处理,生成词频权重矩阵

Term_matrix<-TermDocumentMatrix(Corpus)

>Term_matrix

<<TermDocumentMatrix (terms: 2462, documents: 2)>>

Non-/sparse entries: 3215/1709

Sparsity : 35%

Maximal term length: 16

Weighting : term frequency (tf)

复制

查看Term_matrix得知2篇文章共2456个字,稀疏度为35%,最大词长度是16。

#计算频率

Term_matrix<-as.matrix(Term_matrix)

复制

#对词频权重矩阵的表头进行命名

colnames(Term_matrix)<-c("Text1","Text2")

复制

#把矩阵转为便于后续统计分析的数据框

Data<-data.frame(Term_matrix)

复制

#导出两篇文章的频率分析结果,文件名为Term_matrix

write.csv(Data,'Term_matrix.csv')

复制

读取文件

read.csv('Term_matrix.csv',header=TRUE,row.names=1)

复制

#分开绘制两篇文章的词云

wordcloud(row.names(Data),Data$Text1,min.freq=9.5,col=brewer.pal(8,"Dark2"),rot.per=0.3)

复制

wordcloud(row.names(Data),Data$Text2,min.freq=9.5,col=brewer.pal(8,"Dark2"),rot.per=0.2)

复制

#两篇文章对比

comparison.cloud(Data,max.words=250,random.order=FALSE,colors=c("#00B2FF","#084081"))

复制

#通过设置max.word的大小决定显示图中文本的多少。

两篇文章共有词部分

commonality.cloud(Data,max.words=120,random.order=FALSE,colors="#66A61E")

复制

绘制星形图

将Data数据计算频率Freq=n/sum(n),根据频率绘制星形图。

wordcloud2(Data1,size=0.4,shape='star')

复制

本文参与 腾讯云自媒体分享计划,欢迎热爱写作的你一起参与!

本文章分享自微信公众号

菜鸟学数据分析之R语言

作者:刘晓雪

原始发表时间:2020-07-25

如有侵权,请联系 [email protected] 删除。

展开阅读全文

腾讯云图

文章来自专栏

菜鸟学数据分析之R语言

77 篇文章22 人关注

订阅

评论 (0)

写评论

暂无人发表评论

相关文章

Python数据可视化 词云图 绘制词云的方法总结

pyecharts是基于echarts的python库,能够绘制多种交互式图表,和其他可视化库不一样,pyecharts支持链式调用。

(数据科学学习手札71)在Python中制作个性化词云图

词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词:

【数据挖掘 | 可视化】 WordCloud 词云(附详细代码案例)

在七夕节中,博主写了一篇为女友收集QQ聊天记录做可视化词云的文章获得广泛好评,一直有小伙伴希望能出一篇教程,今天他来啦! 一文带你速通词云?‍♂️

R-wordcloud: 词云图

好几位读者来信说,《R语言数据可视化之美》(增强版)的词云图的代码有问题,我今天更新了一轮,这主要原因在R语言及其包的更新,导致源代码有可能运行错误。R语言的优...

WordCloud词云库快速入门(一)

wordcloud是优秀的词云展示第三方库,以词语为基本单位,通过图形可视化的方式,更加直观和艺术的展示文本。

Day10.如何给⽑不易的歌曲做词云展示

我们经常需要对分析的数据提取常⽤词,做词云展示。⽐如⼀些互联⽹公司会抓取⽤户的画像,或者每⽇讨论话题的关键词,形成词云并进⾏展示。

词云绘制,推荐三种 Python包外加一个在线网站!

本篇文章先介绍几种制作词云的 Python 库,分别是 WordCloud、StyleCloud、Pyecharts;再加一个在线词云制作网站;最后通过代码实操...

关于词云可视化笔记一(wordcloud和英文词汇可视化)

一直比较关注数据可视化这块,对于分词和词的可视化却始终不明就里,直到看到词云,当时惊为天人,不过词云的制作还是非常麻烦,直到2017年Python走近我的视野中...

词云图,看过没做过?快来,教你秘籍

今天我们来说一说可视化的问题,如果这个时候我们要对频数进行可视化的话,我们首先想到的应该是一个什么样子的图形呢?很多人可能会说是柱状图。还有一些科研喵们,看过我...

使用pyecharts绘制词云图-淘宝商品评论展示

词云图是一种用来展现高频关键词的可视化表达,通过文字、色彩、图形的搭配,产生有冲击力地视觉效果,而且能够传达有价值的信息。

WordCloud 中英文词云图绘制,看这一篇就够了

摘要: 当我们手中有一篇文档,比如书籍、小说、电影剧本,若想快速了解其主要内容是什么,则可以采用绘制 WordCloud 词云图,显示主要的关键词(高频词)这种...

Python带你看不一样的《青春有你2》小姐姐之评论内容可视化

详细介绍和用法可以去github看:https://github.com/fxsjy/jieba,这里不多做介绍,只介绍本次用到的

NLP快速入门:手把手教你用wordcloud做词云

导读:在上一章节介绍在Python环境下调用HanLP包进行分词的基础上,本文将介绍如何使用wordcloud绘制词云。尽管目前市面上已经有很多成熟的在线交互词...

WordCloud 中英文词云图绘制,看这一篇就够了

摘要: 当我们手中有一篇文档,比如书籍、小说、电影剧本,若想快速了解其主要内容是什么,则可以采用绘制 WordCloud 词云图,显示主要的关键词(高频词)这种...

一起用Python来看看川普今年在推特上都发了些什么

川普作为一个推特狂人,上台以来一共发了一万多条推特,本文爬取了川普在2020年的全部推特内容并将其绘制成了词云图。

词云图wordcloud学习笔记

词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。

excel也那绘制词云图哦!还有很多的可视化图表可挑选!

excel是老牌的数据可视化软件了,很多方面都已经很完美了,很多的图表都可以轻松绘制出来,但如果想要做的好看,就需要一些技巧了。

更多文章

社区活动

腾讯云自媒体分享计划

入驻社区,可分享总价值百万资源包

邀请好友加入自媒体分享计划

邀请好友,同享奖励 30 / 100 / 180 元云服务器代金券

长按识别或截图保存

关注腾讯云开发者

Copyright © 2013-2022

Tencent Cloud. All Rights Reserved.

腾讯云 版权所有

点赞

3

评论

0