读数据质量管理:数据可靠性与数据质量问题解决之道08扩展异常检测

读数据质量管理:数据可靠性与数据质量问题解决之道08扩展异常检测.png

1. Python和机器学习扩展异常检测

1.1. 机器学习有助于大规模数据可观测性和数据监控

  • 1.1.1. 配备了机器学习的检测器可以更灵活地应用到更多的数据表上,从而消除了随着数据仓库或数据湖的增长进行手动检查和手动操作的需要

  • 1.1.2. 机器学习检测器可以实时学习和适应数据,并且可以捕获到人眼看不到的复杂的季节模式

  • 1.1.3. 使用机器学习中的一些概念,用更规整的方式来勾勒问题,从而提供大规模的数据可观测性和数据信任

1.2. 构建一个完美的预测器是不可能的,而且对任何有趣的预测问题都是如此

1.3. 在假阳性和假阴性之间,或者在精确率和召回率之间,总要有所取舍

1.4. 真阳性

  • 1.4.1. 当一个数据点确实有问题且我们的检测器也同样发出认为其“异常”的信号时

1.5. 假阳性

  • 1.5.1. 预测异常,但实际正常

  • 1.5.2. 虽然发出了数据监控警报,但并没有真正出现问题

  • 1.5.3. 浪费了用户的时间来对警报做出响应

  • 1.5.4. 假阳性是我们检测到异常但存疑的数据点实际上没有异常的情况

  • 1.5.5. 假阳性检测就像狼来了,换句话说就是你的算法给出了“异常”的结果,但数据点实际上没有任何问题

    • 1.5.5.1. “喊狼来了”的探测器

1.6. 真阴性

  • 1.6.1. 当一个数据点一切正常且我们的检测器也没有检测到它(即发出“不异常”的信号)时

1.7. 假阴性

  • 1.7.1. 预测正常,但实际异常

  • 1.7.2. 确实存在问题,但没有发出数据监控警报

  • 1.7.3. 把一个真正的问题忽视了

  • 1.7.4. 假阴性是数据点确实有问题但检测器没有检测到的情况

  • 1.7.5. 假阴性检测就像一只沉睡的警犬,也就是说你的算法会让问题无法被发现

    • 1.7.5.1. “沉睡警犬型”的探测器

    • 1.7.5.2. 过于保守的检测器永远不会发出异常检测,这意味着当事情真的出错时,它们也肯定会错过

1.8. 异常检测是一项无监督任务

  • 1.8.1. 无监督学习是一种机器学习任务,在该任务中,最优行为在训练时是不可知的

  • 1.8.2. 你正在训练的数据并没有附加任何标签

    • 1.8.2.1. 你可能不得不把异常检测称为无监督学习,因为异常并没有一个统一的基本事实

    • 1.8.2.2. 没有基本事实,你就无法得到错误信号

      1.8.2.2.1. 你无法得到预测结果和你应该预测的结果之间的差异

  • 1.8.3. 对于任何给定的数据点,异常检测器会发出“异常”或“非异常”的预测

  • 1.8.4. 存疑的数据点要么是真正的问题,要么完全就不是问题

  • 1.8.5. 即使是最训练有素的异常检测算法也不可能完全避免假阳性和假阴性

    • 1.8.5.1. 机器学习改进数据监控警报

    • 1.8.5.2. 出于简单的统计原因,两者无法同时避免

    • 1.8.5.3. 其实更少的假阳性会以更多的假阴性为代价,反之亦然

