一、项目背景
当前云音乐核心指标,绝大多数由数据仓库团队提供数据支撑。数据质量体系标准的评估,依托网易数帆数据开发治理平台的数据质量中心(简称:dqc)功能。在指标异动的监控应用方面,主要通过事前规则设定、事中任务监控、事后异常触达等过程,实现数据质量的全链路监控。其准确性,强依赖于人工阈值设置的合理性,而在业务发展的不同阶段或时间周期下,指标的波动趋势形态、特点往往是不同的,人工阈值缺乏普适性。综合来看,现有监控方式存在以下不足:
缺乏灵活性:阈值设置太宽,容易漏报;设置太紧,误报严重。
无法感知业务的动态变化:如:缓慢持续变化趋势、节假日效应等。
二、项目思路和方案
dau作为云音乐核心KPI指标,本文方案的选型、可行性评估,以云音乐dau指标作为试点应用案例。在dau指标变化方面,dqc存在无法及时、准确感知指标异常。如:在21年某月设置的波动阈值,在22年上半年误报率非常高,被动调整阈值以适应变化;在2022年X月底,某端dau呈现持续缓慢下降的趋势,现有dqc无法感知。
2.1 目标
更准确:提升指标异动发现的准确性
更科学:提高指标异动监测的科学性
易复用:可快速复用到其他业务和指标
2.1 行业案例
在指标异常发现方面,业内有较多的应用产品,具体如下:
2.2 技术选型
2.2.1 可选方案
(1)3-sigma
原理
3σ原则又称为拉依达准则, 3σ原理可以简单描述为:若数据服从正态分布,则异常值被定义为一组结果值中与平均值的偏差超过三倍标准差的值。即在正态分布的假设下,距离平均值三倍 σ之外的值出现的概率很小,因此可认为是异常值。
局限
3σ原则局限于正态或近似正态分布的样本数据,以测量次数充分大为前提(样本>10),当测量次数少的情形用准则剔除粗大误差是不够可靠的。
(2)Holt Winters
原理
常见时间序列数据处理算法有全期平均法、移动平均法、指数平滑法。简单的全期平均法是对时间数列的过去数据全部加以同等利用;移动平均法则不考虑较远期的数据,并在加权移动平均法中给予近期数据更大的权重;而指数平滑法则兼容了全期平均和移动平均所长,不舍弃过去的数据,但是仅给予逐渐减弱的影响程度,即随着数据的远离,赋予逐渐收敛为零的权数。
据平滑次数不同,指数平滑法分为:一次指数平滑法、二次指数平滑法和三次指数平滑法等。一次指数平滑法针对没有趋势和季节性的序列,二次指数平滑法针对有趋势但没有季节性的序列,三次指数平滑法针对有趋势也有季节性的序列。
局限
指数平滑法是一种时间序列预测方法,其预测依据来源于历史数据,对营销活动引起需求变化无法感知。
不管是否自适应,指数平滑法都较难找到合适的指数平滑系数参数,对需求变化的调整存在滞后性,无法对一定时间内需求突变进行预测。
(3)XGBoost
原理
XGBoost是Boost系列算法中的一员,Boost根本思想在于通过多个简单的弱分类器,构建出准确率很高的强分类器。简单地来说,XGBoost每一步都产生一棵训练好的CART子树,一棵子树处理一个数据特征维度,最后将所有子树的结果加权计算得到最后的预测。
局限
XGBoost作为监督算法,训练数据集必须存在标签列。
算法参数多,调参复杂,需要对XGBoost进行众多调试才能发挥XGBoost优势。
2.2.2 评估指标
召回率(Recall):表示原始样本数据的异常点有多少被算法预测正确。
准确率(Precision):表示算法预测为异常的点中有多少是真正的异常点。
正确率(Acc):表示算法预测当前数据点是否异常的正确率。
F1-score:召回率和准确率的综合指标,越高表示算法表现越好。
2.2.3 数据集
200个原始数据,其中异常点个数为19个。指标趋势如下,其中标注圆点为异常点。
2.2.4 评估策略
使用dqc的计算逻辑进行预测,其中7日环比变化率超过5%认为是异常点
使用3 sigma的计算逻辑进行预测
使用holt winters算法进行预测,其中输入数据为20210401到当日全量的dau
使用XGBoost算法进行预测,其中XGBoost算法的输入数据为单个特征(dau时间序列数据)
使用XGBoost算法进行预测,其中XGBoost算法的输入数据为7个特征(7个连续dau数据一组)
2.2.5 评估结论
数据结果
可视化结果
XGBoost算法的表现明显优于dqc、Holt Winters等算法,能找出最多的异常点并且错报最少。
dqc虽然能找出部分异常点,但是在固定阈值时错报率太高;实际使用时如果选择较为小的阈值将会经常错报,如果设置较大阈值将会漏报。
3sigma找不到异常点,也不进行报错,可能需要用其他阈值(非3sigma)。
Holt Winters算法虽然找出了大部分异常点(Recall高),但是错报率也稍高(Precision低),而且需要一定的数据才能预测准确,上限低。
XGBoost算法找出了大部分异常点,错报率低。其中两个XGBoost算法使用了不同数量的特征,使用多特征的xg算法表现优于单特征XGBoost算法,表明XGBoost算法上限高,可以使用更多的相关特征来提升XGBoost算法。
融合算法找到了所有异常点,但是错报率相对提升。
后续可以选择更好的多个算法的融合策略,提高鲁棒性。
以上算法使用的数据存在手动标注,可能存在不合理的异常点。
2.2 技术框架
2.2.1 技术架构
基于当前杭研猛犸大数据平台质量中心,融合机器学习算法功能等,技术架构设计如下:
2.2.2 处理流程
处理流程
结合2.2.5评估结果,综合评价指标的优劣。对于指标异动发现,采取dqc+模型预测结合方式。具体流程如下:
融合策略
考虑到dqc异动发现阈值设置严格时的误报,以及dqc阈值设置宽松时漏报,通过整合算法预测异常在多个指标的表现优势,制定策略集,进而判定指标异常与否,示意图如下:
三、项目影响力与产出价值
3.1 技术价值
更准确:指标异动发现召回率提升74%,准确率提升40%,正确率提升20%等
更科学:整合模型预测优势,通过模型学习能力,可感知业务的动态变化,同时解决了dqc阈值缺乏灵活性的问题
易复用:容器化部署,配置化接入,快速复用
3.2 产品价值
联合杭研平台技术能力,在产品化方面做了探索。
拓展“数据质量中心”功能,在DQC监控功能的基础上,接入机器学习平台。功能流程如下:
3.2.1 功能框架
3.2.2 产品配置
功能配置:在原有上下限、波动阈值、异常值监控的基础上,提供机器学习算法预测异常的功能,并对于周期性、周期波动等提供可配置化功能。
结果反馈:结果反馈,主要针对有监督学习算法,对于异动预测的结果,人工确认后,反馈给平台,进一步提升模型的可靠性。
四、项目未来规划和展望
4.1 模型迭代
功能优化:当前方案在数据指标上,虽然有极高的召回率和良好的准确率,但还存在一定量的误报,虽很好的满足了指标异动发现的业务要求,但还需优化。
普适性:算法的应用有其适用的场景,在覆盖更多业务和指标方面,是否依然有良好的表现,或需要拓展更多模型算法的接入,还有待挖掘。
4.2 产品化迭代
基于当前智能算法特点,推进产品化最终落地需要解决两个问题:
(1)如何引导用户选择相应的指标,从而让智能算法产生正向而不是负向收益。
解决方案:明确当前算法适用的指标,并通过产品引导的方式,帮助用户选择适当的指标,比如周期性要求。另外结合一些技术手段,获取到原始数据样本,并结合数据样本特点自动匹配对应的算法模型。
(2)如何解决初始样本数据不足导致算法预测效果不理想问题。
解决方案:可以将指标数据分为三个阶段,更高阶段对于智能算法依赖更强,也更智能,预测效果也更好。
①新指标,还未投产或者数据样本不足
②已有指标,已经投产并且数据样本充足
③已有指标,数据样本充足并且可以人工标注
对于第①阶段的新指标,智能算法很难获得较好的推荐,需要引导用户配置阈值,作为指标冷启动阶段的有效监控手段,同时结合结果反馈机制,不断收集用户反馈,完善数据样本及标注,并在数据样本足够并算法效果评估后切换成第二种或者第三种.。
对于第②阶段的指标,可以通过一些统计学或者无监督的算法预测阈值,同时结合结果反馈机制,不断收集用户反馈,完善数据样本及标注,并在数据样本足够并算法效果评估后切换成第三种.。
对于第③阶段的指标,数据已经比较成熟,可以很好的利用 Xgboost 等较成熟的预测算法或者机器学习训练模型,以获取更好的预测结果,同时结合结果反馈机制,不断收集用户反馈,完善数据样本及标注,并完善算法的准确率和召回率等指标。
后记
从“数字化”到“数智化”的演进,数据建设的技术体系,趋于生态化和多元化。技术的融合创新,赋予数据以智慧的魔力。笔者的实践经验,始于开源技术,感谢开源的力量。如网易价值观所倡导:从0到1是创新,从1到1.1也是。我们会继续保持极客精神,为数据智能,奉献热爱!