我正在研究Anomaly检测模型,需要帮助识别数据传输中的异常。示例:如果员工使用VPN连接,并且我们有以下数据用法:
EMPID date Bytes_sent Bytes recieved
A123 Timestamp 222222 3333333
A123 Timestamp 444444 6666666
A123 Timestamp 99999999 88888888888
我想将第3行标记为异常,因为员工已在一个范围内发送或接收,然后突然跳转。我想跟踪最近几天发送和接收的字节数 - 这意味着他的行为在最近几天内发生了变化。
答案 0 :(得分:1)
一种方法是为每个观察保留额外的指标:
对于Bytes_recieved:
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之间的极端差异等。