1、背景

在互联网信息爆炸式增长的当今,通过传统人工筛选运营方式提供服务时代已然过去,能通过用户历史行为精准推荐用户感兴趣内容成为必然趋势,主流个性化推荐系统流程包括用户行为采集、分类提取、离线用户建模、在线用户模型预测等。结合目前手机QQ浏览器软件应用App分发业务发展需求,历时半年多时间,从无到有搭建一套个性化推荐系统支撑专区App分发业务。

2、业务整体Review

目前推荐场景覆盖包括专区首页猜你喜欢模块推荐,打底推荐与QB内垂直搜索,对应效果如下图红框标识:

进过半年的优化打磨,关键阶段效果提升汇总如下:

3、整体框架

在输出整体架构图前,先回归最初产品个性化推荐需求,技术方案选型最终都要服务于需求

【个性化推荐需求】

根据活跃用户的长期兴趣推荐用户最感兴趣的AppList,效果评价指标是推荐App的CTR

【技术方案选型】

工程Part

在线模块:分粗排阶段和精排阶段

1、粗排阶段根据用户长期兴趣画像召回相关度较高的Item,同时减轻精排阶段压力;

2、精排阶段则根据粗排召回的ItemList,通过离线训练好的排序模型预测CTR,最终下发TopN ItemList作为推荐结果;

离线模块:

1、用户长期兴趣:负责在线粗排召回,通过离线累计用户消费行为,映射成兴趣体系,最终积累成用户长期兴趣画像,最终将画像导入在线系统;

2、排序模型:负责在线精排阶段排序模型的训练,训练阶段需要用户消费日志,同时收集用户特征和Item特征,最终整合成训练样本集,通过Spark等分布式计算框架训练模型并导入在线系统;

算法Part

粗排召回:粗排的召回效果直接影响推荐的效果,不过项目初期的方案不太适合制定太复杂的策略,初期我们先敲定一个热度计算公式对备选Item进行全排序:HOT(x) = LOG(下载量(x)) + 评分(x) * 0.2,最后根据Item分类构建待召回反向索引结构

精排模型:产品制定推荐效果评价指标是App按天CTR,即排序模型是pCTR模型,结合业界成熟方案以及团队技术积累准备度,选用LR作为pCTR模型

【整体架构图】

1、将用户在专区预推荐位的Item曝光和点击行为上报到离线集群

2、用户实时拉取推荐结果,粗排备选池会预先Ready(对应架构图中的备选优化,策略参考上面算法Part的粗排召回),通过用户关联历史兴趣画像,根据画像获取关联度Top的ItemList,同时进行列表退避;然后用召回ItemList关联Item特征,用户关联用户特征,部分特征需要走特征工程处理,加载离线训练好的LR模型,预测每一个Item的pCTR,进行排序;产品策略会在兼顾用户体验维度对下发列表进行干预,比如多样性,游戏App占比等;最终下发排序结果列表

3&4、将用户交互行为与推荐结果等数据导入离线计算集群:1)根据按天用户行为计算按天兴趣画像,同时和历史画像进行合并构成用户兴趣长期画像;2)用用户对Item点击或曝光作为样本原,与Item特征、用户特征关联形成训练样本集,通过Spark API训练得到稳定的LR模型

5、按天将用户累计长期兴趣画像和LR模型结果导出到HDFS路径

6、用户兴趣画像定期刷入在线Cache

7、将LR模型按天导入在线DB,在线服务定时加载LR模型以及查询用户长期兴趣画像

4、优化小结

将个性化推荐系统Pipeline搭建上线后,目光就转移到推荐效果的优化,优化主要分三部分:

1)LR模型特征优化,主要包括常用特征工程方法以及引入新的业务特征;

2)LR训练工具Spark API训练性能提升加学习率曲线绘制;

3)粗排召回阶段引入基于Item的协同过滤;

【特征优化】

1、特征工程

在当前项目中,我们主要采用的特征工程方案包括:

