LTV预测算法从开发到上线,浅谈基于奇点云DataSimba的MLOps实践

今年8月,StartDT旗下GrowingIO分析云产品客户数据平台(CDP)正式上线了LTV预测标签。通过开箱即用的标签功能,分析师就能一键生成用户价值的预测结果,用于用户运营和价值分析。

LTV预测标签背后是怎样的算法?

为什么LTV算法以标签形式产出结果,能做到又快又稳?

企业在自建算法模型的过程中,还有哪些坑要规避?

本文以LTV算法为例,介绍基于奇点云数据云平台DataSimba的MLOps实践。

索引

  • 背景:如何用算法让LTV预测更简单?
  • 实践:LTV算法从开发到上线的3个难点
  • 解析:基于DataSimba,完成MLOps全链路
  • 提效:SimbaOS Kernel加持,让算法工程师专注算法

共4194字,阅读时间约16分钟。

(一)背景:如何用算法让LTV预测更简单?

LTV(Lifetime Value,生命周期价值)指用户与一家公司/品牌建立关系的整个“生命周期”内产生的价值,是企业市场营销、客户关系管理、用户运营中的一项关键指标。

通过分析、预测LTV,企业可以针对性地制定运营、营销乃至定价策略,助企业更高效地达成业绩目标。

过去,当营销活动需要基于用户LTV来制定策略时,有以下2种常见方案:

1、结合历史数据和个人经验制定策略

这种方案有一定的数据基础,但对业务指标的总结、分析以及LTV的预测较为依赖“老法师”的经验,不确定性较高,且伴随重复、长期、大量的数据分析,无法快速响应业务的高频需求,结合业务发展更新迭代。

2、使用开源框架自研LTV算法。

伴随信息团队的壮大和开源技术的成熟,有越来越多的企业开始自研算法,尝试使用一些开源框架解决问题。但同时又不得不面对适配难开发周期长、数据在多种工具之间流转安全无保障训练成本高缺乏专家经验效果不够理想等问题,从开发到部署上线、在日常工作中高效使用,还存在鸿沟。

基于客户需求调研,奇点云算法团队和GrowingIO分析云产品团队“一拍即合”,选择开发LTV算法,并将它以“LTV预测标签”的形式嵌入到分析云客户数据平台(CDP)产品中

LTV预测标签开箱即用,分析师只需要在CDP界面中选择用户表、事件表(核心转化/营收事件),设置LTV预测目标,就可以一键运行算法模型全链路,生成预测结果。

这样做的好处是,调用LTV算法不再需要依赖工程师,技术门槛大大降低,对业务响应速度快、效率高,算法也能基于最新数据自动迭代优化。

(二)实践:LTV算法从开发到上线的3个难点

LTV算法本身是基于一套自学习算法流程进行的自动化建模,需要对用户进行灵活的特征构建,并采用多个内置模型对比以避免模型结果漂移,帮助模型寻找用户群体规律,提高预测准确率。

考虑到LTV算法会在CDP产品中以“标签”形式被调用,除了算法本身的开发训练,算法团队还需要确保在实际的生产环境中依旧表现良好,输出既高效又稳定。

拆解来看,具体有以下3个核心难点要克服:

1、用于处理的数据不标准,配置不确定。

出于行业习惯、企业数据治理程度等原因,不同客户的数据基础往往存在较大差异。日常运营活动中,对于LTV的衡量方式也灵活多变。

因此,LTV算法选择基于UEI模型的标准数据表构建

UEI(User用户、Event事件、Item实体)是GrowingIO分析云产品核心的数据模型,把所有用户行为、商品、门店等不同维度数据整合在一张表,以一个事件不同属性的形式呈现在宽视图中,以满足不同的分析需求。客户在使用CDP、UBA等产品时,基础数据已按照用户表、事件表、实体表构建。LTV算法直接采用,即可快速得到结果。

进一步,通过选填字段提升算法效果;通过一些识别规则和再处理逻辑的设置,来帮助算法在预处理、特征工程、训练集构建、模型构建阶段,能自适应不同量级、不同时间跨度的数据集,以及短则一天、长则数月的预测周期

说人话:上述动作旨在简化用户使用算法的步骤,在保证算法效果的前提下,尽可能适应数据情况各不相同的企业。

2、算法应当稳定产出优于业务规则的效果。

稳定产出比业务规则、人工经验更好的效果,是开发LTV算法的初衷。

在模型构建过程中,算法团队选用了常用的三个决策树模型,并通过将测试集上的指标效果对比排序来选择模型。主要选择指标如下:

