专栏首页语言、知识与人工智能从用户行为去理解内容-item2vec及其应用

从用户行为去理解内容-item2vec及其应用

相关性是对称的

在内容推荐系统里,一个常用的方法是通过理解内容(挖掘内容属性)去挖掘用户的兴趣点来构建推荐模型。从大多数业务的效果来看,这样的模型是有效的,也就是说用户行为与内容是相关的。不过有一点常被忽略的是:相关性是对称的!这意味着如果可以从内容属性去理解用户行为,预测用户行为,那么也可以通过理解用户行为去理解内容,预测内容属性。

利用行为数据生成内容向量

推荐系统里我们一直有基于用户行为去理解内容,典型的例子是基于用户行为构造内容特征,例如内容的点击率、内容的性别倾向,内容的年龄倾向等。这样的理解是浅层的,仅仅是一些简单的统计。我们其实有更好的办法可以构建内容特征,它的第一步是利用用户行为将内容转化为向量,下面会以应用宝业务为例讲解利用用户行为将app转化为向量的思路。 从直觉上来看,用户下载app的先后关系是相关的,以图1的行为数据为例,一个用户之前下载过街头篮球,那么他接下来会下载体育类app的概率会比他接下来下载时尚类app的概率更大。也就是说 P(腾讯体育|街头篮球)>P(唯品会|街头篮球)

到这里我们已经大致介绍了利用用户行为将内容转化为向量的方法,这里将这种技术称作item2vec。以应用宝为例,它的item是app,它的实际应用也可以称作app2vec。

内容向量聚类

基于应用宝已有的类别体系观察,可以明显区分开角色扮演类游戏app和理财app

也可以发现一些没有加入类别体系的特殊app群体

now直播业务也基于该方法进行了生成了主播向量并对主播进行了聚类,初步结果来看是聚类是可以明显区分开男女主播的,并且也发现了几个有趣的主播类型,例如直播玩王者的主播,直播电影电视剧的主播,直播农村生活的主播,其主播id及描述如下,感兴趣的同学可以下载now直播搜一下看看: 229094658 吃鸡 + 王者荣耀 214471564 王者荣耀 130552418 王者荣耀 130347855 王者荣耀 109760879 王者荣耀

129839027 直播电视剧 胡军版天龙八部 116206227 直播电影 李连杰版黄飞鸿 129842270 直播电视剧 士兵突击 129857689 直播电视剧 亮剑 116202620 直播电影 林青霞

93341095 户外(农村生活) 115982309 户外(农村生活) 71264701 户外(农村生活) 128859451 户外(农村生活) 115056840 户外(农村生活)

基于内容向量的分类模型(打标签模型)

内容向量在应用宝app分类打标签上的应用

应用宝的app分类(打标签)场景长期以来都存在这样的痛点: 1. 分类体系经常会面临变动 2. app的人工标注成本高,复杂标签体系下app的标注数据很少,大多数标签仅有几个标注数据 3. app属于复杂数据结构的内容,它的内在难以用已有的算法进行挖掘,过去只能通过它的描述和图片来挖掘其信息

这里我们可以先思考一个问题:为什么要给app做分类和打标签? 答:给app做分类和打标签实际上是为了让用户可以更方便的找到自己想要的app,为了让我们可以更容易地结合用户兴趣给用户推送app。 从问题和答案我们可以得出一个结论:给app做分类和打标签有意义的前提是用户的行为是和app的类别、标签相关的!例如下面的这个例子里,第一位用户喜欢下载纸牌类游戏,第二位用户喜欢下载跑酷类和儿童类游戏,第三位用户喜欢下载休闲类游戏。

上面的分析我们知道用户行为应该可以用于判断app的类别标签。因此在给应用宝的app进行分类和打标签时,我们引入了基于用户行为生成的app向量。具体框架可看下图:

通过增加app向量作为分类模型的特征,可以很大程度上提高app分类的准确度(可以参考聚类中的例子),在实际业务中,部分标签的分类准确度可由40%提高到90%,整体来说准确率和覆盖度都有大幅度提升。

基于京东商品类别数据的item2vec分类模型实验

这里贴一下基于京东商品类别数据做的小实验。

  1. 实验数据:京东商品一级类别,共33个类别,44776个商品,随机抽取其中80%作为训练,20%作为测试集
  2. 模型:one vs rest Logistic Regression
  3. 结果: 训练accuracy 0.879 测试accuracy 0.859

