数据传输中的异常检测

时间:2017-06-28 13:09:45

标签: machine-learning data-science anomaly-detection

我正在研究Anomaly检测模型,需要帮助识别数据传输中的异常。示例:如果员工使用VPN连接,并且我们有以下数据用法:

 EMPID  date       Bytes_sent  Bytes recieved
 A123  Timestamp    222222     3333333
 A123  Timestamp    444444     6666666
 A123  Timestamp    99999999   88888888888

我想将第3行标记为异常,因为员工已在一个范围内发送或接收,然后突然跳转。我想跟踪最近几天发送和接收的字节数 - 这意味着他的行为在最近几天内发生了变化。

1 个答案:

答案 0 :(得分:1)

一种方法是为每个观察保留额外的指标:
对于Bytes_recieved:

  • 观察是否是异常值的指标。这将会 决定观察到的Bytes_recieved是否在 最后观察到的平均值加上减去最后观察到的SD,如上所述 下方。
  • 过去N次非偏离事件的平均值。
  • 最后N个非偏离事件的标准偏差。

N将基于您要考虑的观察量。你提到最近几天,所以你可以设置N = "recent" * average events per day

例如:

 EMPID date      Bytes_sent  Bytes_recieved  br-avg-last-N  br-sd-last-N  br-Outlier
 A123  Timestamp 222222      3333333         3333333        2357022.368  FALSE
 A123  Timestamp 444444      6666666         4999999.5      2356922.368  FALSE
 A123  Timestamp 99999999    88888888888     N/A            N/A          TRUE

Bytes_recieved第三行的异常值计算为观察到的Bytes_recieved是否超出以下定义的范围:

(last Bytes_recieved Average-Last-10) - 2*(last Bytes_recieved SD-Last-N) And (last Bytes_recieved Average-Last-10) + 2*(last Bytes_recieved SD-Last-N)
4999999.5 + 2 * 2356922.368 = 9713844.236; 9,713,844.236 < 88,888,888,888 -> TRUE

2标准差将给你96%的异常值,即极端观察你只能看到~4%的时间。您可以根据需要进行修改。

您可以对Bytes_sent执行相同操作,并为异常值决策设置“Or”条件,或者计算距离多维运行平均值的距离(此处X为Bytes_sent,Y为Bytes_recieved),并根据极端距离标记异常值。 (您需要在每次观察时跟踪正在运行的SD或其他扩散指标) 通过这种方式,您还可以轻松添加维度:时间异常,Bytes_sent和Bytes_recieved之间的极端差异等。