saw*_*dis 5 events design-patterns frequency outliers
在Web应用程序中,每次事件发生时都会触发一个触发器.我想检测"暴力"频率峰值,这可能转化为异常行为.
我可以想到实现这两点的两种天真的方法:
固定阈值 - "如果一分钟内发生超过500个事件,那可能是错误的".除非应用程序可以定期调整阈值,否则此方法无法处理平滑的阈值违规或稳定增加的流量.
与窗口相关的启发式 - 将窗口划分为N个相等(?)的间隔.当N> 0时,计算[now-(N*interval_length),now]中发生的事件的频率.将其保存在列表中.将N减少1.重复.检测列表异常值.如果有一个异常值大于[now-window_length,现在]的平均频率,那可能是错误的."
我想知道是否存在针对此问题的通用/标准解决方案,或者您是否可以考虑任何更有效或更优雅的解决方案.
先感谢您.
编辑 - 另一个建议
我的一位朋友建议用Holt-Winters预测异常行为检测.您可以在以下链接中找到有关此方法的更多信息:
http://www.hpl.hp.com/news/events/csc/2005/jake_slides.pdf
http://www.usenix.org/events/lisa00/full_papers/brutlag/brutlag_html/
我不是专家。我会做什么:
\n\n假设您只保留最后一个n结果,并且x_n是最后一个样本(与前一个事件的时间差)。
\xce\xb1_n x_n + \xce\xb1_{n-1}/2 x_{n-1} + ... + \xce\xb1_{1} 2^{-n} x_1 = T\nRun Code Online (Sandbox Code Playgroud)\n\n如果 的差异T - T_{previous}(T_{previous}之前的值在哪里T)超过限制,请执行某些操作。
如果你的值x_i是二进制的,如果速度是一个问题的话,你可以使用shift和or运算来实现很好的技巧。
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |