在内容推荐系统里,一个常用的方法是通过理解内容(挖掘内容属性)去挖掘用户的兴趣点来构建推荐模型。从大多数业务的效果来看,这样的模型是有效的,也就是说用户行为与内容是相关的。不过有一点常被忽略的是:相关性是对称的!这意味着如果可以从内容属性去理解用户行为,预测用户行为,那么也可以通过理解用户行为去理解内容,预测内容属性。
推荐系统里我们一直有基于用户行为去理解内容,典型的例子是基于用户行为构造内容特征,例如内容的点击率、内容的性别倾向,内容的年龄倾向等。这样的理解是浅层的,仅仅是一些简单的统计。我们其实有更好的办法可以构建内容特征,它的第一步是利用用户行为将内容转化为向量,下面会以应用宝业务为例讲解利用用户行为将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分类(打标签)场景长期以来都存在这样的痛点: 1. 分类体系经常会面临变动 2. app的人工标注成本高,复杂标签体系下app的标注数据很少,大多数标签仅有几个标注数据 3. app属于复杂数据结构的内容,它的内在难以用已有的算法进行挖掘,过去只能通过它的描述和图片来挖掘其信息
这里我们可以先思考一个问题:为什么要给app做分类和打标签? 答:给app做分类和打标签实际上是为了让用户可以更方便的找到自己想要的app,为了让我们可以更容易地结合用户兴趣给用户推送app。 从问题和答案我们可以得出一个结论:给app做分类和打标签有意义的前提是用户的行为是和app的类别、标签相关的!例如下面的这个例子里,第一位用户喜欢下载纸牌类游戏,第二位用户喜欢下载跑酷类和儿童类游戏,第三位用户喜欢下载休闲类游戏。
上面的分析我们知道用户行为应该可以用于判断app的类别标签。因此在给应用宝的app进行分类和打标签时,我们引入了基于用户行为生成的app向量。具体框架可看下图:
通过增加app向量作为分类模型的特征,可以很大程度上提高app分类的准确度(可以参考聚类中的例子),在实际业务中,部分标签的分类准确度可由40%提高到90%,整体来说准确率和覆盖度都有大幅度提升。
这里贴一下基于京东商品类别数据做的小实验。
实验数据:京东商品一级类别,共33个类别,44776个商品,随机抽取其中80%作为训练,20%作为测试集
模型:one vs rest Logistic
Regression
结果:
训练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)
原文发表时间:2018-01-30
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
发表于 2018-02-082018-02-08 10:43:25
分享
分享文章到朋友圈
分享文章到 QQ
分享文章到微博
复制文章链接到剪贴板
扫描二维码
扫码关注云+社区
原网址: 访问
创建于: 2019-04-12 01:15:46
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论