监控系统和网络入侵Python流式数据异常检测

流式处理方法可以有效地处理实际应用程序的有限内存和处理时间要求。这些方法只存储和处理一个实例或最近实例的一个小窗口。近年来,已经为异常检测和流数据开发了各种免费和开源软件 (FOSS)。然而,这些软件包要么缺乏对异常检测的关注,要么是为批量数据而设计的。我们将现有框架分类为 (i) 流框架和 (ii) 异常检测框架。流式框架的重点不仅在于异常检测,还在于流数据上的其他机器学习任务,例如分类和回归。因此,由于需要同时为其他任务维护不同的方法,它们的专用流异常检测方法数量有限。我们特别专注于流异常检测并引入了一个综合框架,因为这些方法具有高速和有限内存的性质,可以很容易地适应现实生活中的应用程序

我们在 Python 中引入了流式异常检测框架,提供专为单变量和多变量数据设计的模型。 此外,人们可以通过此方法在有监督、半监督和无监督的环境中进行实验。此方法包含流模拟器、评估器、预处理器、统计跟踪器、后处理器、概率校准器等。

示例:使用 Python 测试流处理

security = SecurityOptions(CERTIFICATE_PATH, USERNAME, PASSWORD)
client = StreamingClient(BROKER_ADDRESS, security)

input_topic = client.open_input_topic(INPUT_TOPIC_ID, "example-consumer-group")
output_topic = client.open_output_topic(TOPIC_ID)

def read_stream(new_stream: StreamReader):
stream_writer = output_topic.create_stream()
buffer = new_stream.parameters.create_buffer()
buffer.time_span_in_milliseconds = 100

def on_pandas_frame_handler (df: pandas.DataFrame):
output_df = pandas.DataFrame()
output_df["time"] = df["time"]
output_df["result"] = df.apply(lambda row: "True" if row.speed > 100 else "False", axis=1)
stream_writer.parameters.write(output_df)

buffer.on_read_pandas += on_pandas_frame_handler

input_topic.on_stream_received += read_stream
input_topic.start_reading()

数据流异常

流式异常检测模型 M \mathcal{M} M 接收数据流 D = { ( x t , y t ) ∣ t = 1 , 2 , … } \mathcal{D}=\left\{\left(\boldsymbol{x}_{t}, y_{t}\right) \mid t=1,2, \ldots\right\} D={(xt,yt)t=1,2,},其中 x t ∈ R m \boldsymbol{x}_{t} \in \mathbb{R}^{m} xtRm 是输入维度为 m m m 的列向量, y t y_t yt 定义为:

y t = { 1 ,  如果  x t  异常  0 ,  否则  y_{t}= \begin{cases}1, & \text { 如果 } \boldsymbol{x}_{t} \text { 异常 } \\ 0, & \text { 否则 }\end{cases} yt={1,0, 如果 xt 异常  否则 

请注意,无监督的模型不需要 y t y_t yt。 在流动异常检测中,模型作为新实例 ( x t , y t ) \left(\boldsymbol{x}_{t}, y_{t}\right) (xt,yt) 接收数据,并且将实例存储在有限的时间和内存中,或直接训练自身,但与批处理模型不同,其可以在训练期间,使用有限数量的实例访问所有数据 D \mathcal{D} D

为了在我们的 API 中描述模型,我们为任何 n ∈ Z + n \in \mathbb{Z}^{+} nZ+ 定义 X = [ x 1 … x n ] \boldsymbol{X}=\left[\begin{array}{lll}\boldsymbol{x}_{1} & \ldots & \boldsymbol{x}_{n}\end{array}\right] X=[x1xn] y = [ y 1 ⋯ y n ] T \boldsymbol{y}=\left[\begin{array}{lll}y_{1} & \cdots & y_{n}\end{array}\right]^{T} y=[y1yn]T。 此方法中所有模型都扩展了提供以下接口的 BaseModel。

Python库使用

我们使用 numpy 包进行线性代数运算和数据结构,将 scikit-learn 用于实用程序和投影方法,用 scipy 进行优化和高效的线性代数运算,使用一个异常检测包,为批处理数据提供一组丰富的异常检测器,提供集成器和流隔离森林模型实现。

详情参阅 - 亚图跨际

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值