当前位置:   article > 正文

nlp-推荐算法1_nlp和推荐算法

nlp和推荐算法

推荐算法–初识

是什么

【推荐算法】就是利用用户的一些行为,通过一些数学算法,推测出用户可能喜欢的东西

为什么

推荐算法的研究起源于20世纪90年代,由美国明尼苏达大学 GroupLens研究小组最先开始研究,他们想要制作一个名为 Movielens的【电影推荐系统】,从而实现对用户进行电影的个性化推荐。
首先研究小组让用户对自己看过的电影进行评分,然后小组对用户评价的结果进行分析,并预测出用户对并未看过的电影的兴趣度,从而向他们推荐从未看过并可能感兴趣的电影。此后, Amazon开始在网站上使用推荐系统,在实际中对用户的浏览购买行为进行分析,尝试对曾经浏览或购买商品的用户进行个性化推荐。根据 enture Beat的统计,这一举措将该网站的销售额提高了35%。

怎么做

实现推荐算法的方法有很多种:
推荐算法分类
【按照推荐目的分可以分为】

  • 个性化推荐:基于用户的兴趣爱好 ; eg:今日头条、淘宝,京东
  • 相关推荐:根据用户行为推荐与之相关的内容;eg:以物推物的相关内容推荐
  • 热门推荐:根据全站的内容,推荐当下最热门的内容;eg:新闻推荐

【按照实现方法分可以分为】

  • 基于用户的推荐
  • 基于物品的推荐
  • 基于协同推荐、混合推荐算法、
  • 基于图的推荐算法
  • 基于深度学习的推荐算法

推荐算法关注3大关系

  • 用户之间的相似关系
  • 产品之间的相似关系
  • 用户和产品之间的相似关系

特征描述

用户行为(用户画像):访问次数、停留时长、访问频率、评论、购买、下载等

物品属性:元数据、描述、主题等
用户喜好:过去购买或收藏过什么东西等

推荐算法需要注意的点

  1. 怎么验证推送效果,实现优化闭环, 怎么设计数据 埋点
  1. 长尾问题
  2. 冷启动问题
  3. 新用户或新物品问题
  4. 用户|物品 分类数据不均衡得问题

协同过滤推荐算法

基于用户的 CF(User CF)
基于用户的 CF 的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到 K 邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。图 2 给出了一个例子,对于用户 A,根据用户的历史偏好,这里只计算得到一个邻居 - 用户 C,然后将用户 C 喜欢的物品 D推荐给用户 A。

基于物品的 CF(Item CF)
基于物品的 CF 的原理和基于用户的 CF 类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得到一个排序的物品列表作为推荐。图 3 给出了一个例子,对于物品 A,根据所有用户的历史偏好,喜欢物品 A 的用户都喜欢物品 C,得出物品 A 和物品 C 比较相似,而用户 C 喜欢物品 A,那么可以推断出用户 C 可能也喜欢物品 C。

博客笔记

推荐系统的目的是通过推荐计算帮助用户从海量的数据对象中选择出用户最有可能感兴趣的对象。涉及三个基本内容:目标用户、待推荐项目以及推荐算法,基本流程为:描述为用户模型构建、项目模型建立以及推荐算法处理三个基本流程;
推荐算法流程参考:https://www.jianshu.com/p/dcbdad094de7
基于物品的协同过滤算法主要思想是为用户推荐那些与他们呢之前喜欢的物品相似的物品。不过基于物品的协同过滤算法并不是利用物品的内容属性特征来计算物品之间的相似性,而是利用用户的历史行为数据计算待推荐物品之间的相似性

目前主流的推荐方法如基于内容的推荐、协同过滤推荐、基于知识的推荐、基于网络结构的推荐、混合推荐等

1、深入理解YouTube推荐系统算法
第一部分 召回网络:此阶段主要目的是从百万级的视频中检索出一小部分的视频用于之后的排序操作,这部分需要处理的数据量非常大,速度要求快,所有使用的模型和特征都不能太复杂。召回网络会根据用户的历史信息(比如用户的历史观看、搜索等)进行召回,这一阶段召回的视频满足用户泛化的兴趣,用户之间的相似度则通过粗略的特征来表示,如用户观看视频的ID,搜索query和用户画像。
第二部分 排序网络:此阶段会使用更加丰富和精细的用户和视频特征,预测用户对召回的视频打分,然后根据分数进行排序,依次展示给用户。这部分最主要是能够精准的将视频推送给用户,所以需要更加复杂的模型和特征来提升推荐效果。
第三部分 线下评估:评估指标有precision、recall、ranking loss等,最终的效果还是需要线上做A/B测试,关注的指标包括:点击率、观看时间等;需要指出的是,线上线下有时候并不能保持一致的结果。

【召回】
目的:从大量的数据集中选出候选集合
要求:速度要快

DSSM 模型用于提取用户和item的embedding
训练阶段:利用孪生网络分别训练query和iteam的特征并映射到embedding向量,输出为query和iteam向量的点击,目标函数是query和iteam的点击与真实用户和iteam的相关性矩阵(one hot 矩阵,eg:用户是否看过该iteam)
预测阶段:将用户和context特征输入DNN,用隐含层最后一层作为向量表示,用Softmax每个item对应的参数作为item的向量表示,通过内积最大索引得到top k

