首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >磁盘空间使用的离群点检测

磁盘空间使用的离群点检测
EN

Data Science用户
提问于 2019-05-16 10:57:08
回答 2查看 155关注 0票数 1

我想在磁盘自由空间数据上做异常或异常检测。示例数据集如下(我没有任何标签数据集):

代码语言:javascript
复制
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 

我想检测磁盘空间的新值是否为异常值。有几种离群点分析方法(参考链接):

  • 箱形图分析
  • 基于Z分数
  • 基于IQR的分析(这类似于方框图分析)

以上方法是更多的统计方法来检测离群点。有几种方法使用无监督机器学习算法来检测离群点(参考链接)。例如,

  • K-mean
  • 马尔可夫链
  • 隔离林等。

哪种方法适合于上述数据集?我应该实现无监督的机器学习算法还是统计方法?

EN

回答 2

Data Science用户

发布于 2019-05-16 12:27:55

考虑到检测空闲空间数量异常变化的具体情况,我建议您使用随时间变化的变化,而不是原始的变化量。例如:

代码语言:javascript
复制
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%。

票数 1
EN

Data Science用户

发布于 2019-05-16 13:55:58

如果使用R,可以通过计算Cook的距离来筛选异常值。

考虑下面的例子。一家假想的电信公司拥有关于其客户所消耗的数据量的信息(以mb为单位),并希望检测出比一般人群使用率高得多的客户。

代码语言:javascript
复制
# 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远高于其他用户--表明该用户是一个异常值。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/52064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档