7.数据智能

一、序

在有了实时离线的数据之后,我们终于可以使用数据进行业务分析了,基本解决了数据what阶段。对于一个指标我们可以清晰的在数据上发现数据的变化,反应业务的变化情况。但是往往业务是复杂的,经常会有如下这样的疑问:

场景1:今天的支付订单增加了,到底是哪个业务维度、品类维度、城市维度所带来的增长呢?
场景2:以现在的用户增长率、订单增长率,未来的某段时间我们用户量会达到多少?订单是多少?

针对场景1的离线场景,我们开发了一套离线根因分析系统,来帮助用户快速的定位到造成数据变化的根本原因,提高数据分析的效率。

针对场景2的实时场景,我们开发了一套基于时序预测的系统,根据以往的历史数据实时预测未来的数据,并支持预测数据与真实数据实时进行对比分析,用来判断数据是否存在异常情况等。

接下来将分别大致介绍一下,离线根因分析、实时预测系统的设计原理与一些实践尝试的经验,来解决数据WHY的问题。

二、离线根因分析

离线根因分析的方法很多,可以做的很复杂也可以做的很简单,比如:

1、我们简单计算每个维度的变化率,根据变化率倒序排序找出指标变化具体是受哪个维度的影响;
2、基于决策树等机器学习模型来快速的分析出来引起数据变化的最大的维度组合;

而我们采用了一个基于基尼系数来判断维度变化情况的方式来进行维度的分析,首先我们先了解一下什么是基尼系数,以下解释来自百度。

基尼系数(英文:Gini indexGini Coefficient)是指国际上通用的、用以衡量一个国家或地区居民收入差距的常用指标。

基尼系数最大为“1”,最小等于“0”。基尼系数越接近0表明收入分配越是趋向平等。国际惯例把0.2以下视为收入绝对平均,0.2-0.3视为收入比较平均;0.3-0.4视为收入相对合理;0.4-0.5视为收入差距较大,当基尼系数达到0.5以上时,则表示收入悬殊。

基尼指数最早由意大利统计与社会学家Corrado Gini在1912年提出。


基尼系数是根据洛伦兹曲线判断收入分配公平程度的指标,在根因分析的项目里我们加以修改,用于衡量各维度内维度值变化的公平程度。在收入分配的情景下,使用用户数占比作为X轴,收入占比作为Y轴。而在本项目中,使用维度值占比作为X轴,变化值占比作为Y轴。


整体分析步骤如下:

1.数据读取
从元数据信息管理系统中获取指定指标信息,从而拿到对应的当前时间和对比时间数据

2.生成维度值比和变化值比
维度值比 = (当前值+对比值)/总值,总值为每一个维度的当前值和对比值的总和
变化值比 = (当前值-对比值)/变化总值,变化总值为每一个维度的变化值之和

3.根据变化值比倒排
根据基尼系数的构造方式,需要将每个群体的收入占比从小到大排序,最终才能构造出洛伦兹曲线。所以在本项目中,将变化值占比从小到达排序,最终获得已排序的变化值比的数组,以及对应的维度值比数组。

4.基尼系数计算
计算基于极限原理,在X轴间隔足够小的时候,更趋近于真实值。计算结果比真实值偏小,X轴间隔越大,偏差程度越大。其中涉及到一些特殊异常情况下异常值的处理,来更加合理的计算处理维度对应的基尼系数。

根据各个维度的基尼系数,我们可以很容易得出维度对变化的影响,然后再根据各个维度下的值的变化率等其他指标来找出维度下具体哪个维度影响的大小。如下图,我们确定维度C下的具体值1影响最大,怎么找出其他维度的组合呢,就是限制维度C的值等于值1的情况下,对其他维度进行分析,用了找出维度与维度组合的最终原因。

整体上该方案适合多维情况下的根因分析,最终效果基本满足日常分析需求。

三、实时预测告警

场景

目前有很多实时指标用于监控业务状态,如何准确、及时地发现实时数据异常,并分析异常原因,是本项目需要解决的问题。

  1. 及时:在数据出现异常时,尽快发现异常,能够最大程度减小损失。
  2. 准确:频繁误报会使相关人员对告警失去信任,从而不能及时处理。
