KDD2019,时序数据,异常检测,已部署于微软、Windows、Bing、Office365等。
目标:
以无监督的方式开发一种更有竞争力的数据异常检测方法,同时兼顾准确性、效率和通用性。
贡献:
1.将视觉显著性检测领域的谱残差模性SR用到异常检测应用中。
2.SR与CNN相结合,无监督:SR,有监督:CNN相结合。
模型:
SR算法:
x只是输入的序列数据,一般是滑动窗口数据。
1.通过傅里叶变换之后计算振幅谱A(f)。
2.计算相位谱P(f)(复数x+i*y的相位是arctan(y/x))。
3.对振幅谱做Log得到L(f)。
4.AL(f)是L(f)进行均值滤波之后的结果。
5.R(f)就是Spectral Residual谱。
6.再进行一个傅里叶反变换就可以得到显著区域。
下图是一个原数据和经过转换之后的对比,效果很好。
SR+CNN模型
SR是手动设置阈值,比较麻烦,可以训练一个CNN分类器。
将CNN应用于SR模型的输出,CNN负责学习一个判别规则代替原来的SR所采用的单一阈值。
CNN部分结构很简单,两层的一维卷积,两层全连接层,最后输出一个概率,使用Cross entropy作为loss函数,SGD作为优化方法。
数据:
使用了三个数据集的数据,两个是公开的,一个是内部的。
- KPI竞赛数据集
这个是国内一个比赛的数据集,大部分的数据采集的频率都是一分钟,也有一部分是5分钟的。
- Yahoo数据集
一部分是合成的,一部分是来自真实环境的。采集的频率是一小时
- 微软内部数据集
序列多种多样,有收入曲线,活跃用户数曲线,页面浏览量曲线等等,是采用随机抽取部分的曲线进行验证的。然后数据是由用户或者编辑手工标注的。
总结:
论文首次把视觉中应用广泛的SR算法引入到了时间序列的异常检测中来,达到了非常好的效果,速度也非常快。
微软在Azure也开放了接口可以免费试用,有兴趣可以试试。