离散枚举:性别(男性1,女性2,未知3),单维特征扩展成三维,一条样本仅设置一维

连续等距:比如用户年龄,可观察在如下样本中用户年龄的分布图(x坐标表示年龄,y坐标表示对应用户群累计占比),14-46岁间隔用户群分布均匀(且为相对有效年龄),且占整体用户群99%以上,这类特征可以对样本进行等值切分,间隔可根据模型效果调整

归一化LOG:比如App下载量,如下是样本中App对应的下载量分布图(x坐标表示下载量,y坐标表示对应用户群累计占比),对比年龄分布图,App群50%占比以上比较均匀,但是前50%跨度较大,此时我们使用的方案是对整体下载量求LOG,然后再进行等值One-Hot

2、引入新特征

项目初期使用的特征包括如下脑图中的蓝色与绿色特征,训练的样本量是按周,采样的正负比例是1:5,最终的AUC是0.6890;

在专注特征优化阶段,主要的方向是引入更多的特征,通过梳理,将脑图中的标黄和标灰特征纳入到引入阶段。在具体引入优先级的排期中,需要权衡特征收集的复杂度、特征的覆盖度等因素,最终在优化阶段确定引入脑图中的标黄特征,结果AUC提升到0.7592

【Spark API 训练优化】

详见文章Spark MLlib LR 实战笔记

【协同过滤】

分类粗排召回策略的优势是对主打用户长期兴趣方向定向,缺点是很难引入Item相关度较高但并非同类的Item,也就是较难发现用户隐含兴趣;协同过滤的目标就是对分类粗排召回策略缺点的一种补充。

常用的协同过滤Based-Memory包括User-Based与Item-Based,对标两种模型有如下对比:

通过调研目前项目的推荐场景优选Item-Based,接入流程上,回到整体架构图,采用离线训练Item-Item相似度矩阵并离线根据用户历史安装App进行预测,最终刷入在线Cache,供在线服务在召回流程查询协同过滤推荐结果,进而统一精排下发

5、项目展望

1、LR模型引入更多新特征 以及 特征工程更多的尝试,可参考参考文献[5]

2、pCTR预测模型尝试GBDT + LR

3、App分类互斥策略

感谢过程中Carbonzhang & Meifangli 的大力支持

参考文献

[1]《practical lessons from predicting clicks on ads at facebook》
https://pdfs.semanticscholar.org/daf9/ed5dc6c6bad5367d7fd8561527da30e9b8dd.pdf

[2]《Spark MLlib 机器学习算法、源码及实战详解》

[3]《Spark 技术内幕》

[4]《机器学习实战》

[5] 特征工程 http://km.oa.com/group/22605/articles/show/295781

