用户序列建模方法总结

用户序列建模方法

摘要:

推荐系统用户的可用特征可以归类:

  • 静态特征:用户年龄、属性、地域等特征。
  • 动态特征:用户行为序列。

这里主要是对各种常见的算法对动态特征的建模进行总结
主要包括了:

  • 池化:DNN for youtube,deep&wide
  • attention: DIN,DIEN
  • 序列思路:GRU4REC,LSTM等
  • 多兴趣特征建模:MIND
  • 基于强化学进行建模的法

简介

用户行为序列特征是推荐系统中重要的动态变化的特征。 用户的行为序列可以明显的加强不同样本之间的区分度;在推荐系统中,用户的兴趣是动态变化的,因此,仅仅依靠静态特征进行产出推荐列表,不能满足用户兴趣的实时性保障。
目前,对用户的行为序列进行建模的思路可以分为以下三类:

  • 池化方式:最典型的池化方式就是sum、mean等,即将用户过去一段时间的行为看作一个无序的序列。例如,谷歌的DNN for youtube,deep&wide网络等。
    • 这种方法简便易行,但是他忽略用户行为序列的顺序等信息
  • 注意力机制:这种方式可以认为是采用了加权平均的池化方式。 参考了NLP中常见的各种注意力机制,利用输入的行为序列,计算序列各行为的权重,考虑序列行为中不同行为的贡献峰值。例如,Deep interest network,deep interest evlovenetwork等。然鹅,还是没有考虑行为序列的先后方式。
  • 序列的网络结构建模方式:这种方式将用户行为看作一个带有时间属性的序列,一般来说通过lstm,gru,transformer等可以考虑位置信息的组件来进行建模。
  • 目前也有研究认为用户具有多兴趣特征,而单一的hidden(lstm/attention/池化后出现来embedding)只能代表用户一个兴趣点。这些方式对用户的多兴趣表达进行了建模。 Multi-Interest Network with Dynamic Routing。

算法详解

一、 Pooling套路的算法

1. DNN for youtube

引自《Deep Neural Networks for YouTube Recommendations》

引用自《Deep Neural Networks for YouTube Recommendations》

简单来讲就是:

  1. 根据用户的播放历史产出hunderds from millions 的候选集。候选集筛选网络通过协同过滤CF来完成。在youtube这个上面用了,user-based的协同过滤。“a matrix factorization approach trainedunder rank loss”
  2. 之后在召回的数百的list上进行ranking,rank网络通过用户行为序列特征、用户静态特征、vedio的特征输出分值,然后根据分值高低进行排序。
1.1 问题描述

在yotube的这个推荐算法里将推荐问题变成了多分类问题,因而,该问题可以由如下式子描述,其中 P ( w t = i ∣ U , C ) P(w_t=i | U,C) P(wt=iU,C) 代表用户 U U U在候选集 C C C中会去video i i i 的概率:
P ( w t = i ∣ U , C ) = s i ∑ j = 1 N s j P(w_t=i | U,C) = \frac{s_i}{\sum_{j=1}^{N}{s_j}} P(wt=iU,C)=j=1Nsjsi
where:
s i = e v j ∗ u s_i = e^{v_j*u} si=evju

1.2 求解问题/训练模型

在该算法里,作者尝试了hierachical softmax 来处理上面那个million级别的分类问题,但是效果不太好,我自己的猜测式,不同于训练word2vec词向量,这个事情比较难找好用建树的启发式规则。故而作者用了negative sampling的套路。

  • 每个训练输入采用负采样的获取多个负样例
  • 然后采用重要性权重进行修正

线上serve的时候从millions中搞出候选集,显然不能直接softmax分类,top N推荐:

  • 采用哈希分桶
  • 最近邻
1.3 模型架构与特征

具体细节可以从下面的图看出来:
在这里插入图片描述

引用自《Deep Neural Networks for YouTube Recommendations》

图中展示采用的feature包括:

  • 静态特征: 年龄、性别、地理特征 等等等。
  • 动态特征: 观看的视频的集合、搜索的文本的集合。
    注意:这里它对动态特征的使用就是简单按分组进行平均, 也就是我们所说的平均的池化方式

二、attention方式的算法

1. Deep Interest Network

写在其他地方

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UML(统一建模语言)是一种用于软件开发的图形化建模语言,它可以帮助开发者以可视化的方式呈现软件系统的架构、结构和行为。以下是一些常见的UML建模实例: 1. 用例图:用于描述系统的功能需求和用户与系统的交互。 2. 类图:用于描述系统中的类、属性和方法之间的关系,用于分析和设计系统的静态结构。 3. 对象图:用于展示特定时刻系统中对象之间的关系。 4. 序列图:用于描述对象之间的时序关系,可以展示对象之间的消息传递和相互作用。 5. 活动图:用于描述系统中的流程、动态行为和状态转换。 6. 状态图:用于描述对象或系统的状态和状态转换。 7. 组件图:用于描述系统中的组件、接口和依赖关系。 8. 部署图:用于描述系统中的物理部署架构和节点之间的连接。 9. 包图:用于组织系统中的类和子系统,并描述它们之间的依赖关系。 10. 通信图:用于展示对象之间的通信路径和消息传递。 除了上述的基本UML建模实例外,还可以根据具体的项目需求和开发阶段使用其他类型的UML图,例如: 11. 构件视图:描述系统的组件和其关系。 12. 部署视图:描述系统的物理部署配置。 13. 元模型:描述UML元素的抽象概念和关系。 14. 用例描述:详细描述用例的各个步骤和流程。 15. 包图:用于按照包的层次结构组织类和部分。 16. 状态机图:用于描述系统或对象的状态和状态转换规则。 17. 构造图:用于描述对象的实例化和构造流程。 18. 领域建模:用于描述系统的业务领域和领域对象。 19. 接口设计:描述软件系统的接口定义和方法操作。 20. 模式建模:描述系统中常用的设计模式和模型。 总结来说,UML建模可以灵活地应用于软件开发的各个阶段和各个层面,帮助开发者更好地理解和设计软件系统。以上仅是一些常见的UML建模实例,实际应用中还可以根据具体需求进行扩展和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值