58 部落帖子推荐系统的抬手动作

栏目: 数据库 · 发布时间: 5年前

内容简介:快速发展的移动互联网在给我们带来便利的同时,也造成了信息过载,因此在海量的信息之前,用户最关心的是能否快速有效地从我们的产品中获取感兴趣的内容。解决信息过载主要有两种,搜索引擎:解决有明确目的用户需求,推荐引擎:根据用户行为、兴趣爱好等生成推荐物品列表。如今用户更多的是碎片化阅读时间,如何提高用户活跃度和转化率,保证用户留存,是每个app都需要考虑的问题,推荐系统则是目前最简单、使用最多也是效果最好的。本文从58部落帖子出发,介绍文本推荐的流程和初始工作。

背景

快速发展的移动互联网在给我们带来便利的同时,也造成了信息过载,因此在海量的信息之前,用户最关心的是能否快速有效地从我们的产品中获取感兴趣的内容。解决信息过载主要有两种,搜索引擎:解决有明确目的用户需求,推荐引擎:根据用户行为、兴趣爱好等生成推荐物品列表。

如今用户更多的是碎片化阅读时间,如何提高用户活跃度和转化率,保证用户留存,是每个app都需要考虑的问题,推荐系统则是目前最简单、使用最多也是效果最好的。本文从58部落帖子出发,介绍文本推荐的流程和初始工作。

推荐系统架构

58 部落帖子推荐系统的抬手动作

如上图所示,推荐系统的基本框架主要包含三层:数据层,策略层和应用层。

  • 数据层:主要包含58部落帖子数据、用户行为数据

  • 策略层:主要包含特征工程、召回策略、候选集融合和排序

  • 应用层:即业务应用,目前主要feed流推荐

数据源

帖子数据是线上用户发布的帖子数据,业务包括房产、招聘、二手车、老乡、相亲交友等;行为数据目前主要包括点赞、点击和评论。

1. 数据存储

  • hdfs:主要用于离线分析,一方面是行为日志的etl,保存每天的用户行为,另一方面是凌晨定时dump的帖子文本数据,为后期结构化分析数据做准备。

  • hbase:实时拉取kafka和消息队列的数据,包括用户实时行为、实时审核通过的帖子数据。

2. 数据清洗

用户行为数据中包含很多的噪声数据需要过滤,如用户自己点击自己的帖子、某个短时间间隔内相同的点击(重复上传)。

帖子数据一方面要是审核通过的帖子数据(公司猎人审核平台),并实时抓取状态变更,及时更新数据,另一方面需要满足自己业务策略,比如关键词过滤等

3. 统一用户唯一标识

建立设备唯一标识与userid的映射关系,设备标识绑定最近登录的userid。在做召回和 排序 时,优先使用userid,或者设备绑定的最新userid,最后才用设备标识,区分注册用户和未注册用户。

策略层

特征工程

因为分析的是文本数据,所以主要是文本特征提取,采用常用的TF-IDF方法。处理步骤如下:

1. 文本分词:采用ansj分词工具,并结合业务线,加入一些实体停用词,如小区名、车名、人名、地名等;

2. TFIDF:

58 部落帖子推荐系统的抬手动作

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归一化, 58 部落帖子推荐系统的抬手动作 , 即当前用户每个帖子的浏览次数除以该用户浏览帖子最大的次数,保证每个用户的取值范围相同(0, 1]

  • 距离公式:余弦相似度是在文本挖掘和信息检索中常用的距离计算公式,

58 部落帖子推荐系统的抬手动作

是用户u对物品i的评分即行为次数归一化的结果,为了惩罚活跃用户的权重,对公式进行了修改

58 部落帖子推荐系统的抬手动作

58 部落帖子推荐系统的抬手动作 是用户u的活跃度,活跃度越大, 对相似度的影响越小。

  • 根据用户行为记录,选取TopN个最相似的帖子作为用户的候选集(需要去除用户已经浏览过的记录)

  • 最后将候选集保存的 redis 集群,用于后续的融合排序

内容推荐

内容推荐和协同过滤相似,也是基于KNN的,不同的是内容推荐根据帖子的内容计算相似度,需要提取文本特征,前面已经介绍了关键词提取的方法以及如何获取关键词的权重,帖子相似度也是采用余弦相似度,公式如下:

58 部落帖子推荐系统的抬手动作

表示帖子i中关键词k的权重,分子表示两个帖子中相同词的权重乘积求和。

内容相似度计算的时候需要考虑选择合适的相似度阈值,不能推荐内容非常相似的帖子(用户重复发帖或中介发布的相同内容不同联系方式),也不能推荐相似度非常差的帖子。

补充策略

对于新用户,或者行为数据非常少的用户需要采取补充策略(冷启动),保证推荐列表的无线刷新和推荐服务的可用性。根据业务场景采用以下两种统计策略:

  • 地域热门:根据用户当前定位商圈,统计当前及其附近5km商圈的热门帖子

  • 全局热门:对某个时间段的帖子进行热门降序排列

对于热门得分可根据帖子的发布时间行为进行降权,公式如下:

58 部落帖子推荐系统的抬手动作

p是当前帖子被浏览或者点赞次数,T 是帖子发布时间距离当前时间的小时间隔,G 是降权系数,G 越大表示热门程度下降越快,可根据具体业务场景实验选取。

为了保证查询效率,所有的候选集都存储在redis集群中,当有某个策略有新的候选集产生时则进行覆盖。

融合和排序

融合

每个候选集都需要曝光给用户,那么优先级什么?比例又是多少?这是融合的目的。

初始阶段常用的是分级和调制方法,优先选择效果好的策略算法,然后再按照不同的比例获取对应数目的候选集。

排序

因为每个策略算法内部原理不同,得出的评分也无法直接使用,所以最终选出来的候选集以什么顺序曝光给用户也是研究的难点。业内常用的最简单方法通过LR来预测CTR,下面是逻辑回归的公式:

58 部落帖子推荐系统的抬手动作

将帖子特征作为输入,用户是否点击作为输出,处理过程就是通过梯度下降法,找到最优的特征权重使得损失函数最小。

评估指标

在解决问题的时候,我们要有目标思维,知道如果去评价一个模型ed好坏,下面是常用的模型评估指标。 58 部落帖子推荐系统的抬手动作推荐列表, 58 部落帖子推荐系统的抬手动作 是测试数据集,

  • 精确率:正确预测的物品数占整个推荐列表的比例

58 部落帖子推荐系统的抬手动作

  • 召回率:正确预测的物品数占整个测试集的比例

    58 部落帖子推荐系统的抬手动作

  • F1-measure:是精确率和召回率的调和平均值,综合考虑两个指标。

58 部落帖子推荐系统的抬手动作

  • 覆盖率:测试集中有多少物品被召回, 分母是测试集的物品数,分子是去重后推荐列表的物品数

58 部落帖子推荐系统的抬手动作

  • 新颖度:使用平均流行度作为物品的新颖度,N是去重后推荐物品数

    58 部落帖子推荐系统的抬手动作

总结

目前58部落的推荐尚处在探索阶段,本文只是简单地介绍了当前已经完成的工作,可以初步搭建简单的推荐系统,从数据预处理到候选集策略在到融合排序。后期还有大量的工作内容需要去做,如用户画像、实时推荐、ABTest,总而言之,推荐系统包含了很多的内容,需要我们一步一步地堆砌。由于本人技术有限本文内容比较简单,如有错误或侵权的地方请及时联系。

参考

  • [推荐系统实践]-项亮

  • 推荐系统正成为所有领域的一种标配 -  https://blog.csdn.net/qq_15150903/article/details/82148565

  • 美团推荐算法实践:机器学习重排序模型成亮点 -  https://www.csdn.net/article/2015-01-30/2823783

58 部落帖子推荐系统的抬手动作


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JSP 应用开发详解(第二版)

JSP 应用开发详解(第二版)

飞思科技产品研发中心 / 电子工业出版社 / 2004-1-1 / 55.00

本书结合JSP和Servlet的最新规范,从基本的语法和规范入手,以经验为后盾,以实用为目标,以实例为导向,以实践为指导,深入浅出地讲解了JSP 开发中的种种问题。以精简的内容介绍了JSP的语法、Servlet技术、JDBC技术、标签库技术、表达式语言、Struts、JavaServer Face等技术;对于JSP开发中常遇到的典型的难点,专门设置了专题进行集中讨论。本书的最后一篇围绕一个电子商务......一起来看看 《JSP 应用开发详解(第二版)》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具