logparser

整理翻译自logparser

SLCT

SLCT是一种简单的日志文件聚类工具,它反映的是某种模式的日志出现了足够多的次数,从而进行聚类。SLCT可以对已有的正常日志进行建模,然后对那些新出现的不属于正常模式的日志进行异常诊断。

单词表的构建

SLCT会扫描一遍日志并且统计单词的出现频次,同时也考虑单词的位置信息。例如"send"出现在log日志里的第一个位置、第二个位置是当作不同进行处理的,从而提取出高频词。

查看更多

时间循环一致性学习

Temporal Cycle-Consistency Learning(CVPR'19)

本文介绍的是一种自监督学习的方法,通过TCC的方法训练网络,然后通过不同视频的循环一致性损失找到不同视频帧之间的一致性,然后使用最近邻方法进行视频对齐。

循环一致表示学习

主要贡献是采用了自监督的学习方法,学习了一个嵌入空间(embedding space)从而使得两个相似的视频序列可以才时间上进行对齐。另一种解释就是说,在嵌入式空间里将两个序列上最短距离的点一对一连接后的数量最大化。为了实现这样的目标,本文通过将两个序列中循环一致性的帧的数量最大化,如下图所示:

查看更多

时间注意力模型下的时序预测

Multi-Horizon Time Series Forecasting with Temporal Attention Learning(KDD' 19)

文章阐述了历史信息中的时间模式对长时间序列的预测是至关重要的。传统方法中手动设置时间依赖从而探索相关的时序模式是很不靠谱的,本文用DNN的方法提出了端到端的多视界模型来进行预测,从时间的注意力上来更好地捕获历史数据的潜在模式,还提出了一种多模型的融合机制可以结合不同历史数据的特征来更好地预测。

multi-horizon代表的意思就是在未来时间内进行多步预测。这可以用来进行资源规划的预测以及决策。这对LSTM提出了挑战,因为当前的输入源于历史信息和未来动态输入的变量,我们的可以精确预测是因为,可以通过对潜在模型的适当表示以及历史数据时间模式的参照。

方法

基础编码-解码结构

查看更多

异常检测(MSRA,KDD'19)

Time-Series Anomaly Detection Service at Microsoft

Spectral Residual(SR) 以及 Convolutional Neural Network(CRR) 方法来进行时序异常检测。

挑战: 1. 缺少标签:系统往往需要同时处理千百万的数据量,不能手动添加标签。时序数据分布也是不断变化的,需要识别从前没有过的异常模式,也就是说有监督的模型是不可以的。 2. 普适性:需要兼容多种数据模式。 3. 有效性:监控系统往往要实时处理很多的数据,尤其是分钟级的数据,异常检测系统需要在有限时间内进行处理。

CNN是一种带标签的有监督检测,SR则是一个无监督的模型,二者结合。


查看更多

孤立森林(Isolation Forest)

iForest

无参数无监督方法。

假设用一个随机超平面切割数据空间,切一次产生两个子空间,依次循环下去直到每个子空间只有一个数据点为止。直观的说那些密度很高的簇需要被切割很多次才会停止,但是那些密度较低的点很容易较早地停在一个子空间里

实现步骤

切割是随机的因此需要集成方法得到一个收敛值,即反复从头开始切然后平均每次的结果。

查看更多

多项式插值

Polynominal Interpolation

多项式插值,给定一组数据,寻找一个恰好通过这些数据点的多项式。

代码

import numpy as np
from sklearn.linear_model import Ridge
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
from time_series_detector.common.tsd_common import *


class PolynomialInterpolation(object):
"""
In statistics, polynomial regression is a form of regression analysis in which the relationship
between the independent variable x and the dependent variable y is modelled as an nth degree polynomial in x.
WIKIPEDIA: https://en.wikipedia.org/wiki/Polynomial_regression
"""

def __init__(self, threshold=0.15, degree=4):
"""
:param threshold: The critical point of normal.
:param degree: Depth of iteration.
"""
self.degree = degree
self.threshold = threshold

def predict(self, X, window=DEFAULT_WINDOW):
"""
Predict if a particular sample is an outlier or not.
:param X: the time series to detect of
:param type X: pandas.Series
:param window: the length of window
:param type window: int
:return: 1 denotes normal, 0 denotes abnormal
"""
x_train = list(range(0, 2 * window + 1)) + list(range(0, 2 * window + 1)) + list(range(0, window + 1))
x_train = np.array(x_train)
x_train = x_train[:, np.newaxis]
avg_value = np.mean(X[-(window + 1):])
if avg_value > 1:
y_train = X / avg_value
else:
y_train = X
model = make_pipeline(PolynomialFeatures(self.degree), Ridge())
model.fit(x_train, y_train)
if abs(y_train[-1] - model.predict(np.array(x_train[-1]).reshape(1, -1))) > self.threshold:
return 0
return 1

利用时序决策树进行DGA僵尸检测

DGA Bot Detection with Time Series Decision Trees

主要思路

  1. 标签模块依赖分类技术,该模块可以对训练模型生成有标签的数据,并对每一个已经检测到的僵尸网络提供一系列的感染IP
  2. 训练模块使用对生成的标签数据进行有监督的学习,对每一个僵尸网络家族都构造一个检测模型。利用典型的IP时间轮廓评估。
查看更多