使用Hotelling T ^ 2进行异常检测

时间:2019-07-26 08:59:50

标签: python-3.x anomaly-detection hypothesis-test mahalanobis

我有数字多元数据,其中n >> k,其中n是记录数和k变量。我需要从Python中的这些数据中找到异常记录。

我正在使用马哈拉诺比斯距离和Hotelling T平方来解决此问题。基本上,我实现了以下公式:

enter image description here

其中t2是:

enter image description here

t2方程与马哈拉诺比斯距离相似,所以我使用了scipy的内置距离函数,该函数需要此量的square-root,因此在这里进行平方。以下是代码:

T2 = (n-k)/((n-1)*k) * (distance.mahalanobis(data_list, pd_data_mean, S)**2)
p_f = 1 - stats.f.cdf(T2,k,n-k)

S是协方差矩阵的逆矩阵,pd_data_mean是每个变量的均值向量,data_list是需要评分的单个记录。我正在使用F分布来获取p值。

我有两个问题:

  1. 如果有任何现代的替代(更好)方法,我可能会尝试以获得更好的结果。
  2. 如果Python(或R)中有一种方法可以验证我的方法(实现)是否正确。理想情况下,我很想拥有一个可以获取完整数据集和该数据集中记录并返回Hotelling T-squared值的API。

0 个答案:

没有答案