内容简介:快速发展的移动互联网在给我们带来便利的同时,也造成了信息过载,因此在海量的信息之前,用户最关心的是能否快速有效地从我们的产品中获取感兴趣的内容。解决信息过载主要有两种,搜索引擎:解决有明确目的用户需求,推荐引擎:根据用户行为、兴趣爱好等生成推荐物品列表。如今用户更多的是碎片化阅读时间,如何提高用户活跃度和转化率,保证用户留存,是每个app都需要考虑的问题,推荐系统则是目前最简单、使用最多也是效果最好的。本文从58部落帖子出发,介绍文本推荐的流程和初始工作。
背景
快速发展的移动互联网在给我们带来便利的同时,也造成了信息过载,因此在海量的信息之前,用户最关心的是能否快速有效地从我们的产品中获取感兴趣的内容。解决信息过载主要有两种,搜索引擎:解决有明确目的用户需求,推荐引擎:根据用户行为、兴趣爱好等生成推荐物品列表。
如今用户更多的是碎片化阅读时间,如何提高用户活跃度和转化率,保证用户留存,是每个app都需要考虑的问题,推荐系统则是目前最简单、使用最多也是效果最好的。本文从58部落帖子出发,介绍文本推荐的流程和初始工作。
推荐系统架构
如上图所示,推荐系统的基本框架主要包含三层:数据层,策略层和应用层。
-
数据层:主要包含58部落帖子数据、用户行为数据
-
策略层:主要包含特征工程、召回策略、候选集融合和排序
-
应用层:即业务应用,目前主要feed流推荐
数据源
帖子数据是线上用户发布的帖子数据,业务包括房产、招聘、二手车、老乡、相亲交友等;行为数据目前主要包括点赞、点击和评论。
1. 数据存储
-
hdfs:主要用于离线分析,一方面是行为日志的etl,保存每天的用户行为,另一方面是凌晨定时dump的帖子文本数据,为后期结构化分析数据做准备。
-
hbase:实时拉取kafka和消息队列的数据,包括用户实时行为、实时审核通过的帖子数据。
2. 数据清洗
用户行为数据中包含很多的噪声数据需要过滤,如用户自己点击自己的帖子、某个短时间间隔内相同的点击(重复上传)。
帖子数据一方面要是审核通过的帖子数据(公司猎人审核平台),并实时抓取状态变更,及时更新数据,另一方面需要满足自己业务策略,比如关键词过滤等
3. 统一用户唯一标识
建立设备唯一标识与userid的映射关系,设备标识绑定最近登录的userid。在做召回和 排序 时,优先使用userid,或者设备绑定的最新userid,最后才用设备标识,区分注册用户和未注册用户。
策略层
特征工程
因为分析的是文本数据,所以主要是文本特征提取,采用常用的TF-IDF方法。处理步骤如下:
1. 文本分词:采用ansj分词工具,并结合业务线,加入一些实体停用词,如小区名、车名、人名、地名等;
2. TFIDF:
Ci是第i个词出现的次数, C 是帖子中词的总数, N 是样本帖子数, ni+1 是出现该词的帖子数,+1为了保证除数不为0。既考虑了单个文本词频,同时对热门词进行了惩罚;
3. 关键词选取:TopK+均值。如果词的个数小于K,则全选,否则取文本内TFIDF均值以上的词作为该帖子的关键词。这样既保证小文的信息不丢失,又可以过滤大文本无用的词。
其他的特征处理方法还包括文本分类的类别、聚类后的类簇、LDA的主题向量、端到端的word2vec等。
策略引擎
策略引擎是生成候选集的算法,目前主要实现了CF、内容推荐和补充策略。
1. CF(协同过滤)
协同过滤是基于KNN的思想分析用户的行为数据,如item-based cf,就是寻找k个与当前物品最相似的物品。KNN需要考虑两点:K和距离公式,目前58部落的帖子数相对活跃用户数来说比较少(7日),所以采用基于物品的协同过滤,可以降低计算量,而且能给出很好的推荐解释。
-
隐式反馈数据处理:选取的行为数据是用户点赞和浏览数据,是隐式反馈数据。在处理数据的时候,针对每个用户的行为数据事先进行了max归一化,
, 即当前用户每个帖子的浏览次数除以该用户浏览帖子最大的次数,保证每个用户的取值范围相同(0, 1]
-
距离公式:余弦相似度是在文本挖掘和信息检索中常用的距离计算公式,
是用户u对物品i的评分即行为次数归一化的结果,为了惩罚活跃用户的权重,对公式进行了修改
是用户u的活跃度,活跃度越大, 对相似度的影响越小。
-
根据用户行为记录,选取TopN个最相似的帖子作为用户的候选集(需要去除用户已经浏览过的记录)
-
最后将候选集保存的 redis 集群,用于后续的融合排序
内容推荐
内容推荐和协同过滤相似,也是基于KNN的,不同的是内容推荐根据帖子的内容计算相似度,需要提取文本特征,前面已经介绍了关键词提取的方法以及如何获取关键词的权重,帖子相似度也是采用余弦相似度,公式如下:
表示帖子i中关键词k的权重,分子表示两个帖子中相同词的权重乘积求和。
内容相似度计算的时候需要考虑选择合适的相似度阈值,不能推荐内容非常相似的帖子(用户重复发帖或中介发布的相同内容不同联系方式),也不能推荐相似度非常差的帖子。
补充策略
对于新用户,或者行为数据非常少的用户需要采取补充策略(冷启动),保证推荐列表的无线刷新和推荐服务的可用性。根据业务场景采用以下两种统计策略:
-
地域热门:根据用户当前定位商圈,统计当前及其附近5km商圈的热门帖子
-
全局热门:对某个时间段的帖子进行热门降序排列
对于热门得分可根据帖子的发布时间行为进行降权,公式如下:
p是当前帖子被浏览或者点赞次数,T 是帖子发布时间距离当前时间的小时间隔,G 是降权系数,G 越大表示热门程度下降越快,可根据具体业务场景实验选取。
为了保证查询效率,所有的候选集都存储在redis集群中,当有某个策略有新的候选集产生时则进行覆盖。
融合和排序
融合
每个候选集都需要曝光给用户,那么优先级什么?比例又是多少?这是融合的目的。
初始阶段常用的是分级和调制方法,优先选择效果好的策略算法,然后再按照不同的比例获取对应数目的候选集。
排序
因为每个策略算法内部原理不同,得出的评分也无法直接使用,所以最终选出来的候选集以什么顺序曝光给用户也是研究的难点。业内常用的最简单方法通过LR来预测CTR,下面是逻辑回归的公式:
将帖子特征作为输入,用户是否点击作为输出,处理过程就是通过梯度下降法,找到最优的特征权重使得损失函数最小。
评估指标
在解决问题的时候,我们要有目标思维,知道如果去评价一个模型ed好坏,下面是常用的模型评估指标。 是 推荐列表,
是测试数据集,
-
精确率:正确预测的物品数占整个推荐列表的比例
-
召回率:正确预测的物品数占整个测试集的比例
-
F1-measure:是精确率和召回率的调和平均值,综合考虑两个指标。
-
覆盖率:测试集中有多少物品被召回, 分母是测试集的物品数,分子是去重后推荐列表的物品数
-
新颖度:使用平均流行度作为物品的新颖度,N是去重后推荐物品数
总结
目前58部落的推荐尚处在探索阶段,本文只是简单地介绍了当前已经完成的工作,可以初步搭建简单的推荐系统,从数据预处理到候选集策略在到融合排序。后期还有大量的工作内容需要去做,如用户画像、实时推荐、ABTest,总而言之,推荐系统包含了很多的内容,需要我们一步一步地堆砌。由于本人技术有限本文内容比较简单,如有错误或侵权的地方请及时联系。
参考
-
[推荐系统实践]-项亮
-
推荐系统正成为所有领域的一种标配 - https://blog.csdn.net/qq_15150903/article/details/82148565
-
美团推荐算法实践:机器学习重排序模型成亮点 - https://www.csdn.net/article/2015-01-30/2823783
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- CVPR 2020 论文大盘点:动作检测与动作分割篇
- CVPR 2020 论文大盘点:动作检测与动作分割篇
- Android列表,刷卡动作
- 如何从静态图像中识别“比心”动作
- include指令和include动作的区别
- 深入理解MPLS标签动作及应用示例
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
RESTful Web Services Cookbook
Subbu Allamaraju / Yahoo Press / 2010-3-11 / USD 39.99
While the REST design philosophy has captured the imagination of web and enterprise developers alike, using this approach to develop real web services is no picnic. This cookbook includes more than 10......一起来看看 《RESTful Web Services Cookbook》 这本书的介绍吧!