微软 AIOps:关联告警事件和时间序列的故障诊断方法
论文标题 | Correlating Events with Time Series for Incident Diagnosis 论文来源 | KDD 2014 论文链接 | https://dl.acm.org/doi/10.1145/2623330.2623374 源码链接 | 未公布 TL;DR 目前生产环境中的监控数据主要包括两种类型:指标的时间序列数据 (time series),例如 CPU 利用率指标,和事件序列数据 (events),例如 out of memory 时间,论文中提出一种事件和时间序列关联分析的方法来提升故障诊断的效率。主要考虑了事件序列与时间序列间三个方面的问题:事件和时间序列 ① 是否存在关联关系 ② 时间先后顺序 ③ 单调性影响。论文实验部分在仿真数据集和真实数据集中验证了算法的有效性。 Problem Statement 下图展示了事件与时间序列的关系,例如 CPU 密集型的程序会导致 CPU 使用率上升,但是磁盘密集型的程序将对 CPU 使用率没有什么影响,因此 CPU 密集型事件与 CPU 使用率上升事件间存在关联但是磁盘密集型的程序与 ...
Python YAML 配置文件
背景 程序中难以避免需要写配置文件来控制参数,本人之前在 Python 中使用参数的方法包括两种: 将参数写在 Python 文件 config.py 中,这样好处是可以直接导入这个 config.py 中的参数,但是通用性不太好; 命令行输入参数,使用 argsparse 或者 click 等模块,但是在大型项目中一般不会在命令行手动输入参数; 因此,需要一个统一的撰写配置文件规范而且配置文件较为通用且易读,有没有解决方案呢?答案是有的,目前介绍一种配置文件规范 YAML 语言。 YAML 简介 YAML 是专门用来写配置文件的语言,官方全称为“YAML Ain’t Markup Language”,实质上是一种通用的数据串行化格式,非常简洁和强大,很多软件都使用 YAML 作为配置文件,例如 Github Actions、K8s 等。 可以将 YAML 内容保存在具有任何扩展名的文件中:.yml,.yaml 或其他任何扩展名。建议优先使用.yaml而不是.yml,但是由于历史原因许多Windows程序员不使用具有三个以上字符的扩展名,因此选择使用.yml。 基本语法规则如下: ...
AGC:基于自适应图卷积的属性图聚类模型
论文标题 | Attributed Graph Clustering via Adaptive Graph Convolution 论文来源 | IJCAI 2019 论文链接 | https://arxiv.org/abs/1906.01210 源码链接 | https://github.com/karenlatong/AGC-master TL;DR 这篇论文针对属性图聚类问题提出了自适应的图卷积方法 AGC,主要想法是运用高阶图卷积来捕获图的全局簇结构特征,并且可以对不同的图来自适应地选择合适的阶数。实验部分在不同的基准网络数据集中验证了 AGC 的效果优于当前的 baseline。 Problem Formulation 给定无向图 G=(V,E,X)\mathcal{G}=(\mathcal{V}, \mathcal{E}, X)G=(V,E,X),其中 V,E\mathcal{V}, \mathcal{E}V,E 分别表示节点集合 {v1,v2,…,vn}\left\{v_{1}, v_{2}, \ldots, v_{n}\right\}{v1,v2,…,vn} 和 ...
社团检测 LFR 基准网络及其生成程序
背景 很早之前在 CSDN 上写的一篇文章社团检测领域的 LFR 基准网络及其生成程序,今天突然发现很多朋友留言说对「重叠社团的 LFR 基准网络生成程序」有较大的需求,就不再通过邮件一一进行发送,这篇博文统一附上下载方式并且介绍下社团检测领域中各种属性的 LFR 基准生成程序。 LFR 基准网络 首先是最简单的无向无权基准网络生产程序,之前已经写过一篇文章介绍,现在直接附过来。 以下是 Linux 下使用的版本,对于 Windows 下的同学可以参考博客 LFR 网络生成程序,没下载过也不知道能不能用。 下面介绍一下 LFR 生成程序的用法: 想要生成网络首先需要对配置文件 parameters.dat 进行修改: 123456789101112###############################################################################1000 # number of nodes15 # average degree50 # maximum degree2 # exponent for the deg ...
WWW 2021丨MicroRank:微服务环境下基于谱分析的延迟时间故障定位系统
论文标题 | MicroRank: End-to-End Latency Issue Localization with Extended Spectrum Analysis in Microservice Environments 论文来源 | WWW 2021 论文链接 | https://www2021.thewebconf.org/program/papers-program/links/ 源码链接 | 未公布 TL;DR 论文中针对微服务 trace 调用链延迟故障问题提出了一种新颖的定位系统 MicroRank,同时考虑分析正常 trace 和异常 trace ,但基于 PageRank 方法对不同的 trace 计算出不同的权重以此来进行根因定位。实验在开源的系统数据集中证明了 MicroRank 方法的召回率比当前 baselines 高出 6% - 22%,尤其是在于多个故障同时发生的情况下。 Problem Definition Trace:对于微服务架构下 trace 数据的结构如下,包含多个 spans。 Coverage tree:基于 spans ...
技术杂谈丨Python 代码内存诊断工具 memory_profiler
背景 近日利用 Python 脚本处理大量的数据时,由于每天定时自动调度执行,发现一段时间后机器的内存一直不会被自动释放导致程序被 killed,所以希望有一个工具对自己的代码进行内存诊断。 Python 自带内存管理机制,例如 with ··· as ··· 命令等,不需自己管理内存,但有些情况下可能导致内存泄漏或者OOM问题。 📢 当然也可以通过其它命令手动释放内存,例如 通过 del 操作删除临时变量,但是该操作不会立即释放内存,只是将引用计数减一。 通过 gc.collect() 暴力回收内存,但是会导致程序暂停来回收内存从而严重影响性能。 因此需要一个工具来监控自己的代码,可以了解代码中内存如何分配?是否存在无法释放的内存,或者多少内存会很快被释放?进程在高峰时占用多少内存,在低谷时占用多少内存? 内存查看工具 在程序执行时我们可以通过 top 或者 htop 命令来查看进程的内存使用情况 🧐 此处推荐 htop 命令对可视化更加友好,Mac 通过 brew install htop 进行安装,下面是两个可视化的对比效果。 📢 top 命令只能统计当前整个进 ...
Python 可交互的网络图可视化工具
背景 近日有个需求是向用户更好地展示网络图及其属性,之前使用的 networkx 库可以处理图数据但画出来的图是静态的且不具备良好的交互性,因此想找一个交互性好的网络图绘制工具。 目前了解的基于 Python 语言绘制动态图的库包括但不局限于以下几种: Ployly PyEcharts AnyChart PyVis 其它绘图软件 Gephi 和 Pajek 提供非常好的绘图效果但不支持源码操作,本文注重 Python 源码绘图工具。 以下仅体验这几种不同工具的绘制效果来进行比较选择,因此不附加任何源码,如需请参考提供的官方链接。 更新线: bqplot 参考另一篇博客:Python 完美交互的网络图可视化工具库 Jaal 前端提供一些图属性操作,参考源码:https://github.com/imohitmayank/jaal Plotly 著名的 python 交互式图表可视化库,但其绘制 network graph 图局限性较大,以下参考官方教程示例。 https://plotly.com/python/network-graphs/# 简单的图绘制结果如下,节点可以 ...
Zotero 文献管理工具教程
Zotero Zotero 特点: 开源——插件改变世界 300MB 云空间或 WebDAV——配合坚果云实现多端同步 支持 RSS 订阅——足不出户查看顶刊更新 按项目管理的方式(非文件)——你可以添加你想添加的附件 大量的 Translator——绝大部分的文献网站支持插件一键下载 移动端牛逼——第三方安卓/iOS App,iOS 官方 App 正在内测 下载安装: 电脑端: https://www.zotero.org/ 安卓端:Zoo for Zotero iOS 端:Papership(第三方)、Zotero(官方内测)Zotero 官方内测申请地址:https://www.zotero.org/iosbeta 同步 可以使用自带云空间同步或者通过坚果云配置WebDAV 自带同步 用户账户登录即可,免费 300 M 存储。目前可以满足个人需求。 WebDAV 对于 Zotero 的设置流程, 参考坚果云官方流程:https://help.jianguoyun.com/?p=4190 目前暂且用不上。 插件支持 插件下载地址:https://www.zo ...
RRCF:基于随机割森林的数据流异常检测模型
论文标题 | Robust Random Cut Forest Based Anomaly Detection On Streams 论文来源 | ICML 2016 论文链接 | http://proceedings.mlr.press/v48/guha16.pdf 源码链接 | python: https://github.com/kLabUM/rrcf | java: https://github.com/aws/random-cut-forest-by-aws TL;DR 论文中提出一种基于随机割森林的数据流异常检测算法 RRCF (Robust Random Cut Forest),主要是对于 iForest 模型进行优化改进,可以对输入数据流进行有效地表示和异常检测。实验中证明 RRCF 比 IForest 更加高效和准确。此外,RRCF 模型已经被 AWS 作为一项异常检测服务对外开源,说明了其在实际环境中的可用性。👍 Algorithm/Model 背景 论文中首先就引入异常检测的两个经典问题: 如何定义异常? 采用何种数据结构在动态流式数据中高效地检测异常 ...
iForest 异常检测算法及其 Python 实现
参考论文来源:Isolation-Based Anomaly Detection 背景 “An outlier is an observation which deviates so much from other observations as to arouse suspicions that it was generated by a different mechanism.” — D. M. Hawkins, Identification of Outliers, Chapman and Hall, 1980. 异常检测 (anomaly detection),或者又被称为“离群点检测” (outlier detection),是机器学习研究领域中跟现实紧密联系、有广泛应用需求的一类问题。但是,什么是异常,并没有标准答案,通常因具体应用场景而异。如果要给一个比较通用的定义,很多文献通常会引用 Hawkins 在文章开头那段话。很多后来者的说法,跟这个定义大同小异。这些定义虽然笼统,但其实暗含了认定“异常”的两个标准或者说假设: 异常数据跟样本中大多数数据不太一样。 异常 ...
SNAPSKETCH:基于图表示学习的图流异常检测模型
论文标题 | SNAPSKETCH: Graph Representation Approach for Intrusion Detection in a Streaming Graph 论文来源 | MLG 2020 论文链接 | http://www.mlgworkshop.org/2020/papers/MLG2020_paper_1.pdf 源码链接 | https://github.com/rpaudel42/SnapSketch TL;DR 论文中提出一种无监督的图表示学习方法 SNAPSKETCH 用于图流的异常检测问题。主要想法是基于随机游走和 Sketching 技术来生成固定大小的图向量表示,然后基于编码后的向量使用 RRCF 进行异常检测,可以达到实时异常检测效果。实验中验证本文中的方法优于其它 baselines,包括 SpotLight 和 StreamSpot。 Problem Definition 给定一个图流 Gs={G1,G2,...,Gt,...}G_s = \{G_1, G_2,...,G_t,...\}Gs={G1,G2,...,Gt, ...
文档撰写工具 vuepress 及其配置流程
之前一直使用 Hexo 撰写博客文章体验感非常好,参考 https://dreamhomes.top/,但是如果作为技术文档或者书籍由于个人选择的 Hexo 主题过于花哨不太符合学术作风 😢 ,因此想选择一个风格偏向于简单的文档 📚 或者书籍 📖 撰写工具。 vuepress 选择理由 之前略微使用过 Gitbook 体验感不错,因此第一想法是使用 gitbook 来撰写学术性文档,但是现在已经商业化了,遂需寻找其它替代品。 目前市面上主要的静态文档撰写工具包括: gitbook vuepress docsify hexo 当然还有其它的就不再列举,Hexo 已经用来写日常博客因此也不选择。 由于没有亲身体验总结下其它博主使用感受。下面列出每个工具的优缺点进行比较: 配置 docsify >> gitbook = vuepress 由于docsify不需要编译,他的配置比另外两个简单很多,而另外两个从文档而言配置也不复杂。 阅读体验 gitbook > docsify = vuepress 这里不讨论UI,只说阅读体验,gitbook可以调节背景 ...
C&S:标签传播思想与浅层模型相结合性能即可超过图神经网络
论文标题 | Combining Label Propagation and Simple Models Out-performs Graph Neural Networks 论文来源 | ICLR 2021 论文链接 | https://arxiv.org/abs/2010.13993 源码链接 | https://github.com/CUAI/CorrectAndSmooth TL;DR 图神经网络 (GNNs) 在图表示学习领域盛极一时,但是对为什么 GNNs 有效或者其对不同任务性能提升的必然性知之甚少。这篇文章通过大量的直推式实验(节点分类任务)证明,通过浅层模型和两个基于标签传播的后处理步骤即可达到当前 GNNs 模型的性能 🤭,后处理步骤包括两步 (i) 误差修正 (error correlation):利用训练数据中的残差来纠正测试数据中的误差 (ii) 预测修正 (prediction correlation):平滑测试数据中的预测结果,作者将其提出的整个框架总称为 C&S(correct and Smooth),并且在实验中证明 C&S 不仅准 ...
TGNs:动态图中高效通用的时序图卷积网络框架
论文标题 | Temporal Graph Networks for Deep Learning on Dynamic Graphs 论文来源 | ICML 2020 论文链接 | https://arxiv.org/abs/2006.10637 源码链接 | https://github.com/twitter-research/tgn TL;DR 目前大多数图神经网络都不能对动态图(即节点特征和边特征随着时间而变化的图)进行表征,论文中结合记忆模块和图卷积操作提出了一种通用高效的动态图模型,并且证明前期研究中很多的动态图模型仅是论文中提出框架的一种特例。在实验部分验证了 TGNs 在直推式学习和归纳式学习任务中达到了 state-of-the-art 性能。 Algorithm/Model Background 📢 静态图卷积不再赘述,如果缺少背景知识的可以参考博主其它文章。 主流的动态图模型可以分为两种: 离散时间的动态图:根据固定时间间隔采集的图快照; 连续时间的动态图:随着时间事件演变的图,事件包括边增加或者消失,节点增加或者消失,节点和边特征变化等。 这两种类型的动 ...
AGCN:自适应图大小的图卷积网络模型
论文标题 | Adaptive Graph Convolutional Neural Networks 论文来源 | AAAI 2018 论文链接 | https://arxiv.org/abs/1801.03226 源码链接 | https://github.com/uta-smile/Adaptive-Graph-Convolutional-Network TL;DR 目前大部分 GCN 模型都是在固定大小的图结构上进行卷积操作,但现实中图的大小和结构都是不同的,因此这篇论文中提出一个通用且灵活的图卷积网络 AGCN 来解决存在的局限性。在训练过程中学习对于任意输入的图学习到一个任务驱动的自适应图表示,并且引入距离度量学习来更有效地学习图表示。实验过程中在九个图数据集中验证了本文提出的模型具有较高的收敛性和预测准确率。 Algorithm/Model 论文中提出的 AGCN 模型架构如下图所示: 从上面的模型图结构可知,AGCN 主要创新是使用 SGC_LL 卷积层来对不同大小的图进行卷积,当然模型中还有其他结构包括 Bilateral Filtering 、Graph Gat ...