【应用前沿】索托斯平台:个性化推荐变身SaaS 服务

随着互联网技术和人工智能的迅速发展,面对海量的数据和资源,如何快速准确地为每个用户提供其感兴趣的内容,成为我们亟待解决的问题。个性化推荐系统正是为了解决这一问题而诞生的,它能够通过对用户行为的分析和挖掘,为用户提供精准、个性化的推荐服务,极大地提高了信息获取的效率和用户体验,在电商、新闻资讯、视频、音乐、阅读等领域被广泛应用。

然而,一套完整的个性化推荐系统建设,除了需要巨大的人力物力投入,还需要长时间的数据积累和算法调优,具有较高的使用成本,让很多团队望而却步。

如何让个性化推荐系统像 SaaS 服务一样被低成本使用呢?360内容平台部依托于深厚的推荐算法能力和强大的内容创作平台,通过对推荐系统的算法和引擎平台化,经过多个业务场景的打磨,推出了索托斯推荐平台,为客户提供低成本的一体化推荐服务。

46acd581f604ecd9167f6a38f63246f2.png

索托斯,以行业标准化协议,接入各个应用场景的待推荐资源和用户的行为日志,通过自动化的数据流生产系统完成识别、标注、向量化等内容理解,通过平台化的一系列算法模型训练实现资源和用户的画像特征等数据挖掘,基于 A/B 实验平台和 Debug 系统,对算法模型进行自动调参,按照预定目标自我优化,给接入方提供该场景个性化推荐的最优解。

整体架构如下:

e3abb41667b59284aedbf31693d97387.png

首先是系统的标准化接入。

对于推荐系统来说,通俗地理解就是根据用户的各种行为推测其兴趣喜好,然后给用户推荐其感兴趣的资源,比如给经常看娱乐资讯的用户推一条明星八卦。因而,用户的行为和要推荐的资源就是推荐系统最基础的要素,那么该如何把这两类数据高效地接入到推荐系统呢?

对于SaaS化推荐系统,接入的推荐场景可能包括资讯、视频、壁纸、商品、短剧等多种属性各异的资源,不同资源的用户行为也千差万别。索托斯对数据接入分资源和行为做了一层标准化抽象:对于资源,定义通用属性,数据可以通过消息队列或文件的方式同步到推荐系统生产平台,然后以统一的生产加工流程完成资源的审核、标注、内容理解、正排提取、倒排构建,对于不同资源类别的个性化属性,索托斯的生产平台以流程分支的方式支持属性定义和处理,底层自动扩展相应的语义体系;对于用户行为,采用日志打点上报的方式,定义通用的打点规范,指定核心提升指标,行为日志自动经过实时计算产生算法模型的输入语料。

其次是通用算法服务。

推荐系统中,算法服务主要包括召回、排序、策略几大类。其中召回服务通过算法模型获取初始的数据集,然后由排序服务通过特征进行打分排序,最后由策略服务做装屏:按资源类别和用户画像进行数据打散、过滤、强插等操作。具体图示如下:

aab8816db8a6353c4736c193843dc6fc.png

在复杂的实际生产环境中,不同的算法服务依赖各自不同的语料,经过模型训练,产生不同的结果文件,比如用户画像、倒排队列、特征、向量、tag等,然后供在线服务使用,或者作为二级语料进行下一步的模型训练。这些差异一方面会降低系统的可扩展性和复用性,另一方会增加系统的维护成本。

为了便于算法服务平台化,我们对算法服务进行了标准化架构优化。首先是定义统一的算法模型的各种输入语料格式和接入标准。推荐系统原始语料主要是用户的曝光、点击、点赞、收藏、关注等用户行为日志和资源数据,通过Flink实时计算框架,对日志进行标准化的语料预处理生成以下几种初始语料:按请求 id 合并的单位时间窗口内每个用户的行为序列,资源的单位时间行为统计,用户的点击序列。然后,把算法服务拆分成离线和在线,在线服务提供统一协议的PB 格式数据,由推荐引擎调度;离线服务,统一数据解析规范,基于上述的初始语料,通过核心算法模型进行数据训练,产生画像、倒排等结果集。整体如下图:

426418479f0efca2c3133cc1ffd01238.png

通过上述标准化处理,目前索托斯平台集成了推荐系统核心的算法服务,其中召回服务涵盖高热、画像、icf、vicf、validFilter、dssm、tagicf、berttagemblarge、tagemb、rankshare、lda 等超过20算法。这些通用算法服务在内容平台的视频、cube 等核心推荐场景经过充分验证,在各类适用的场景中有显著的效果提升,如下图:

49631b32a77d1fdf4b48c1db0ef21a10.png

推荐系统中各个环节的实时日志处理、算法模型训练、离线任务等,都离不开稳定的大数据计算平台。索托斯依赖的是技术中台提供的强大的奇麟大数据平台,针对业务敏感的Flink实时任务,一方面虚拟化团队从底层计算资源做隔离,通过对磁盘LVM条带化和网络加速等方面的优化,使得计算集群机器有极致的性能保障;另一方面系统部团队对这种实时大规模数据处理的任务,对 Flink 进行深读定制优化,在集群资源调度方面实现了更智能、高效的动态策略,在高可用方面提供了更加柔性、稳定的灾备预案。因而,在多个团队的鼎力支持下,索托斯的大数据底座坚如磐石。