在进行目标金额的误差优化时,往往会损失一定分类排序性能。但用户(分析师、业务人员)在使用该标签时,通常直接将前排排序结果作为运营人群来进行触达。因此算法会对比三个指标的结果进行模型选择,避免模型漂移。

基线的构造方法如下:

基线构造方法

算法相对基线,LTV算法在下列指标上的提升如下:

*不同数据集的指标结果相差较大,上表仅展示测试数据集的提升范围。

目前,LTV算法已能够快速、稳定输出优于重复业务策略的结果。同时,它依然拥有很大的优化潜力,可以针对数据集进行更多调整。(CDP提供标准的LTV算法预测标签,针对特定企业的优化属定制化开发项目。)

3、为优化用户体验,在资源和时效上应有保障。

完成开发并不是LTV算法的终点——能在企业生产环境中稳定发挥的算法,才是业务需要的好算法。

在实际生产中,算法运行通常要长时间地占用大量资源,而LTV算法的结果显式地展现为一个CDP标签,客户会对其时间、资源有更严格的心理预期

因此,算法团队从以下3点优化体验:

· 进行算法资源隔离,确保算法能尽快申请到资源,并减少数据作业和算法作业互相影响而导致任务运行超载的情况。

· 拆分成若干个作业并配置Pipeline,为每个作业配置不同的参数,以减少单个作业的资源占用量,以及整个算法任务对大型资源的占用时间,并支持阶段性地输出运行日志。

· 通过前期大量测试及结果回归,为任务运行预估时间,并设置细致的数据校验,提供报错信息,以减少用户在使用中的焦虑,也更易运维。

其中,前2点能力来自SimbaOS Kernel(数据云操作系统内核,是DataSimba的核心)。

(三)解析:基于DataSimba,完成MLOps全链路

MLOps(Machine Learning Operations),是一种把ML(机器学习)模型的部署管理与DevOps(软件开发运维)相结合的实践和方法论,目标是实现并提升机器学习模型的可重复性、可扩展性和可维护性。

MLOps(的过程及相关工具)通常涵盖模型开发和训练、模型部署、监控和维护、自动化、版本控制和跟踪等环节,并支持团队协作和知识共享。

说人话,就是改“手工小作坊炼丹”为“成熟的工业化制造工厂”,让机器学习从研究及原型开发,真正转化为能满足业务需求的实际应用。

本文所介绍的LTV算法,从数据准备、模型训练到发布,以及作为服务被调用,也就是MLOps的全链路,均在DataSimba上进行。

算法工程师昭游介绍,LTV算法预测标签在上线前进行了约500次测试,其中包括但不限于规则阈值、压力测试、默认参数等等。得益于DataSimba的资源分配、版本管理、持续更新部署等能力,算法团队在作业调试、Pipeline构建及模型部署过程省去了不少烦恼,从而达成“代码管理整洁”、“调整测试便捷”、“部署上线快捷”三大目标。

抽象来看,DataSimba支持工程师完成MLOps的全链路如下图所示:

基于DataSimba的MLOps流程

  1. 数据集成,通过离线任务将数据保存至研发模块,并定期更新。DataSimba支持集成数据库类型或文件格式的数据。在LTV算法的场景中,底层数据主要来自ClickHouse。
  2. 在研发模块,进行作业开发。开发过程中的代码版本、更新历史记录、运行日志等,一并存储在DataSimba集成的Git仓库中,进行统一的管理。
  3. 从Git仓库中拉取最新的代码,配置算法构建任务流,以便持续集成与发布。
  4. Pipeline在首次运行后,会生成模型文件,在模型中心进行注册与管理。并在后续运维过程中,持续部署、更新模型文件。
  5. 调用镜像和已注册的模型进行服务配置。后续模型的版本更新会自动从模型中心拉取最新版本。
  6. 在服务中心,对平台内的所有服务进行统一管理及调用。
  7. (实时)终端/业务系统只需访问API,即可实时获取当前最新的模型预测结果;(离线)在Pipeline持续更新模型的过程中,输出的预测结果也会反向存储进数据库,终端/业务系统可通过访问数据库来获取离线的计算结果。

数据是AI的基础,算法依赖大量数据来训练模型,在生产环境中也需要处理数据来产出结果。如果算法工程师不需要从数据云平台导出数据到其他工具,不需要把数据下载到本地开发再导回生产环境做部署,也不需要在多个开源工具中流转,算法生产全流程的安全性及便利性将大大提升