TDM 试图通过树结构搜索与深度学习模型来解决召回的高性能需求与使用复杂模型进行全局搜索之间的平衡。他将召回问题转化为层级化分类问题,借助书的层级检索可以将时间复杂度降低到对数级。

【排序】
目的:精准的及逆行推荐
要求:算法准确率要高
常用的排序算法有pointwise,oairwise,listwise三类
在这里插入图片描述
推荐算法+attention
【AFM 算法】–2017由浙大与新加坡国立大学合作推出
思想:M+Attention 考虑不同交叉特征的重要程度不同,使用attention机制对每个交叉特征的重要性进行打分,作为交叉特征的权重。
步骤:
1、输入特征序列(eg:性别,年龄,是否过买过鼠标等)
2、对特征进行两两组合得到二阶交叉特征
3、使用attention机制对每个交叉特征的重要性进行打分,作为交叉特征的权重
4、交叉特征带权累加,得到预测值
优点:
缓解了FM存在的问题(并不是所有二阶交叉特征都是有效的,会有一些垃圾特征交叉的存在,需要施以不同的权重),利用目前比较流行的attention的概念,对每个特征交叉分配不同的attention,使没用的交叉特征权重降低,有用的交叉特征权重提高,加强模型预测能力。
缺点:
由于这种attention的方式对训练数据的拟合表达更充分,但也更容易过拟合,因此作者除了在loss中加入正则项之外,在attention部分加入了dropout
【DIN】
深度学习的网络做推荐算法的基本模型步骤:
1、将大量的稀疏类别特征通过embedding技术映射到一个低维空间
2、将这些特征的低维表达按照特征的类别继续组合与变换(in a group-wise manner来描述(用户属性、用户行为等分组)区分 eg:sum pooling/mean pooling),已形成固定长度的向量
3、最后将这些向量concatenate·起来输入到以恶MLP中,从而学习这些特征的非线性关系;
存在问题:
用户历史行为和候选广告之间存在一定的相关性,用简单的特征做sum pooling|mean pooling 无法挖掘用户行为与候选广告直接的相关性,所以DIN引入了location activation unit模块,基于Attention机制,对用户历史行为进行加权来表示用户兴趣,其中权重参数是通过候选广告和用户历史行为交互学习得到的。
思想:将用户历史纪录里的商品embedding与当前候选商品的embedding做attention,然后利用得到的分数对历史embedding进行加权求和,
DIN主体思想:(1)对不同item,DIN采用local activation机制(attention)计算用户兴趣分布,使兴趣计算更adaptive。DIN可以充分表达一个用户兴趣的多样性。(2)提出了训练大规模稀疏特征网络的优化trick:mini-batch aware regularization和data adaptive activation function。
步骤:
1、分别输入用户历史纪录特征 和 候选商品特征并做embedding
2、计算用户历史纪录embedding和候选商品embedding之间的attention矩阵
3、将用户历史纪录embedding根据attention权重进行累加求和
4、用户历史记录求和后的特征和候选商品embedding特征进行全连接,后接3个全连接层做分类任务
优点:原有的模型中通常是将用户历史商品的embedding做平均池化操作,没有和当前候选商品之间的相似性进行比较。但实际上用户历史纪录和当前是否点击该候选商品有很大的关联性。
使用了attention机制,提出了抑制过拟合效果较好的adaptive regularization,针对feature id出现的频率,来自适应调整他们的正则化强度。
缺点:DIN在捕获序列行为间的依赖关系上很弱,基本不能捕获到兴趣的动态进化性,另外通过用户的显式的行为来表达用户隐含的兴趣,这一准确性无法得到保证。

FM 通过特征对之间的隐变量内积来提取特征组合。对于每个原始特征,FM都会学习一个隐向量。模型通过穷举所有的特征对,并进行逐一检测特征对的权值来自动识别出有效的特征组合。特征对的权值则是通过该特征对涉及的两个原始特征的隐向量的内积来计算。

序列化推荐模型:
对用户的历史行为信息进行建模
SASRec -2018
思想:输入用户的历史行为信息,用self-attention对用的历史行为进行建模提取更有价值的信息,最后经过前反馈神经网络做分类任务
步骤:
1、输入用户的历史行为信息,对特征进行进行embedding
2、利用self-attention(这部分与Transformer的Encoder层大体上是一致的,是由多个自注意力机制 +(残差连接、LayerNormalization、Dropout)+ 前馈网络组成)网络对embedding后的特征赋予权重
3、将得到的信息分别与所有物品embedding内容做内积,根据相似性大小排序、筛选得到topK个推荐。

核心问题:1、用户行为 & 用户属性 等信息怎么抓化成 embedding 形式 ;
2、商品特征怎么转化成embedding形式
3、用户信息的embedding 与 商品特征的embedding 点积 得到相关性,还有没有其他的方式计算两者之间的相关性?

注意:文中在使用attention时没有使用归一化,因为归一化会损失向量的尺度分辨率;
具体参考:“深入理解推荐系统:推荐系统中的attention机制”
皮尔逊相关系数度量的是两个变量的变化趋势是否一致, 不适合计算布尔值向量之间的相关度

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/1017886
推荐阅读
相关标签
  

闽ICP备14008679号