QQ浏览器app应用专区推荐系统相关推荐

  1. qq地区采集_用户诉QQ浏览器违法收集个人隐私,法院裁定腾讯立即停止相关行为...

    [猎云网北京]6月3日报道 据北京青年报报道,近日,许先生在江西某法院起诉了"QQ浏览器"APP运营方腾讯.因为"QQ浏览器"APP在许先生不知情的情况下,窃取 ...

  2. QQ浏览器下拉词推广是什么?

    疑问:QQ浏览器下拉词推广是什么?(手机APP端) 一.qq浏览器下拉词下拉框推广是什么? 1.了解qq浏览器下拉词框 想知道qq浏览器下拉词框推广是什么,那首先我们要了解下什么是qq浏览器下拉词框: ...

  3. 手机QQ浏览器的HTML管理器,手机qq浏览器中文件管理器有哪些功能

    手机qq浏览器中文件管理器有哪些功能 QQ浏览器是我们现在经常使用的浏览器一,其中的文件管理器功能非常的多.今天小编跟大家分享的是手机QQ浏览器文件管理器有哪些作用. 具体如下: 1. 首先我们打开手 ...

  4. qq浏览器tv版 v1.0 官方版

    qq浏览器tv版 v1.0 官方版 软件大小:10.7MB 软件语言:简体中文 软件性质:常用软件 软件授权:官方版 更新时间:2014-05-06 应用平台:/Win8/Win7/WinXP qq浏 ...

  5. 用户诉QQ浏览器违法收集个人隐私,法院裁定腾讯立即停止相关行为

    [猎云网北京]6月3日报道 据北京青年报报道,近日,许先生在江西某法院起诉了"QQ浏览器"APP运营方腾讯.因为"QQ浏览器"APP在许先生不知情的情况下,窃取 ...

  6. 获取qq号码性别 接口_用户诉QQ浏览器违法获取个人隐私!实测发现好友列表被自动提取...

    日前,QQ浏览器因违法收集用户微信以及QQ账号的头像.性别.生日.好友列表等个人隐私信息,被用户起诉至江西某法院.法院审理后裁定腾讯公司立即停止在QQ浏览器App中获取上述用户隐私信息的行为,并对双方 ...

  7. android app分享到微信让应用来源显示qq浏览器或者是其他应用

    如题:app分享到微信让应用来源显示qq浏览器或者是其他应用. 针对这个问题,大家没有没有什么好的思路,或者解决方案~ 2019-11-18 由于最近看到CSDN上有一些摘抄盈利行为,这里屏蔽一部分代 ...

  8. QQ浏览器上线投屏功能,能投屏的不只是视频App,网站视频也能在电视播放

    作为国内率先接入乐播投屏功能的浏览器-QQ浏览器,如期发布了9.7安卓端版本:此次改版,重点改善了视频投屏功能引导及页面视觉. 值得一提的是一分钟以下的短视频也可以发起投屏啦!真正实现了所有视频都可投 ...

  9. html5 app c,HTML5开发日 手机QQ浏览器与Web App开发者共赢

    8月18日消息,HTML5开发日暨W3C中国六周年庆典在北京举行.近千HTML5开发者和移动互联网产业链企业代表围绕"HTML5在路上"的主题探讨移动互联网的"生态.共融 ...

最新文章

  1. python中print输出格式汇总_python中print输出格式有哪些
  2. LeetCode - Longest Common Prefix
  3. paip.语义分析--单字词名词表
  4. 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmContinueOptimizati() 函数分析 )
  5. linux中进程的控制总结,Linux中的进程控制
  6. ORACLE查出表所有的触发器及触发器详细信息
  7. Fiori launchpad里Enter Group name这个tile是怎么配置出来的
  8. java中插入排序实例_java中对插入排序的理解以及实例
  9. 用java判断一个年份是否为闰年_判断闰年还是平年
  10. ISO9126软件质量模型
  11. HDOJ 1114 Piggy-Bank 【动态规划 完全背包】
  12. mysql_query is deprecated_Function mysql_db_query() is deprecated 错误解决
  13. PHP 高并发秒杀解决方案
  14. mac安装win10_mac磁盘空间 mac安装win10分割多少磁盘空间合适
  15. 简历javaweb项目描述怎么写_简历上的项目描述(JAVA)怎么写
  16. 汇编语言(十二)颜色搭配显示+BIOS功能调用表+INT 10H功能详细列表
  17. html5制作学生积分系统,科学网—CLASS极简教程 - 钱磊的博文
  18. 未完成的IT路停在回车键 2014年末总结篇
  19. 流密码(一)同步流密码、自同步流密码以及线性反馈移位寄存器
  20. mtk开发世界时区客制化

热门文章

  1. 马尔可夫随机场(Markov Random Field)与马尔可夫链
  2. i3-10110U和i5 8250u 哪个好
  3. 现货黄金赚吗:黄金实战技巧
  4. 构造方法:构造方法的格式和执行时机;构造方法的作用;构造方法的注意事项;
  5. js正则表达式的使用:
  6. 自动驾驶仿真软件列表
  7. Java、JavaScript、C语言数组的创建
  8. oracle+dbcc+checkdb,dbcc checkdb 修复数据库
  9. python没有random模块_python-random模块
  10. lintcode ---最小差