因此,数据云平台DataSimba不仅能完成“本职工作”(数据集成、研发、运维、治理、服务等),支持数据工程师搞定数据作业,也能支持算法工程师完成MLOps全链路工作——提供经清洗治理的数据,以及数据管理、建模、持续部署、计算资源与存储管理等全流程能力。


(四)提效:SimbaOS Kernel加持,让算法工程师专注算法

经不严谨测算(消耗算法工程师3名),相较通过开源组件自建,或借助其他算法平台工具,依托DataSimba的全流程耗时可缩短40%~78%

据算法团队介绍,一位没有算法基础的售前专家曾基于DataSimba创下1天内做出算法demo的纪录,“即便此前我们已经对他做过2小时培训,他对DataSimba各个模块相对熟悉,但这个速度还是挺惊人的。”

提效一方面得益于DataSimba具备一站式完成数据管理、建模、持续部署、计算资源与存储管理等全流程的能力,为算法提供经过治理的干净数据;

另一方面,则离不开SimbaOS Kernel(数据云操作系统内核)的加持——“包揽”了安全管控、资源管理、任务调度等底层技术问题,把算法工程师从各种权限配置、数据对接、争抢资源的“痛苦”中解放出来,更专注在算法本身。

*SimbaOS Kernel是DataSimba的核心层,将大数据领域的存储、计算、服务、调度、安全、租户等常用功能,抽象为一组标准对象模块。用户只需直接使用封装好的对象的能力,无需关注复杂的底层体系。

举2个例子:

1、不用抢,资源也有保障

依托SimbaOS Kernel和企业设定的资源调度规则,可以对算法作业配置资源及运行环境,确保算法能尽快申请到独立的资源,从而确保算法与数据作业运行无冲突,资源不抢占。

同时,SimbaOS Kernel的任务域支持作业Pipeline构建,可配置定时调度,拥有全套的任务失败恢复和基线告警机制,保证算法任务的高效执行。

2、全方位全链路守护安全

除了无需把数据导出平台、规避因多工具流转而带来的安全风险,SimbaOS Kernel更拥有一套完整的权限体系和数据安全策略,为上层的所有数据应用(包括SimbaMetric、CDP、UBA等)统一解决用户管理、身份认证、资源访问权限等安全相关问题,例如:

· 精细化管控用户权限,并通过项目划分确保数据隔离,算法任务只对必要数据有访问权限;

· 支持敏感数据自动识别、加密脱敏(如使用的数据表中涉及敏感数据),并可提供数据访问、调用、开发处理等行为的审计记录;

· 对业务数据、算法模型等数据资产提供异常操作行为识别、告警、防泄漏等安全保障。


目前,在DataSimba R4.9 LTS以上版本,均具备上述MLOps能力。同时,旗舰版套餐还包含专门为算法模型开发全生命周期管理提供的一站式平台工具SimbaML(算法工厂),以及包括推荐引擎、复购预测、流失预警、销量/销售预测、GraphOneID图计算等开箱即用的算法模型,帮助企业初步建立数据科学应用能力。详情可咨询奇点云客户经理/技术顾问了解。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

url找不到404的问题,url被拼接

今天遇到一个测试feign调用的功能,如图所示 先说结论 Controller换成RestController 将日志设置为debug模式 被DispatcherServlet FORWARD了 找到路径 对属性设置断点,看下是哪注进来的 我们再去找encodedPath 此处是undertow的源码,但是und…

systemverilog:interface中的modport用法

