链接:http://www.elecfans.com/d/763559.html
用户标签权重 = 行为类型权重 × 时间衰减 × 用户行为次数 × TF-IDF计算标签权重
公式中各参数的释义如下:
行为类型权重:用户浏览、搜索、收藏、下单、购买等不同行为对用户而言有着不同的重要性,一般而言操作复杂度越高的行为权重越大。该权重值一般由运营人员或数据分析人员主观给出;
时间衰减:用户某些行为受时间影响不断减弱,行为时间距现在越远,该行为对用户当前来说的意义越小;
行为次数:用户标签权重按天统计,用户某天与该标签产生的行为次数越多,该标签对用户的影响越大;
TF-IDF计算标签权重:每个标签的对用户的重要性及该标签在全体标签中重要性的乘积得出每个标签的客观权重值;
为计算用户偏好标签,需要在用户行为标签的基础上计算用户行为标签对应的权重值,而后对同类标签做权重汇总,算出用户偏好的标签。关于用户行为标签如何打,在这篇博客里面有介绍过了
用户画像—打用户行为标签
下面介绍如何在用户行为标签表的基础上加工用户偏好标签:
1、用户标签权重表结构设计
字段定义:
用户id(user_id):用户唯一id;
标签id(tag_id):图书id;
标签名称(tag_name):图书名称;
用户行为次数(cnt):用户当日产生该标签的次数,如用户当日浏览一本图书4次,则记录4;
行为日期(date_id):产生该条标签对应日期;
标签类型(tag_type_id):在本案例中通过与图书类型表相关联,取出每本图书对应的类型,如《钢铁是怎么炼成的》对应“名著”;
用户行为类型(act_type_id):即用户的购买、浏览、评论等操作行为,在本例中通过预设数值1~7来定义用户对应的行为类型。1:购买行为,2:浏览行为,3:评论行为,4:收藏行为,5:取消收藏行为,6:加入购物车行为,7:搜索行为;
2、在用户行为标签基础上加工权重表
加工标签权重表时,需要根据用户不同行为对应的权重建立一个权重维表:
向维表中插入数据:
3、对每个用户偏好的每个标签加总求权重值,对权重值做倒排序,取top N
二、用户画像—数据指标与表结构设计
本段文章介绍一下画像中需要开发的数据指标与开发过程中表结构的设计。
首先介绍画像开发的数据指标,画像开发过程中通用类的指标体系包括用户属性类、用户行为标签类、用户活跃时间段类、用户消费能力类、用户偏好类等
数据指标体系
用户属性指标
用户属性指标根据业务数据来源,尽可能全面地描述用户基础属性,这些基础属性值是短期内不会有改变的。如年龄、性别、手机号归属地、身份证归属地等
用户登录活跃指标
看用户近期登录时间段、登录时长、登录频次、常登陆地等指标
用户消费能力指标
看用户的消费金额、消费频次、最近消费时间。进一步结合用户登录活跃情况,可以对用户做RFM分层。
用户流失层级
根据用户的活跃度及消费情况,判断用户的流失意向。可及时对有流失趋向的用户做营销召回
用户年龄段划分
在做营销活动或站内推送时,可对不同年龄段做针对性运营
用户行为标签
记录用户在平台上每一次操作行为,及该次行为所带来的标签。后续可根据用户的行为标签计算用户的偏好标签,做推荐和营销等活动
表结构设计
对于画像数据的存储,除了用户属性这种基本上短期不会有变化的数据,其他相关数据的更新频率一般都比较高,为周更新或日更新
画像数据更新较为频繁,通常使用分区来将数据从物理上转移到离用户最近的地方。
一般对日期字段进行分区,当然事实上分区是为了优化查询性能,否则使用数据的用户也不需要关注这些字段是否分区。
例如说创建一个用户行为标签表:
CREATE TABLE userprofile( user_id string, tag_id string, tag_name string, cnt string, act_type_id string, tag_type_id string ) PARTITION BY (date_id string);
分区表改变了Hive对数据的存储方式,如果没做分区,创建的这个表目录为:
hdfs://master_server/user/hive/warehouse/userprofile
创建日期分区后,Hive可以更好地反映分区结构子目录:
hdfs://master_server/user/hive/warehouse/userprofile/date_id=‘2018-05-01’
在userprofile表下面,每个日期分区的数据可以存储截止到当日的全量历史数据,方便使用者查找。
链接:http://www.elecfans.com/d/725238.html
本文主要分享的是打在用户身上标签的权重是如何确定的。
如上图所示,一个用户标签表里面包括常见的字段如:用户id、用户姓名、标签id、标签名称、用户与该标签发生行为的次数(如搜索了两次“大数据”这个关键词)、行为类型(不同的行为类型对应用户对商品不同的意愿强度,如购买某商品>收藏某商品>浏览某商品>搜索某商品),行为时间(越久远的时间对用户当前的影响越小,如5年前你会搜索一本高考的书,而现在你会搜索一本考研的书)。最后非常重要的一个字段是标签权重,该权重影响着对用户属性的归类,属性归类不准确,接下来基于画像对用户进行推荐、营销的准确性也就无从谈起了。下面我们来讲两种权重的划分方法:
1、基于TF-IDF算法的权重归类
TF-IDF算法是什么思想,这里不做详细展开,简而言之:一个词语的重要性随着它在该文章出现的次数成正比,随它在整个文档集中出现的次数成反比。
比如说我们这里有3个用户和4个标签,标签和用户之间的关系将会在一定程度上反应出标签之间的关系。这里我们用w(P , T)表示一个标签T被用于标记用户P的次数。TF(P , T)表示这个标记次数在用户P所有标签中所占的比重,公式如下图:
对上面的图来说,用户1身上打了标签A 5个,标签B 2个,标签C 1个,那么用户1身上的A标签TF=5/(5+2+1) 。相应的IDF(P , T)表示标签T在全部标签中的稀缺程度,即这个标签的出现几率。如果一个标签T出现几率很小,并且同时被用于标记某用户,这就使得该用户与该标签T之间的关系更加紧密。
然后我们根据TF * IDF即可得到该用户该标签的权重值。到这里还没结束,此时的权重是不考虑业务场景,仅考虑用户与标签之间的关系,显然是不够的。还需要考虑到该标签所处的业务场景、发生的时间距今多久、用户产生该标签的行为次数等等因素。我用个图总结下:
关于时间衰减的函数,根据发生时间的先后为用户行为数据分配权重。
时间衰减是指用户的行为会随着时间的过去,历史行为和当前的相关性不断减弱,在建立与时间衰减相关的函数时,我们可套用牛顿冷却定律数学模型。牛顿冷却定律描述的场景是:一个较热的物体在一个温度比这个物体低的环境下,这个较热的物体的温度是要降低的,周围的物体温度要上升,最后物体的温度和周围的温度达到平衡,在这个平衡的过程中,较热物体的温度F(t)是随着时间t的增长而呈现指数型衰减,其温度衰减公式为:
F(t)=初始温度×exp(-冷却系数×间隔的时间)
其中α为衰减常数,通过回归可计算得出。例如:指定45分钟后物体温度为初始温度的0.5,即 0.5=1×exp(-a×45),求得α=0.1556。
2、基于相关系数矩阵的权重归类
这个相关系数矩阵听title挺困难,其实道理十分简单。举个例子:用户1身上打上了5个A标签、2个B标签、1个C标签;用户2身上打上了4个A标签,3个B标签;用户3身上打上了4个C标签、1个D标签。
用个图形象表示一下:
那么同时打上A、B标签的用户有两个人,这就说明AB之间可能存在某种相关性,当用户量、标签量级越多时,标签两两之间的相关性也越明显。