用户画像系列——推荐相关核心标签(偏好类)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 用户画像系列——推荐相关核心标签(偏好类)

一、背景

我们经常在逛购物网站或者刷抖音、听网易云音乐的时候,会有猜你喜欢或者为你推荐这样一个功能,而这依赖的就是用户画像的偏好类标签:比如说明星偏好(喜欢某个明星或者歌手的作品)、类型偏好(比如说:喜欢美妆类、喜欢美食类)


二、偏好标签加工的核心逻辑

偏好类标签一般都是以用户的行为日志进行加工。

比如说:视频类软件(观影日志、评论日志、点赞日志、收藏日志)——内容偏好、类型偏好、明星偏好,电商类(订单日志、浏览日志、收藏日志、加购物日志)——商品偏好、价格偏好、品牌偏好

下面我们以视频类软件为例来详细讲解下偏好类标签的加工逻辑

1.偏好类事实型:主要是根据用户观影数据来计算用户在某个内容或者类型下的观影总时长和最后一次观影时间

上面是一张播放行为表,涵盖了基本的播放行为数据,和一张为tag维表(一个电视剧或者电影会打上非常多的标签,表中只是罗列了3个)

根据上述两张表可以生成如下用户观影tag表,能看到一个电视剧或者电影能很明显的

根据上述表进行计算得到每个用户在每个标签下的观影总时长,该标签下最后一次观影时间

select userid,content_tag,sum(play_time) as total_time,max(last_play_time) as last_play_time from dws_user_play_info_tag group by userid,content_tag

这样每个用户的内容偏好标签即可计算完成

注:当我们想看用户最近半年的观影偏好时,就用用户最近半年的观影数据来进行计算即可,这样就能动态产出用户观影偏好

细心的读者发现打在某个tag上有观影总时长和最后一次观影时间,观影总时长能看出这个用户对于这种tag的内容非常感兴趣,而最后一次观影时间说明最近用户在观看这部分内容。

相当于总时长代表的是一个长期兴趣,而最后一次观影代表的是用户的一个短期兴趣。比如说:用户男性经常观看古装或者美女,但是最近有一个毕竟火的热点视频,该用户也在观看,但这种只能代表用户最近一段时间的兴趣偏好,当过了这段时间就应该选用长期兴趣标签了。

2.偏好类权重型:主要是根据用户观影数据来计算用户在某个内容或者类型下的观影权重,比如说权重越高说明用户对于某个内容更感兴

用户观影权重表

INSERT OVERWRITE TABLE dws_user_play_weight_info PARTITION(dt='${current_date}')
select userid, id, sum(feature_value) as feature_value
from (
select
userid,   --用户id
id,    --电视剧或者电影id
exp(-1 * cast(datediff('${current_date}', dt) / 7 as int) * 7 / (28 * 3 / 2.0))
* 1.0 / ( 1.0 + exp(-0.01 * ( playtime - 400 ))) as weight
from dwd_user_play_info
where dt between '${current_date-28}' and '${current_date}'   ---28天一个周期
union all
-- 4周之前
select userid, id,
exp(-1 * 28 / (28 * 3 / 2.0))* weight as weight --衰减
from dws_user_play_weight_info
where dt='${current_date-29}'
)T2
group by userid, id
having sum(weight) > 0.001
distribute by userid;

注:权重公式系数非常有讲究,主要看是关注最后一次观影时间还是更加关注播放时长,如果更关注时长则时长权重更大,如果更加关注最后一次观音时间则此处系数应该更大。

归一化:直接按照视频id打上标签然后相加权重值明显会超过1,因此需要归一化处理

select userid, tag, weight
from (
select userid, id, weight, row_number() over(partition by userid order by weight desc) as rn
from (
select
userid,
id,
2 / ( 1 + exp(-0.5 * (sum(s1) + sum(s2)) )) - 1 as weight
from (
-- 2. 近期观影
select
A.account_id,
B.tag,
0 as s1,
A.weight * B.weight as s2,
1 as s3
from (
select id, tag, weight  ---weight都为1,后续可给标签加上权重代表该标签重要性较强
from dim_content_tag_info ---内容标签打平之后的表
)B
inner join (select * from dws_user_play_weight_info  ---用户观影权重表
where dt='${current_date}') A
on B.id =A.id
)T1
group by userid, tag
)T2
)T3
where rn <= 50 and weight > 0.01;

三、总结

至此即完成了偏好类标签的处理和加工,应用的话,可以在广告、推荐等多个场景进行应用。比如说:某个用户经常看搞笑视频可以给它推荐搞笑的玩具或者视频等等


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
存储 SQL 分布式计算
用户画像系列—如何从0到1建设用户画像
用户画像系列—如何从0到1建设用户画像
346 0
|
存储 搜索推荐 关系型数据库
用户画像系列——HBase 在画像标签过期策略中的应用
用户画像系列——HBase 在画像标签过期策略中的应用
231 0
|
机器学习/深度学习 数据采集 自然语言处理
使用Python实现深度学习模型:智能广告创意生成
使用Python实现深度学习模型:智能广告创意生成
240 4
|
JavaScript 前端开发 开发者
vue3+ts配置跨域报错问题解决:> newpro2@0.1.0 serve > vue-cli-service serve ERROR Invalid options in vue.
【6月更文挑战第3天】在 Vue CLI 项目中遇到 &quot;ERROR Invalid options in vue.config.js: ‘server’ is not allowed&quot; 错误是因为尝试在 `vue.config.js` 中使用不被支持的 `server` 选项。正确配置开发服务器(如代理)应使用 `devServer` 对象,例如设置代理到 `http://xxx.com/`: ```javascript module.exports = { devServer: {
618 1
|
缓存 Kubernetes Cloud Native
带你读《2022龙蜥社区全景白皮书》——6.1.3 资源混部场景的内核隔离实现方案(上)
带你读《2022龙蜥社区全景白皮书》——6.1.3 资源混部场景的内核隔离实现方案(上)
347 85
|
12月前
|
存储 编译器 程序员
结构体对齐规则对程序的性能有何影响?
结构体对齐规则是指编译器为了提高内存访问效率,按照特定规则在内存中分配结构体成员的位置。合理的对齐能减少内存访问次数,提升程序运行速度;反之,不当的对齐可能导致内存浪费和性能下降。
|
机器学习/深度学习 供应链 算法
如何从实验中获得更多?——AB实验的异质性分析实践
本文阐述了异质性分析的基本原理和方法、具体实践流程、落地等情况,总结实践经验,也期待更多交流和探讨。
|
数据处理
使用马尔可夫链对营销中的渠道归因建模
使用马尔可夫链对营销中的渠道归因建模
如何查看CentOS 7 虚拟机的IP地址
这篇文章介绍了如何在CentOS 7虚拟机中查看IP地址的方法。虽然具体内容没有提供,但通常在CentOS系统中,可以通过打开终端并使用`ifconfig`命令(或在最新版本中使用`ip addr`命令)来查看网络接口的IP地址。如果需要查看特定网络接口的详细信息,可以使用`ifconfig 接口名称`或`ip addr show 接口名称`。
如何查看CentOS 7 虚拟机的IP地址
|
存储 安全 Java
Spring Security 6.x OAuth2登录认证源码分析
上一篇介绍了Spring Security框架中身份认证的架构设计,本篇就OAuth2客户端登录认证的实现源码做一些分析。
934 2
Spring Security 6.x OAuth2登录认证源码分析