然后是持续增长。

几乎所有场景接入推荐服务之后,都会面临如何持续提升数据指标的问题。索托斯从两个方面着手,其一,提供一站式用户分析与运营平台,为接入方提供多维度效果分析指标数据,通过归因分析模型挖掘用户侧、资源侧潜在的优化和改进点,辅助发现业务的关键增长方向,科学地进行产品优化;另一方面各个算法模型向上层暴露超参,每个算法通过多个参数枚举组合的方式,自动进行多组 A/B 实验,根据实验结果自动选择最优参数放量,实现系统的自我迭代优化。

6cf13c0160de39f50ff184020c05df04.png

最后是系统自动化运维。

从安全和稳定的角度,各个接入场景的资源、服务、数据都是完全相互隔离的。每个接入场景的各类算法服务至少有20多个,众多的接入场景的数百上千的服务,运维成了棘手的问题,因此,索托斯平台实现了一套自动化运维系统。

对于众多的服务,我们通过 ops 的 wonder 系统采集的基础硬件指标数据和通用算法服务采集的业务指标数据分别进行分钟级的分时对比、单位时间累计对比,同时参考日环比、周同比,以准确发现异常并归因出问题,然后根据问题类型分别采取不同的自动化处理预案。比如,某个服务监测到耗时 P99上升,同时集群所有机器的 cpu利用率都同比升高,且到某个设定的阈值(比如50%),则判定集群负载高,此时自动进行弹性扩容,如果只是某台机器异常,那则可根据这台机器的综合指标判断是进程问题还是机器问题,以进行服务重启或机器弹性替代等自动化运维动作。具体详见下图:

afd8b5feef2d86b39651e9fa005af92f.png

经过全方面的系统基础能力建设,加上内容平台核心推荐场景的不断打磨优化,以及持续的功能迭代,目前索托斯已经具备优越的 toB 能力,并在浏览器画报、锁屏壁纸、开机小助手、卫士资讯弹窗、导航 cube、商业化小说、付费短剧、小游戏等场景接入,为各个业务带来100%甚至更高的核心指标提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/161720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5-6求1-20的阶乘和

#include<stdio.h> //求阶乘 int main(){int n;double sum0;//求和&#xff1a;一点一点加int t1;for (n1;n<15;n){tt*n;sumsumt;}printf("结果是&#xff1a;%22.15e \n",sum);return 0; }为啥最后是%22.15e呢&#xff1f; 因为这个求和的结果太大了 所以转…

【VScode】安装配置、插件及远程SSH连接

一、VSCode安装 二、配置安装插件 三、配置远程连接SSH 四、MinGW 一、VSCode安装 VS官网 Visual Studio Code - Code Editing. Redefined下载安装包&#xff1a; 二、配置安装插件 安装中文插件 配置字体为20 配置文件–>首选项->设置->Font Size为20 设置 VSC…

【libGDX】使用Mesh绘制圆形

1 前言 使用Mesh绘制三角形 中介绍了绘制三角形的方法&#xff0c;使用Mesh绘制矩形 中介绍了绘制矩形的方法&#xff0c;本文将介绍绘制圆形的方法。 libGDX 以点、线段、三角形为图元&#xff0c;没有提供绘制圆形的接口。要绘制圆形边框&#xff0c;必须通过割圆法逼近圆形&…

【中间件】服务化中间件理论intro

中间件middleware 内容管理 intro服务化middleware架构注册中心intro服务治理系统intro 本文主要intro服务化中间件的探讨 去年cfeng写了一篇博客走马观花般阐述了Spring Cloud下面的各种中间件&#xff0c;连深入使用都谈不上&#xff0c;只能说intro&#xff0c;在实际work中…

数字孪生助力污水处理升级

随着科技的发展&#xff0c;数字孪生技术在各行各业中得到了广泛应用。在污水处理领域&#xff0c;数字孪生技术为流程监控、效率提升、问题诊断等提供了强有力的支持。本文就借用山海鲸可视化软件的污水处理解决方案为大家介绍数字孪生在污水处理领域的作用。 一、实时监控 …

VsCode学习

一、在VsCode 上编写第一个C语言 在VsCode上写代码都是先打开文件夹&#xff0c;这样也方便管理代码和编译器产生的可执行程序&#xff0c;VsCode生成的配置文件等。 1.1打开文件夹 写代码前&#xff0c;首先创立一个文件夹存储以后我们写的VsCode代码&#xff0c;便于管理。…

SpringBoot:kaptcha生成验证码

GitHub项目地址&#xff1a;GitHub - penggle/kaptcha: kaptcha - A kaptcha generation engine. kaptcha介绍 kaptcha官网&#xff08;Google Code Archive - Long-term storage for Google Code Project Hosting.&#xff09;对其介绍如下&#xff0c; kaptcha十分易于安装…