下图是将商品向量降维到3维后的商品空间分布图,不同颜色表示不同类别的商品,直观上看不同类别的商品在空间上的位置是不同的。

基于内容行为向量的推荐召回

直观的例子是相关推荐,因为这一场景通常不会对召回结果做太多的加工。常见的召回结果生成方法是先计算item与item之间的相似度(一般使用cosine相似度),再取其中的top n相似item。参考文献【2】中Pinterest便使用了这种方法进行了相关推荐,其实际体验如下:

在应用宝两个场景中做了基于item行为向量的召回策略并进行了测试,相对于原模型有明显的效果提升(具体效果不便贴出,请读者谅解)。

基于内容行为向量的语义召回

在app搜索场景尝试基于行为数据生成搜索词向量来优化了语义召回,明显增强了词的模糊匹配能力。举一个更直观的例子,吃鸡游戏出来的时候,搜索吃鸡出来的都不是吃鸡游戏,但是对此感兴趣的用户后续还是会去找到正确的搜索词,例如之后搜索“荒野行动”,或是下载了“荒野行动”,基于这些行为,可以将“吃鸡”和“荒野行动”关联起来。下图是单纯基于用户行为的搜索词召回:

直接作为深度学习推荐模型的输入特征

大致的思路是通过对用户有过行为item向量求均值得到用户的固定维度user特征,然后作为输入层的输入。YouTube的论文里证明了这种方法的有效性,下图是YouTube的推荐系统方案,详情可看参考文献【3】。

参考文献

【1】《 word2vec Parameter Learning Explained 》 【2】《 Related Pins at Pinterest: The Evolution of a Real-World Recommender System 》 【3】《Deep Neural Networks for YouTube Recommendations 》

本文分享自微信公众号 - 腾讯文曲星(tencent_wisdom),作者:samuelqiu

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小程序近邻检索:基于B+树的HNSW外存实现

    在小程序中,我们有许多近邻检索的场景:例如,在海量的小程序里为用户推荐潜在意图的小程序;在同样海量的小程序内容页面中,快速找到同一主题的下的资讯、视频、知识、...

    腾讯知文实验室
  • 小程序统一排序服务Mesh化实践

    背景 随着小程序业务的飞速发展,也诞生了很多垂直形态的搜索推荐场景。由于业务场景和内容形态的双向增长,给现有搜索推荐架构带来了较大压力,每一个场景每一类形态都...

    腾讯知文实验室
  • 最简单的模型轻量化方法:20行代码为BERT剪枝

    | 导语 BERT模型在多种下游任务表现优异,但庞大的模型结果也带来了训练及推理速度过慢的问题,难以满足对实时响应速度要求高的场景,模型轻量化就显得非常重要。...

    腾讯知文实验室
  • 一个 2 年 Android 开发者的 18 条忠告

    我仍记得2014年我决定做安卓开发的那天,这是我一生中做出的最好决定之一。到现在已经有2年半了。

    哲洛不闹
  • 一个 2 年 Android 开发者的 18 条忠告

    我仍记得2014年我决定做安卓开发的那天,这是我一生中做出的最好决定之一。到现在已经有2年半了, 最初的时候,并没有人告诉我如何做才是正确的。我犯了很多错误,浪...

    我就是马云飞
  • Python Paste 学习笔记

    这篇文章主要介绍了Python的Paste库的使用,学习过程中主要参考官网文档以及自己的理解,整理成笔记以便后续自己查阅。 如果转载,请保留作者信息。 ...

    py3study
  • Flask-配置与调试

    配置管理 复杂的项目需要配置各种环境。如果设置项很少,可以直接硬编码进来,比如下面的方式: app = Flask(__name__) app.config['...

    用户1214487
  • [NewLife.XCode]脏数据

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简...

    大石头
  • 听说vue项目不用build也能用?

    人们经常说 Vue JS 或 React 是多么简单,甚至微不足道。嗯... 我不同意。它们不简单。毕竟,它们被广泛用于构建大规模的、通常是关键任务的系统。除了...

    小丑同学
  • “玄关”与“开机页”

    本文跨界思考室内设计中的“玄关”空间与手机APP“开机页”之间的异同点,思考互相借鉴的可能。 ——这是一篇符合本公众号“设计Mix科技”出发点的文章。 1、...

    mixlab

扫码关注云+社区

领取腾讯云代金券