使用modport可以将interface中的信号分组并指定方向,方向是从modport连接的模块看过来的。简单示例如下: interface cnt_if (input bit clk);logic rstn;logic load_en;logic [3:0] load;logic [7:0] count;modport TEST (input clk, count,output rst…

Node.js 安装配置

文章目录 安装检测Node是否可用 安装 首先我们需要从官网下载Node安装包:Node.Js中文网,下载后双击安装没有什么特殊的地方,安装路径默认是C盘,不想安装C盘的话可以选择一下其他的盘符。安装完成以后可以不用配置环境变量,Node安装已经自动给…

正点原子阿尔法Linux开发板——MfgTool烧写工具烧写系统

WINDOWS系统下 前提准备 OTG、TTL的USB接口分别连接电脑 USB_OTG 用于烧写,USB_TTL 用于串口查看烧录进度 拨码拨至USB烧录——0100 0000 烧写 SECURE 软件连接串口CH340的COM(软件安装激活) 我的开发板是I.MX6ULL(EMMC)——双击"Li…

面向对象和原型/原型链学习

##构造函数执行的机制 函数的其中一个作用,就是构造函数. ###new关键字 1.创建一个对象; 2.这个对象的原型,可以看到这个Function 3.该对象,实现了这个构造函数的方法. 4.根据一些特定情况,返回: (1)如果没有返回值,就返回一个对象; (2)如果返回一个基本类型,则还是返回…

指针传2

几天没有写博客了,怎么说呢?这让我总感觉缺点什么,心里空落落的,你懂吧! 好了,接下来开始我们今天的正题! 1. ⼆级指针 我们先来看看代码: 首先创建了一个整型变量a,将…

计算机基础知识53

模板之过滤器 # HTML被直接硬编码在 Python代码之中,Django的 模板系统(Template System) # 过滤器给我们提供的有六十多个,但是我们只需要掌握10个以内即可 过滤器名称就是函数名 # 语法:{{ obj|filter__name:param }} 变量名字…

Android 启动优化案例-WebView非预期初始化排查

作者:邹阿涛涛涛涛涛涛 去年年底做启动优化时,有个比较好玩的 case 给大家分享下,希望大家能从我的分享里 get 到我在做一些问题排查修复时是怎么看上去又low又土又高效的。 1. 现象 在我们使用 Perfetto 进行app 启动过程性能观测时&#…

亚里士多德的思想统治西方世界,实体论证明人不是猪

苏格拉底、柏拉图、亚里士多德,并称古希腊三贤。 公元前384年,亚里士多德出生在马其顿的奴隶主家庭,父亲是马其顿国王腓力二世的宫廷御医。 公元前367年,亚里士多德迁居到雅典,进入柏拉图学园,跟随柏拉图…

什么是自动化测试框架?

无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上自己的一些实践,算是对“框架”…

Python 获取北上广深历史天气数据并做数据可视化

嗨喽,大家好呀~这里是爱看美女的茜茜呐 知识点: 动态数据抓包 requests发送请求 结构化非结构化数据解析 开发环境: python 3.8 运行代码 pycharm 2022.3.2 辅助敲代码 专业版 requests 发送请求 pip install requests parsel 解析数据 pip install parsel …

golang学习笔记——类型转换

Go 语言类型转换 将整型转换为浮点型: var a int 10 var b float64 float64(a)将字符串变量 str 转换为整型变量 num var str string "10" var num int num, _ strconv.Atoi(str)注意,strconv.Atoi 函数返回两个值,第一个是转…

JavaWeb Day10 案例-部门管理

目录 一、查询部门 (一)需求 (二)思路 (三)查询部门 (四)、前后端联调 二、删除 (一)需求 (二)思路 (三&#xf…

zabbix之邮箱告警,钉钉告警,电话告警

安装zabbix的服务器 zabbix-server 192.168.231.219 zabbix-agent 192.168.231.217 ,已安装nginx 前提 Zabbix告警是指当监控项的值超过了预设的阈值时,Zabbix会向管理员发送告警信息,以便管理员及时处理问题。 浏览器访问 192.168.231.219…

肝了一周,整理了Python 从0到1学习路线(附思维导图和PDF下载)

前段时间,我们陆续分享了一些关于Python基础知识,以及现在比较流行的Python各领域的学习知识,后台有很多小伙伴反馈,想要系统的自学Python,希望我们可以提供一个框架,方便作为参考,学习Python。…

Using Definition View 使用定义视图

You use Definition view to create definitions within a defined hierarchical structure, in which nodes represent the definitions. A node is the visual representation of a section, step, or action that you can select, collapse,modify, and so on. 您可以使用“…

找风景视频素材,就上这5个网站。

找风景视频素材那一定要上这6个网站,免费下载,赶紧收藏! 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 菜鸟图库网素材非常丰富,网站主要还是以设计类素材为主,高清视频素材也很多,像风景…

网站分类seo怎么优化(如何调整有利于SEO排名)

网站分类seo怎么优化(如何调整有利于SEO排名) 这期分享一篇关于网站seo优化中关于网页分类排名优化的文章,看看原文来自 蝙蝠侠IT ,原文标题网站分类,没有SEO标题,怎么办的文章介绍。 理想与现实总是充满矛…

学c语言可以过CCT里的c++吗?

学习 C 语言可以为学习 C 奠定一些基础,但它们是不同的语言,有各自独特的特点和用途。最近很多小伙伴找我,说想要一些c语言的资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「c语言资料…

Linux控制---进程程序替换

前言:前面我们学洗了Linux进程退出的相关知识,了解了什么是进程退出,已经进程等待的相关话题,今天,我们来学习Linux中的进程程序替换,进程程序替换在Linux中可以用于实现新程序的启动、程序升级、多进程程序…