linux CentOS7.6安装jenkins(小白版本)

前言 本人是一个前端开发者&#xff0c;由于有时候需要发版自己的东西&#xff0c;所以想搞一个Jenkins玩玩&#xff0c;看了网上好多教程&#xff0c;但是都不是针对小白的&#xff0c;比如linux怎么输入&#xff0c;怎么结束&#xff0c;自己也是搞了好久踩了好多坑 所以记录…

filebeat配置解析【待续】

目录 filebeat概览filebeat是如何工作的工作原理采集日志注册表发送日志 容器日志采集的三种方式方式一&#xff1a;Filebeat 与 应用运行在同一容器&#xff08;不推荐&#xff09;方式二&#xff1a;Filebeat 与 应用运行不在同一容器方式三&#xff1a;通过 Kubernetes File…

oracle “ORA-25153:临时表空间为空”

从生产上面备份出来了一个数据库&#xff0c;应用在使用时显示ORA-25153临时表空间为空的报错&#xff0c;原因一般是数据库迁移时&#xff0c;没有迁移完整造成的 解决方法 1.创建新的临时表空间temp2 create temporary tablespace temp2 tempfile DATA size 100M autoexten…

【Python百题】--1.输出Hello,world【2023.11.22】

1.问题描述 编写一个Python程序&#xff0c;将字符串 ‘Hello World!’ 存储在变量 str 中&#xff0c;然后使用 print 语句将其打印出来。 2.解决思路 使用print()函数即可 3.代码实现 print("Hello,world")4.运行结果

系统移植-交叉编译工具链

不同架构的机器码 与 汇编语言 都不可移植&#xff0c; 且二者一一对应 c语言中三种成分&#xff1a; 1.分号结尾的叫做语句 语句可以让CPU执行&#xff0c;可以进行预处理&#xff0c;编译等生成机器码 2.#开头的为预处理指令 不带分号 CPU无法执行 3.注释&#xff0c;…

vue中列表渲染

列表渲染 实际开发中&#xff0c;使用每条数据的唯一标识作为key,也就是对于数组列表&#xff0c;对象中的属性如&#xff1a;id、手机号、身份证号、学号等唯一值&#xff0c;对象列表同理 只要不对列表的逆序添加&#xff0c;逆序删除等破坏顺序的操作&#xff0c;仅用于渲染…

Mysql 递归查询子类Id的所有父类Id

文章目录 问题描述先看结果表结构展示实现递归查询集合查询结果修复数据 问题描述 最近开发过程中遇到一个问题,每次添加代理关系都要去递归查询一下它在不在这个代理关系树上.很麻烦也很浪费资源.想着把代理关系的父类全部存起来 先看结果 表结构展示 表名(t_agent_user_rela…

Android 10.0 mtp模式下连接PC后只显示指定文件夹功能实现

1. 前言 在android10.0的系统定制化开发中,对于usb作为otg连接电脑时,在mtp模式下会作为一个存储器在电脑端显示,作为电脑的 一个盘符,来显示设备的内部存储的文件,所以说如果要对设备内部的资料做保密处理的时候,需要在mtp模式下不显示某些 文件夹,接下来就分析下相关…

【算法萌新闯力扣】:两句话中的不常见单词

力扣热题&#xff1a;两句话中的不常见单词 开篇 今天是备战蓝桥杯的第19天&#xff0c;今天到目前刷了4道力扣算法题。其中&#xff0c;这道题是对我来说收获最大的一道&#xff0c;让我更熟练地掌握了一些算法题中方法&#xff0c;于是来与大家分享一下。 题目链接: 884.两…

服务器中了elbie勒索病毒解决办法,elbie勒索病毒解密数据恢复

科技技术的不断发展&#xff0c;为企业的生产运营提供了极大便利&#xff0c;但网络安全威胁也不断增加&#xff0c;近期云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的服务器中了elbie勒索病毒&#xff0c;导致系统瘫痪&#xff0c;所有业务无法正常开展&#xff…

链表OJ--下

文章目录 前言一、链表分割二、环形链表I三、环形链表II四、链表的回文结构五、随机链表的复制 前言 一、链表分割 牛客网CM11&#xff1a;链表分割- - -点击此处传送 题解&#xff1a; 思路图&#xff1a; 代码&#xff1a; 二、环形链表I 力扣141&#xff1a;环形链表…

使用SpringBoot集成MyBatis对管理员的查询操作

增删改查中的查询操作&#xff0c;对所有的普通管理员进行查询操作。 效果展示&#xff1a; 不仅可以在打开页面时进行对管理员的自动查询操作&#xff0c;还可以在输入框进行查询。 首先是前端向后端发送POST请求&#xff0c;后端接收到请求&#xff0c;如果是有参数传到后端…

【uni-app】uniapp中弹出输入框的示例

uni.showModal({title: 请输入企业名称,content: ,editable: true, //是否显示输入框placeholderText: 请输入企业名称, //输入框提示内容confirmText: 确认,cancelText: 取消,success: (res) > {if (res.confirm) {this.checkDesc.name res.content;// console.log(输入的…