1.9. 提高精确率和召回率

  • 1.9.1. 精确率(又称查准率)被定义为做出正确预测的概率

    • 1.9.1.1. 在所有做出的“阳性”预测中,有多少是正确的呢?

    • 1.9.1.2. 具有高精确率的检测器是“精确的”,因为当它预测事件异常时,往往是正确的

    • 1.9.1.3. 精确率通常告诉我们发出阳性警报时正确的频率

    • 1.9.1.4. 具有高精确率的模型会输出可信的警报,因为它们的高精确率保证了它们很少“喊狼来了”

      1.9.1.4.1. 一个高精确率的模型是一个很少喊狼来了的模型

      1.9.1.4.2. 它发出警报时,你最好相信它

  • 1.9.2. 召回率(又称查全率)被定义为实际异常被检测到的概率

    • 1.9.2.1. 在所有真正的异常中,我们捕捉到了多少呢?

    • 1.9.2.2. 具有高召回率的检测器能够很好地“召回”,它捕获实际上是真异常的概率很高

    • 1.9.2.3. 召回率告诉我们对问题真正发出警报的数量

    • 1.9.2.4. 具有高召回率的模型是可靠的,因为它们的高召回率保证了它们很少忽略真正存在的问题

      1.9.2.4.1. 有良好召回率的模型就像一只敬业的警犬

      1.9.2.4.2. 你可以放心,这个模型会捕获到所有真正的问题

  • 1.9.3. 数据世界是由可量化的目标来运行的,在大多数情况下,我们需要一个单一的目标来进行优化,而不是两个

    • 1.9.3.1. 将精确率和召回率组合成一个被称为F分数(F-score)的指标

    • 1.9.3.2. Fβ被称为加权F分数,因为不同的β值在计算中权衡精确率和召回率有所不同

    • 1.9.3.3. Fβ分数表示:“我认为召回率是精确率重要程度的β倍。”

      1.9.3.3.1. 当β = 1时,该等式认为两个指标一样重要

      1.9.3.3.2. 当β > 1时,表示召回率比精确率更重要

      1.9.3.3.2.1. 我更关心捕捉到所有的异常,而不是偶尔引起的错误警报

      1.9.3.3.3. 设置β<1,精确率会更重要

      1.9.3.3.3.1. 我更关心我的警报是真实的,而不是捕捉每一个真正的问题

  • 1.9.4. Facebook Prophet是一种预测模型,用于大规模处理时间序列数据中的日、周、月和年的季节性关系

  • 1.9.5. TensorFlow是用于各种任务(包括自然语言处理、计算机视觉和时间序列异常检测)的流行机器学习库

    • 1.9.5.1. 对高级异常检测算法一些有用且记录完备的实现

    • 1.9.5.2. 在行业场景中更受欢迎

  • 1.9.6. PyTorch

    • 1.9.6.1. 在Facebook开发的另一个机器学习Python库

    • 1.9.6.2. 可实现与TensorFlow(由Google开发)类似的用例

    • 1.9.6.3. 通常在行业中的学术领域具有较高的知名度

  • 1.9.7. scikit-learn是另一个流行的机器学习软件包

    • 1.9.7.1. 有k邻近(k-nearest neighbor)算法和孤立森林(isolation forest)算法的版本,这是两种常用的聚类(clustering)方法

    • 1.9.7.2. 用Python开发的

  • 1.9.8. MLflow

    • 1.9.8.1. 由Databricks的创建者开发的一种流行的实验跟踪开源工具

    • 1.9.8.2. 实验跟踪是指在开发和生产中管理机器学习模型的过程

    • 1.9.8.3. 实验跟踪是管理机器学习模型开发和训练的过程,包括超参数比较、依赖项检查、管理和编排训练作业、保存模型快照和收集日志等任务

    • 1.9.8.4. 主要是一个实验跟踪和再现软件

    • 1.9.8.5. 开发异常检测软件的一个重要方面是保证代码在不同机器上的运行是相同的

      1.9.8.5.1. 不会希望在本地解决了一个错误(bug),但在生产环境中却无法应用

  • 1.9.9. TensorBoard

    • 1.9.9.1. TensorFlow的可视化工具包

    • 1.9.9.2. 无须使用TensorFlow建模即可使用该软件

1.10. 检测新鲜度事件

  • 1.10.1. 越长的中断就越有可能是真实的事件,但谁也无法保证

  • 1.10.2. 弱相关性会让一个好的模型足够有效但并不完美

1.11. F分数

  • 1.11.1. F分数是分类准确性指标,旨在兼顾优化精确率和召回率

  • 1.11.2. 对于统计学家来说该分数的定义是模型精确率和召回率的调和平均值

  • 1.11.3. F1分数旨在平衡精确率和召回率,它认为精确率和召回率同等重要

  • 1.11.4. 对于导弹探测系统来说,假阳性比假阴性要好。这意味着召回率比精确率更重要

  • 1.11.5. 当β=1时,这个方程与F1分数方程相同

    • 1.11.5.1. 当β=1时,这个方程与F1分数方程相同
  • 1.11.6. 当召回率更重要时,我们应该预期F2分数高于F1分数

