我想在磁盘自由空间数据上做异常或异常检测。示例数据集如下(我没有任何标签数据集):
date free_space (GB)
2019-05-15 09:00:00 102.65
2019-05-15 09:05:00 102.69
2019-05-15 09:10:00 103.11
2019-05-15 09:15:00 102.58
2019-05-15 09:20:00 102.55 我想检测磁盘空间的新值是否为异常值。有几种离群点分析方法(参考链接):
以上方法是更多的统计方法来检测离群点。有几种方法使用无监督机器学习算法来检测离群点(参考链接)。例如,
K-mean哪种方法适合于上述数据集?我应该实现无监督的机器学习算法还是统计方法?
发布于 2019-05-16 12:27:55
考虑到检测空闲空间数量异常变化的具体情况,我建议您使用随时间变化的变化,而不是原始的变化量。例如:
date free_space variation
2019-05-15 09:00:00 102.65 NA
2019-05-15 09:05:00 102.69 0.04
2019-05-15 09:10:00 103.11 0.42
2019-05-15 09:15:00 102.58 -0.53
2019-05-15 09:20:00 102.55 -0.03不管你用什么方法,变化都是一个比原始大小更相关的信息来检测异常变化。您也可以使用时间窗口,例如计算过去30分钟内的变化。
就我个人而言,我只想用一种启发式的方法来做这样的事情:如果变化的绝对值高于阈值,那么标记为离群值。阈值可以是磁盘大小的一个百分比,例如5%。
发布于 2019-05-16 13:55:58
如果使用R,可以通过计算Cook的距离来筛选异常值。
考虑下面的例子。一家假想的电信公司拥有关于其客户所消耗的数据量的信息(以mb为单位),并希望检测出比一般人群使用率高得多的客户。
# Compute Cooks Distance
dist <- cooks.distance(lm(usage ~ x1 + x2 + x3, data = trainset))
dist<-data.frame(dist)
s <- stdres(lm(usage ~ x1 + x2 + x3, data = trainset))
a <- cbind(trainset, dist, s)显示每个用户的距离(dist)及其使用情况。在这种情况下,Cook的距离为0.42远高于其他用户--表明该用户是一个异常值。

https://datascience.stackexchange.com/questions/52064
复制相似问题