异常识别方法

在异常的判定中,最常用的就是使用同比或环比,但这两种方式都有一个明显的缺陷。

  1. 同比:当前值和上一周期的值进行比较,如果当天数据整体上涨或下降,那么会有非常频繁的告警。
  2. 环比:当前值和上一个值进行比较,如果数据出现周期性波动,也会出现误报,并且环比变化最大的,也不一定就是异常的数据。
  3. 同比 + 环比:即便单独使用同比或环比都不行,那么把两个结合起来一起使用是否可以呢?理论上来说是能够解决一定问题的,但是加权平均的权重如何确定?这也是一个难以获得准确结果的问题。

在同比或环比的判断中,仅使用了前一个点或前一个周期点两个时间点的数据,并没有充分利用整个时间序列的变化趋势,所以为了解决这类问题,我们采用时间序列预测算法三次指数平滑来预测数据,并与真实值进行比较来达到异常告警的目的。

时序预测-三次指数平滑


使用时序预测模型之前,我们要根据自己的数据特定来选择适合的模型,我们可以先观察数据是否有趋势性、周期性等。

Hot-Winters是指数平滑法,属于调和平均的一种方式。历史数据时间越久,对当前预测值的影响比重呈指数递减,但所有的历史数据都会对当前预测值产生影响,这样就能够利用整个时间序列的变化趋势。

实际上我们只需要根据业务调整α β γ三个参数,使整体预测数据与真实数据的均方差最小即可,最终我们的值分别取(0.8,0.2,0.2),可以根据预测数据的特性,使用不用的参数值来预测数据。

预测区间与异常判断

得到预测值与真实值之后,我们需要判断数据是否异常。由于预测数值存在一定的误差,所以我们允许真实值在一定范围内波动,因为预测区间基于误差值获得,当误差较小的时候,预测区间很小,会造成一定程度的误报。根据对预测结果进行分析,当计算出来的误差预测区间为[a*真实值, b*真实值] 时,最终选择的误差预测区间为[min(-0.06,a)*真实值, max(0.06,b)*真实值],来放大误差较小情况下的预测区间,减少误报的情况。

在发现数据异常之后,我们需要实时分析出来实时数据异常的原因,这里我们预设了一些指标的分析维度,采用同比、环比等简单的方式快速分析可能的原因。

总结

基于以上理论,我们大致解决了离线的根因分析与实时数据异常告警分析。每个公司业务和资源的不同可以采用不同的分析方法,可以根据资源使用简单的方式 ,也可以使用机器学习等等相对复杂的分析办法。具体实现并不是越复杂越好,简单的方式方法也可能比较准确高效。

以后可能有更多的数据智能化场景,整体都离不开降本增效,提升数据使用效率,大道至简。

个人主页
上一篇 《数据系统架构-6.BI数据展示平台》
下一篇 《数据系统架构-8.任务调度系统》