1.12. 模型的准确率重要吗

  • 1.12.1. 准确率并不像检测器的平均正确率那么简单,而且对于不同的应用程序来说,其定义也不应该相同

  • 1.12.2. 根据设置的阈值来绘制精确率、召回率和F1分数,则会发现一些重要的信息

    • 1.12.2.1. 具有低阈值的激进检测器具有最佳的召回率

      1.12.2.1.1. 它们可以更快地发出警报,从而发现更多真正的问题

    • 1.12.2.2. 更保守一些的检测器具有更好的精确率

      1.12.2.2.1. 它们只对可能是真实的严重异常发出警报

  • 1.12.3. 任何关于模型准确率的讨论,如果没有某种基准事实与模型预测进行比较,都是不完整的

2. 异常检测算法

2.1. 近乎实时地检测问题

2.2. 向需要了解情况的人发出警报

2.3. 提供信息以帮助防止未来发生宕机

2.4. 规则定义

  • 2.4.1. 规则定义为某些指标值设置了明确的切分点,并确定了相对于阈值的异常值

  • 2.4.2. 只有当大多数数据点都在阈值范围内时,这种方法才能被称为“异常”检测

  • 2.4.3. 规则定义具有令人难以置信的可扩展性,可用于定义极为明确的服务级别协议、数据正常运行时间保证等

2.5. 自回归模型

  • 2.5.1. 自回归适用于时间序列的异常检测,其中数据点使用时间戳对象进行排序

  • 2.5.2. 时间戳对象进行排序。自回归模型从以前的时间步长获取数据,将它们输入回归(线性)模型,并使用该输出来预测下一个时间戳的数据将在哪里

  • 2.5.3. 偏离自回归预测太远的数据点会被标记为异常

  • 2.5.4. 自回归移动平均(ARMA)检测算法和ARIMA检测算法

2.6. 指数平滑

  • 2.6.1. 指数平滑法可以从时间序列中消除趋势和季节性,以便人们可以使用更简单的方法(例如,ARIMA)进行后续分析

  • 2.6.2. Holt-Winters是一个用于时间序列预测的著名季节性模型,并且还有丰富的分类系统

    • 2.6.2.1. 累加性(additive)

    • 2.6.2.2. 累乘性(multiplicative)

    • 2.6.2.3. 阻尼法(damped,又称衰减法)

    • 2.6.2.4. 非阻尼法(nondamped)

2.7. 聚类

  • 2.7.1. 聚类技术[如k近邻算法或孤立森林算法]通过将相似的数据点放入同一个数据桶中,并提醒你注意那些“和桶中数据差异较大的数据点”来发现异常

2.8. 超参数调优

  • 2.8.1. 有些参数通过数据的使用和训练过程才能获得

  • 2.8.2. 被称为超参数的其他参数则不是通过学习过程获得的,反而超参数可以以特定方式去帮助模型的学习和推断过程

2.9. 集成模型框架

  • 2.9.1. 集成模型框架充分利用了聚类、指数平滑和自回归节点等各种方法的优点,将它们组合成一个前馈神经网络,并使用多数投票集成算法将它们的预测结合起来

3. 数据质量监控器

3.1. 在为数据系统构建数据质量监控器时,重要的是要区分,你是在使用来自数据仓库的结构化整体数据,还是在使用现代数据湖生态系统中的复杂数据

3.2. 主要区别

  • 3.2.1. 你必须考虑的入口点数量

    • 3.2.1.1. 数据湖系统往往具有大量的入口点,这意味着应该假设从不同来源输入的数据具有高度的异构性

    • 3.2.1.2. 要警惕“一刀切”的建模方法

    • 3.2.1.3. 另一种方法是使用集成模型架构,或者简单地为每个用例使用单独的模型

  • 3.2.2. 要如何收集并存储元数据

  • 3.2.3. 你会如何访问该元数据

3.3. 直接从数据湖中收集的元数据可能需要经过不同级别的预处理后,才能指望异常检测算法从它们当中获得有价值的信息

3.4. 类型可能需要强制(隐式)转换,模式可能需要对齐,而你可能会发现在运行检测器的训练任务之前,自己在数据中获得了全新的增强特征

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容