个性化推荐系统(二)---构建推荐引擎

  当下推荐系统包含的层级特别的多,整个线上推荐系统包含:最上层线上推荐服务、中层各个推荐数据召回集(数据主题、分类池子)、底层各种推荐模型。

        推荐系统介入线上各种业务,推荐系统当下已经介入内容方面:文章、问答、评论等各个业务系统,商品sku:纯商品、消息push、素材,混合多个业务同时推荐。如此多得业务每个业务开发一套相似的代码也是可以的但缺点是投入极大,并且每个业务代码都差不多,对大家能力提高也很不友好,开发推荐引擎就是一件既能提升大家技术水平,又能很好的应对各个推荐频道快速发展。

        推荐引擎是一定要搞得了,业务发展极快,哪个业务都要接入个性化推荐。构建推荐引擎没什么好探讨的了,现在需要思考和探讨的是怎么构建推荐引擎。

        从哪个角度思考呢?杉枫是从个性化推荐系统、广告投放系统、搜索引擎三个既存在相似又有差异的系统着手思考的。搜索引擎有极好的开源实现以及大量的架构分享文章,确定从搜索引擎入手,借鉴搜索引擎打造属于我们自己推荐引擎。

       有了搜索引擎可以借鉴,但推荐系统虽然像搜索引擎,但毕竟不是搜索,推荐比搜索多得是,召回流程更多、更广泛,并且需要召回的范围是基于用户画像来构建的,搜索核心是输入词与文章之间的匹配程度,搜索引擎核心到今天依然是,在搜索架构基础上需要扩展的是增加召回流程以及召回次数,后边再根据召回集拉取特征集进行打分排序。

        整个推荐引擎核心流程就是第一步拉取类别召回集,线上服务收到用户请求,根据用户请求拉取主题、标签、素材、品类召回集,再根据当前召回集拉取偏好、相似召回集,完成第一步类别拉取,构建类别过滤集合包含但不仅仅是已购买、已曝光、已点击,其中每种过滤集合都包含实时、离线,对类别召回集进行过滤。

       第二步根据已拉取类别召回集,拉取素材召回集,例如:文章、sku等等,构建素材过滤集合,已购买、已曝光、已点击等等。通过过滤集合过滤素材召回集。

       第三步如是策略算法,根据策略对类别、品牌、品类进行隔断,提升用户体验,对结果进行返回。另外一种是基于当下机器学习、深度学习进行CTR打分预估。这种场景下就要根据素材,拉取几十个维度的特征,将特征实时传入模型进行点击量预估,根据机器学习模型、深度学习模型实时打分,对素材进行排序,并对排序结果进行类别、品牌、品类进行隔断,隔断的目的提升用户展现时的体验,至于为什么隔断?可以想象一下如果今日头条一次刷新给你推得内容全是手机、或是淘宝下拉给你返回全是笔记本,种种情况下一定会让你抓狂的。

        第四步每个业务拉取的集合均不相同,需要每个召回集合都是可以通过配置平台灵活配置的。机器学习、深度学习模型通过模型管理平台进行管理,实现对于模型的动态加载、模型灵活动态更新。隔断策略平台配置化,能够按每个业务定制灵活配置策略。

        通过以上这些服务、配置化、平台初步实现一般推荐引擎,从而使大部分业务不用每次去重复开发一次相似又有差异的代码,阶段性提升小组每个人的技术水平。

        个性化推荐是一个正在蓬勃发展的技术,推荐引擎会不断吸收内部、外部,以及其他领域的结果不断进行完善。

         非偏好用户怎么进行推荐、热门集合、通用集合、实时新闻构建等,后续会写篇文章详细介绍下。

   微信搜索:debugme123

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阿炬.NET

c# datetime 格式化

2836
来自专栏吴伟祥

Java Calendar 类的时间操作 原

Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。

763
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2278
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5435
来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

2329
来自专栏菩提树下的杨过

MSDN官方的ASP.Net异步页面的经典示例代码

示例1.演示异步获取一个网址的内容,处理后显示在OutPut这一Label上 using System; using System.Web; using S...

1985
来自专栏听雨堂

想修改CSS

      下载了一个“通用”的CSS文件,本来想偷懒的,结果发现有问题,就是它用的颜色是变量定义的,无法识别。我又找不到在哪里可以定义。 BODY{     ...

20410
来自专栏跟着阿笨一起玩NET

GB2312转换成UTF-8与utf_8转换成GB2312

1801
来自专栏码匠的流水账

聊聊EurekaRibbonClientConfiguration

spring-cloud-netflix-eureka-client-2.0.0.RELEASE-sources.jar!/org/springframewor...

1161
来自专栏跟着阿笨一起玩NET

C# 通过HttpWebRequest在后台对WebService进行调用

http://www.cnblogs.com/macroxu-1982/archive/2009/12/23/1630415.html

2752

扫码关注云+社区