什么是 TimeSeries 关联性分析(Correlation Analysis)
-
如果数据 A 上涨时,数据 B 上涨(同样适应于下跌的情况)则说明这两组数据有关联性,表示为正向关联。
-
如果数据 A 上涨时,数据 B 下跌则说明这两组数据有关联性,表示为反向关联。
-
关联程度取决于两组数据间的变化幅度。
为什么要做关联性分析
包括但不限于:
-
使用聚类算法定位性能瓶颈。
-
结合数据可视化,进行信息挖掘。
-
根因分析。
实践中比较实用的用法是分析某个指标的变动会引起哪类其他指标的变动。比如可以回答如下问题:
-
Memory Cached 与 Memory Free 间是什么关系联程度如何/p>
IO WriteBack 频繁程度与哪种指标有关联/p>
在设计系统资源调度策略与参数配置上,这类信息有助于系统最优设计。当优化某个关键指标时,需要查看与其关联的其他指标以确保不会出现指标失衡情况(改善一个指标时导致另一个指标的恶化)。通过此方法还可以分析出设备的硬件配置在运行用户负载程序时它的主要瓶颈是什么,针对不同资源瓶颈,配置不同的资源调度参数以实现能效的最优化。
常用算法之 – Pearson Correlation Coefficient
公式 – 来自 Wikipedia
Python Code: Scipy.stats.spearmanr()
取值范围: [-1.0 ~ 1.0]
使用 Spearman 时的注意点如下:
-
函数结果的绝对值越接近 1.0 则关联性越强,越趋近于 0.0 则表明没有关联性。
-
两组数据间需要有独立性。
-
样本间不止线性关系,满足单调关系时也适用。
-
不过从实际表现来看,Pearson 与 Spearman 不需要严格的遵从关系函数(线性,单调)。
函数结果的绝对值越接近 1.0 则关联性越强,越趋近于 0.0 则表明没有关联性。
抗异常值的干扰能力较强,这也意味着肉眼上看不是很明显的关联关系使用 NCC 计算时得分是比较高的。
NCC 适合量化两组数据间的数值上的浮动程度(波动)。
-
NCC 较高但 Pearson 与 Spearman 给出的低分来看,这两个指标在这段时间内属于间接关联。
-
从 free 与 cached 回收原理上看,两个虽然有关系但并不是直接关系。这个依赖具体的 PageCache 与 Memory Reclaim 算法。
Memory Buffers 与 Memory Cached 间的对比
-
Pearson 与 Spearman 给出的分数来看,两个指标属于间接关系。
-
从原理上看低内存有可能会引起前台 UX 应用的卡顿,但这两者间并不具备直接关系。
这里只给出了某个设备在某个时段的信息,而且还只是某个特定 UX 应用的关联性分析。在实际中,不同 UX 应用针对不同的 metric 间的关联性是不同的。比如有些应用是 Memory sensitive,而有些是 IO sensitive。只有经过大量数据(不同时段)的计算后才能给出较为准确的结论。
其他常见的关联性分析算法,根据特性适用于不同领域。
-
Apriori/FP Growth(Tree): 经典的超市关联分析中用到的算法。在多个异常指标的聚类时,也可以用此算法做初步筛查。
-
Canonical Correlation Analysis
-
Maximum Information Coeffcient
-
Kendall Correlation Coefficient
-
Euclidean distance
-
Mutual Information
写在最后
-
这个世界很复杂,无法用一个指标或者量化方法理解所有现象。
-
使用指标时应根据现实数据情况采用不同的量化指标。
-
先采用数据可视化的方式观察下数据间的大致关系,之后根据其结果选择合适的量化指标。
-
数据可视化工具中可以同时展示关联性指标的计算结果,有助于数据解读。
Reference
-
https://en.wikipedia.org/wiki/Pearson_correlation_coefficient
-
https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient
-
https://anomaly.io/understand-auto-cross-correlation-normalized-shift/
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!