Netflix异常检测工具Surus初探

标签: 数据 异常检测 | 发表时间:2020-03-30 21:04 | 作者:标点符
出处:https://www.biaodianfu.com

Surus简介

Surus是NetFlix开源的UDFs,是基于pig和hive的数据分析工具。Surus中的功能能够解决多种多样的问题,例如评分预测模型、异常检测与模式匹配等。目前开源的UDF功能主要包括两个,包括ScorePMML和Robust Anomaly Detection (RAD)。

ScorePMML

预测模型的应用随处可见,然而这些应用都不相同,唯独相同的是模型的创建和部署是相同的。PMML是一个开源的预测模型标记语言,ScorePMML中利用PMML作为一种标准解决自定义评分方法在hadoop环境中的扩散问题。

RobustAnomaly Detection (RAD)

RAD主要用于异常检测,尤其是大数据集异常检测。RAD利用Robust Principal Component Analysis (RPCA) 算法检测异常。RPCA通过反复迭代计算SVD(SingularValue Decomposition),并将每次计算的奇异值和误差作为阈值来标识低等级的代表(a low rank representation)、 随机噪声和异常值。此算法已打包成一个pig的UDF,只需在pig代码中增加一些代码就可以调用此方法。

RAD在Netflix有两个重要的应用场景,并取得了重大的成功:

  • 场景一:Netflix利用RAD在银行级别的支付网络故障中检测异常。
  • 场景二:网站的注册流程也是一个重要的应用场景。全世界的用户通过上百种浏览器和设备进行注册。当用户注册出现问题时,工程师能够通过识别用户使用不同设备与浏览器的组合及时查明原因帮助用户解决问题。

Robust PCA简介

PCA

主成分分析(PCA)可以有效的找出数据中最重要的元素和结构,去除噪音和冗余,能将原有的复杂数据进行降维。最简单的主成分分析方法就是PCA,从线性代数的角度看,PCA的目标就是使用另一组基去重新描述得到的新的数据空间,通过这组新的基,能揭示与原有的数据间的关系,即这个维度最重要的“主元”。PCA的目标就是找到这样的“主元”,最大程度的去除冗余和噪音的干扰。

Robust PCA

与经典PCA一样,Robust PCA(鲁棒主成分分析)本质上也是寻找数据在低维空间上的最佳投影问题。当观测数据较大时,PCA无法给出理想的结果,而Robust PCA能够从较大的且稀疏噪声污染的观测数据中恢复出本质上低秩的数据。Robust PCA考虑的是这样一个问题:一般的数据矩阵D包含结构信息,也包含噪声。那么可以将这个矩阵分解为两个矩阵相加:D = A + E,A是低秩的(由于内部有一定的结构信息造成各行或列间是线性相关的),E是稀疏的(含有噪声,则是稀疏的),则Robust PCA可以写成以下的优化问题:

$$\min _{A, E} \quad \text{rank}(A)+\lambda\|E\|_{0} \quad \text{s.t.} \quad A+E=D$$

由于rank和L0范数在优化上存在非凸和非光滑特性,所以一般将这个NP问题转换成求解一个松弛的凸优化问题:

$$\min _{A, E}\|A\|_{*}+\lambda\|E\|_{1,1} \quad \text {s.t.} \quad A+E=D$$

Robust PCA主要用于解决以下特征定义的问题:

  • 高纬度。数据集纬度高,数据间相互交织,人工检测基本不可能。
  • 最低假阳性。作为异常检测问题,我们不希望有过多的假阳性报警来干扰监控人员。
  • 周期性。每小时/每天/每周/每月这样的周期性数据如果不妥善处理,某些周期性的行为可能误报为异常。实际数据中,每天固定时段的峰值数据相对于大部分采样点都可能被判定为异常,但实际为周期性正常现象。
  • 数据并不是均匀分布的。像Netflix在两年中实现了高增长,算法需要足够健壮来处理非均匀分布的数据集(增长性数据是一个普遍现象,如长期来看的股市指数等)。

对于低秩数据观测矩阵D,假如D受到随机(稀疏)噪声的影响,则D的低秩性就会破坏,使D变成满秩的。所以就需要将D分解成包含其真实结构的低秩矩阵A和稀疏噪声矩阵E之和。找到了低秩矩阵,实际上就找到了数据的本质低维空间,那么Robust PCA的Robust在哪呢?因为PCA前提假设的数据的噪声是高斯的,对于大的噪声或者严重的离群点,PCA会被它影响,导致其无法正常工作。而Robust PCA则不存在这个假设(Robust PCA假设噪声是稀疏的,而不管噪声的强弱)。

Surus的使用

1、下载源码,进入Surus的主目录进行编译,执行命令mvn clean package。命令执行成功之后会在Surus根目录中出现一个target文件夹,进入target文件夹中会有一个surus-xxx.jar的jar包。