数据系统架构-7.数据智能相关推荐

  1. 数据系统架构-6.BI数据展示平台

    6.BI数据展示平台 一.序 在有了数仓.实时.离线的数据之后,我们需要一个数据展示分析的平台.如果为了节约成本这部分我们可以是使用一些开源的BI平台,比如cboard.或者在此基础之上做一些定制化二 ...

  2. 数据系统架构-8.任务调度系统

    任务调度系统 序 在有了各种数据统计任务之后,就产生了任务调度需求,我们需要把任务管理起来统一调度,保证任务之间上下游的依赖关系,监控任务运行状态,异常情况下及时告警,尽可能自动化处理异常,调度系统高 ...

  3. 「九章云极DataCanvas」完成C+轮融资, 用云中云战略引领数据智能基础软件升级

    9月5日,中国"数据智能基础软件"引领者九章云极DataCanvas宣布完成C+轮融资,由龙门投资领投,中关村前沿.达泰资本.德本启辰.领沨资本跟投,凡卓资本担任本轮融资的独家财务 ...

  4. 曼孚科技入选IDC中国数据智能市场代表厂商

    日前,国际知名市场调研机构IDC发布了<Market Glance:中国数据智能市场概览,2022>报告. 报告全面展示了中国数据智能市场的构成与格局,同时遴选出不同细分市场领域的主要技术 ...

  5. 阿里首度公开大数据系统架构《大数据之路:阿里巴巴大数据实践》来了

    絮絮叨叨了很久,说阿里数据要出书.每天被催,什么时候写好,什么时候出版.终于,千呼万唤始出版了!!!! 点击阅读详情,即刻试读!!! 曾鸣教授作序 CSDN.ChinaUnix.ITPUB.segme ...

  6. 数据智能架构的度量标准

    摘要 数据智能是一个领域,技术架构是实施方案,我们很难从好或者不好的维度去衡量一个架构,更多会基于当前的上下文下来审视架构是否具有合理性,以及遥想一下在可见的未来是否具有合理性的视角,来看待当前架构是 ...

  7. 大数据平台开发:大数据系统架构模块解析

    企业要开展大数据相关业务,首先就需要基于自身的需求,来设计搭建数据系统平台.而大数据系统平台的搭建,需要基于实际需求,来进行系统架构规划.今天我们就从大数据平台开发的角度,来对大数据系统架构模块做一个 ...

  8. 【数据架构系列-03】数据仓库、大数据平台、数据中台... 我不太认同《DataFun数据智能知识地图》中的定义

    关注DataFunTalk有2年多了,DataFun确实像创始人王大川讲的那样,践行选择.努力和利他原则,专注于大数据.人工智能技术应用的分享与交流,秉承着开源开放的精神,免费的共享了很多有营养的行业 ...

  9. 预见未来 | 数据智能的现在与未来

    编者按:自1998年成立以来,微软亚洲研究院一直致力于推动计算机科学领域的前沿技术发展.在建院20周年之际,我们特别邀请微软亚洲研究院不同领域的专家共同撰写"预见未来"系列文章,以 ...

最新文章

  1. 是什么限制了我对Graphical abstract的想象力
  2. jvm中的垃圾收集器serial、parNew、parallel Scavenge;serial old、parallel old、CMS、G1
  3. 027_JavaScript数组迭代
  4. think.class.php下载,PHP_ThinkPHP实现将本地文件打包成zip下载,首先,将FileToZip.class文件放到T - phpStudy...
  5. 两个计算机系统安装,如何在一台电脑上同时重装两个系统|戴尔电脑怎么安装两个系统...
  6. python 插补数据_python 2020中缺少数据插补技术的快速指南
  7. 树的常见概念,二叉树的性质
  8. 在windows上搭建一个ftp服务器
  9. Java和JavaScript在网页设计中的区别,了解一下吧
  10. iOS底层探索之多线程(七)—GCD源码分析(死锁的原因)
  11. 电大网络教育计算机应用基础,(热)最新电大奥鹏远程网络教育计算机应用基础题库.doc...
  12. 乐动ld06激光雷达sdk改bug记录分享
  13. Mach-O文件, 架构包framework的合并和拆分
  14. 华为鸿蒙OS精品资料汇总,持续更新中
  15. 脑机接口数据分析工具EEGLAB04---绘制通道光谱图
  16. 学日语、记单词是有规律的(转载)
  17. Kubernetes进阶部分学习笔记
  18. AES加密算法及逆向
  19. Android个人所得税计算器
  20. 利用几何布朗运动对招商银行2021年进行股价预测

热门文章

  1. mbot机器人自动超声波模式程序_利用mBot智能机器人使用超声波传感器解决问题...
  2. 如何解决FIFA23 反作弊应用程序The application encountered an unrecoverable error
  3. python飞机大战报告总结_python飞机大战总结
  4. 用VC++编写勾子程序
  5. 五一假期玩转云台山的景点
  6. Sword32-I——从上到下打印二叉树
  7. 融合通信售前糗事大集锦,你中了几条!
  8. 提高看log效率的小工具
  9. 财经小知识——CRS风暴与全球离岸金融中心
  10. 他从锅盔小贩到拉闸大亨,举步维艰终于发家致富