3、将surus-xxx.jar放在pig/hive的lib目录中,并且将surus-xxx.jar导入到运行环境中。例如,在pig脚本中将surus-xxx.jar注册到运行环境中,代码为:REGISTER surus-xxx.jar

参考链接:

相关 [netflix 异常检测 工具] 推荐:

Netflix异常检测工具Surus初探

- - 标点符
Surus是NetFlix开源的UDFs,是基于pig和hive的数据分析工具. Surus中的功能能够解决多种多样的问题,例如评分预测模型、异常检测与模式匹配等. 目前开源的UDF功能主要包括两个,包括ScorePMML和Robust Anomaly Detection (RAD). 预测模型的应用随处可见,然而这些应用都不相同,唯独相同的是模型的创建和部署是相同的.

技术 in Netflix

- - 后端技术杂谈 | 飒然Hang
综合市面上的公开资料总结了Netflix在技术上面的一些实践和创新,从中能够得到不少启发和提示.

异常检测机制

- - 奇虎360-addops
传统的异常检测系统通过设置一个固定的阈值来保证监控项处于正常水平,一旦超过设定的阈值,就会触发报警来提醒人们的注意. 静态阈值法适用于在一定范围内波动的监控项,比如磁盘使用率,CPU使用率等,但是如果遇到网络流量这种不具有明显上限,波动比较剧烈的情况,单纯利用静态阈值法如果设置的阈值比较小,会出现很多误报的情况,增加人工成本;而如果将阈值设置的比较大,又会出现漏报的情况.

[原]异常检测--综述

- - 工作笔记
异常点检测,有时也叫离群点检测,英文一般叫做Novelty Detection或者Outlier Detection,这里就对异常点检测算法做一个总结. 1. 异常点检测算法使用场景.     什么时候我们需要异常点检测算法呢. 一是在做特征工程的时候需要对异常的数据做过滤,防止对归一化等处理的结果产生影响.

异常检测之时间序列的异常检测

- -
其实之前介绍过3倍方差,只是,这里的3倍方差讲的是在时间序列异常检测中的应用. 一个很直接的异常判定思路是,拿最新3个数据点的平均值(tail_avg方法)和整个序列比较,看是否偏离历史总体平均水平太多,如果偏离太多,就报警. 和上述算法基本一致,只是比较对象不是整个序列,而是开始一个小时(其实这种这种思想可以推广,只要是时间序列刚开始的一段时间即可)的以内的数据,求出这段时间的均值和标准差和尾部数据(新产生的数据)用三本方差的方法比较即可.

使用sklearn进行异常检测

- - 标点符
sklearn提供了一些机器学习方法,可用于奇异(Novelty)点或异常(Outlier)点检测,包括OneClassSVM、Isolation Forest、Local Outlier Factor (LOF) 等. 其中OneClassSVM可用于Novelty Detection,而后两者可用于Outlier Detection.

聊聊 API Gateway 和 Netflix Zuul

- - ScienJus's Blog
最近参与了公司 API Gateway 的搭建工作,技术选型是 Netflix Zuul,主要聊一聊其中的一些心得和体会. 本文主要是介绍使用 Zuul 且在不强制使用其他 Neflix OSS 组件时,如何搭建生产环境的 Gateway,以及能使用 Gateway 做哪些事. 不打算介绍任何关于如何快速搭建 Zuul,或是一些轻易集成 Eureka 之类的的方法,这些在官方文档上已经介绍的很明确了.

时间序列异常检测算法梳理

- - 标点符
时间序列的异常检测问题通常表示为相对于某些标准信号或常见信号的离群点. 虽然有很多的异常类型,但是我们只关注业务角度中最重要的类型,比如意外的峰值、下降、趋势变化以及等级转换(level shifts). 革新性异常:innovational outlier (IO),造成离群点的干扰不仅作用于$X_T$,而且影响T时刻以后序列的所有观察值.

Netflix开源数据流管理器Suro

- - IT经理网
Netflix近日开源了一个叫做Suro的工具,可以收集来自多个应用服务器的事件数据,并实时定向发送到目标数据平台如Hadoop和Elasticsearch. Netfix的这项创新有望成为大数据主流技术. Netflix用Suro进行数据源到目标主机的实时导向,Suro不但在Netflix的数据管道中扮演关键角色,而且也是脱胎大型互联网公司的众多开源数据分析工具中的佼佼者.

Netflix的网站优化经验

- - 程序师
Netflix团队首先要做的一件事是改进他们的整体前端架构. 改版前的netflix.com网站对于服务端生成html标记与客户端的增强这两个过程进行了严格的分离,采用这一设计的主要原因在于前后端所使用的编程语言不同. 服务端主要使用Java的技术栈以生成基本的html页面,而在浏览器端的工作则主要是通过jQuery等JavaScript库的使用为服务端生成的html添加一些客户端的行为.