《异常点检测》 - 第十章阅读记录 - 离散序列的异常点检测

20201006 -
本文主要作为《异常点检测》的第十章的内容记录,文章按照顺序的方式来进行记录,想到什么记录什么,暂时没有明确的条理。

1. 基础概念记录

1.1 离散数据的定义

离散数据与连续数据有所不同,离散数据在实际中主要有两种。

  • 基于时间的离散数据,例如用户操作序列,这种在时间上有一个递进的关系
  • 基于位置的离散数据,例如生物数据,这种在位置上有所区分

两种数据的主要区别就是在于他们不同位置的数据主要是按照是什么区分,是时间,还是位置。但本质上都是带有次序的字符序列。

1.2 离散数据的一个难点

在离散数据中,因为离散数据的每个元素一般都是取自某个集合,那么怎么定义这些元素的距离是一个问题。例如,生物基因中的序列,你无法简单的按照连续数值数据中的方式直接计算距离。

1.3 异常点的定义

在离散序列中,异常点的定义分为两种:

  • (Position outliers) :单个位置的元素与实际预测值有差别,这种方式与连续数据中基于预测的方式相同,这种被称为上下文异常;而这种方式,通常使用马尔可夫式方法(Markovian methods)比较适合。
  • (Combination outliers):多个连续位置的元素组合异常,这种被称为集体异常;在组合式异常中,通常整个序列都被视为异常。

在组合异常中,又分为多种方式:基于距离的,基于频率的,基于模型的(通过一个概率生成模型),基于转换的。但我觉得,其实这些方法也适用于前面的单个位置的异常。

同时,还是要注意,在前面的章节中,也提到,**异常指数(outlier score)**依然是适用的。

(这部分还可以在阅读整个章节后,具体阅读)

2. 单个位置的异常

在时序数据的异常检测中,通常采用预测+偏差检测的方式,在离散数据的异常检测中,同样是这样的方式,只不过预测模型的选用,当通过概率或者什么方式来推理出某个点出现的机率比较小的时候,这种方式就被预测为异常

对于数据的不同划分形式,这里书中给出了两种定义方式:半监督和无监督方式。

  • 半监督方式:基于训练数据集包含多个训练序列, D = T 1 , . . . T N D=T_1,...T_N D=T1,...TN和一条测试数据 V = a 1 , . . . , a n V=a_1,...,a_n V=a1,...,an,判断测试序列中是否某个位置是异常。
  • 无监督方式:给定一个长序列, V = a 1 , . . . , a n V=a_1,...,a_n V=a1,...,an,判断是否某个位置为异常。

本文中主要采用第一种定义方式来讨论,不过我比较好奇的是,第一种方式应该已经假定训练数据都是正常的吧(在文中p338部分做了解释,训练数据都是正常的)。
正常情况下,类似时序数据中的方式,都是通过历史数据来进行下一位置的预测,也就是说,为了预测 a i a_i ai,需要利用数据 a i − j , a i − j + 1 , . . . , a i − 1 a_{i-j},a_{i-j+1},...,a_{i-1} aij,aij+1,...,ai1,窗口大小就是 j j j。而对于基于位置的异常来说,可能两个方向的数据都需要。而这种预测方式所基于的假设就是短期记忆属性,意思就是前文所传递的:某个位置的取值由他前面窗口的数据所决定。而正式的数学定义如下:

短期记忆属性,对于一个序列, V = a 1 , . . . , a i , . . . a n V=a_1,...,a_i,...a_n V=a1,...,ai,...an,概率取值 P ( a i ∣ a 1 . . . a i − 1 ) P(a_i|a_1...a_i-1) P(aia1...ai1)完全可以利用一个短期窗口 P ( a i ∣ a i − k . . . a i 1 ) P(a_i|a_{i-k}...a_{i_1}) P(aiaik...ai1)的概率来决定。

其实上述概念,学过随机过程,基本上都能理解,这也是为了计算方便。**而另外一个比较重要的概念就是,对于不同的 j j j值,靠近预测值的历史数据的影响,必然是要大于远距离的历史数据的。通过这种方式,在实现了概率 P ( a n ∣ a n − k . . . a n − 1 P(a_n|a_{n-k}...a_{n-1} P(anank...an1的预测之后,如果这个位置的概率值比较小,或者直白点,在观测到某端序列 a n − k . . . a n − 1 a_{n-k}...a_{n-1} ank...an1之后, a n a_n an出现的概率比较小的话,那么就可以认定 a n a_n an是异常。
(感觉这个就跟之前看到的其他内容一样,就想是贝叶斯估计中的东西)。
而本小节中,将讨论两种形式的位置异常检测方法:基于规则的和基于马尔可夫式的。两种方式都是利用了短期记忆的属性,同时他们在某些条件上是等价的。(为什么相同,可能还是要具体来了解)

2.1 基于规则的检测方式

基于规则的方式主旨就是去从训练数据集中得到相应的概率 P ( a i ∣ a i − k . . . a i − 1 P(a_i|a_{i-k}...a_{i-1} P(aiaik...ai1,当其概率值比较大的时候,规则可以表达为,
a i − k . . . a i − 1 ⇒ a i a_{i-k}...a_{i-1}\Rightarrow a_i aik...ai1ai
一般有两种方式来进行规则的生成:1)直接对要测试的数据进行规则推导,2)在预处理阶段在训练数据中生成大量的规则。生成的规则的概率值,通常称为这条规则的置信度。
而对于训练数据的估计是比较麻烦的。而为了能够得到更具说服力的结果,很多启发式的松懈条件解和概率估计的方法被提出。

  • 同时使用支持度的概念,支持度就是这条规则发生的次数(其实这条我不是很理解,加上前面所说的内容,就是前面所说的无法推导出准确的概率一样)
  • 变长的窗口序列大小,有些规则并不是通过定长窗口推导出来的
  • 对某些位置进行不关注的策略,例如某条规则可以表达为 a 1 a 2 ∗ ∗ a 5 ⇒ a 6 a_1a_2**a_5\Rightarrow a_6 a1a2a5a6,在某些位置可以忽略。

同时可以采用分类的方式,也就是说将前面窗口拆分出来作为特征,然后将最后一个标志作为预测结果。
(我越发的感觉,这部分内容,真的非常像之前的频繁序列挖掘的内容)

2.2 马尔可夫式(Markovian)模型

该类模型代表着一种利用马尔科夫链来转移概率来生成序列的模型,这种模型本质上是一种特殊形式的有限状态机(那不特殊的有限状态机是什么?),其中状态被定义为生成的短期历史记忆。对于两种不同阶的马尔可夫模型,阶数就对应着他们所记忆的短时记忆长度,他们的状态分别是

  • 一阶马尔可夫模型,每个状态就是一个历史状态 a i a_i ai
  • 二阶马尔可夫模型,每个状态都是两个历史状态 a i − 1 a i a_{i-1}a_{i} ai1ai,然后k阶递推

在这里插入图片描述

每个点代表状态,而每条线代表某个事件发生,从而导致状态转移。例如k阶的状态转移,从 a n − k . . . a n − 1 a_{n-k}...a_{n-1} ank...an1 a n − k + 1 . . . a n a_{n-k+1}...a_n ank+1...an,其概率就是 P ( a n ∣ a n − k . . . a n − 1 ) P(a_n|a_{n-k}...a_{n-1}) P(anank...an1),而这个概率就是前面提到的规则的置信度,而这里就回答了前面的内容,基于规则的模型和基于马尔可夫的模型是相同的,只不过是某些形式化上的语言不同。

正常情况下,在 k k k阶的马尔可夫模型中,累计存在 ∣ Σ ∣ k |\Sigma|^k Σk种状态,其中 Σ \Sigma Σ是状态表。很多子序列的状态可能不会出现在实际的训练数据中,同时也可能本身就不符合有些物理世界的规则。
对于高阶的马尔可夫模型中,当存在足够的数据进行训练时,能够学习的更准确。而对于有限的数据,这种高阶的模型非常容易过拟合,首先高阶的训练过程就比较困难,加上数据量较少,可能也无法保证估计的概率准确。因此为了解决效率和准确性的问题,针对马尔可夫模型也有很多变种的模型。

  • 变阶的模型,有些高阶的状态而频率比较低的,其实可以通过剪枝去除掉,同时替代为低阶的状态,有一个方法就是概率前缀树
  • 忽略子序列的方法,这种代表模型是稀疏马尔可夫模型。

一般来说,高阶的模型通常都容易训练速度比较慢,都需要高效的数据结构来代表和处理。

2.4 概率前缀树

(这部分具体没有记录)好像仅仅是一个数据结构。

其实,我这里也有一个疑问,为什么没有马尔可夫的训练过程呢?难道说就存粹是频率的计算?虽然前面说了他的概率就是跟基于规则的一样,但是我觉得应该也有相应的训练方式吧。不过,这部分我记得之前的时候在随机过程的学习中,有些了解,有很多事线性代数的知识。

3. 组合异常点

(在本章节的内容中,前面得内容主要是如何定义这个问题,在明确了问题是什么之后,才有后面具体的模型或者说方法)
组合异常点的检测因为不同场景的需求不同,数据不同的原因,导致所需要解决的问题也不一样。但是从整体上来看,他们都可以通过预处理,或者一些其他的手段,将其归类为一种问题。也就是将实质问题形式化为一类问题,通过对于数据的理解来实现不同的分类。

  • 半监督vs无监督问题:该类问题是指给定的数据是否做了训练数据和测试数据的区分,在区分的情况下,训练数据一般都是正常的。

(未完待续…)

后续要返回来阅读的内容

  1. 在p329部分,组合异常的不同方式
  2. 在p332部分,为什么基于规则的检测和基于马尔可夫式的方式在某些条件下是等价的。
  3. p333部分,一个名为RIPPER的规则生成器,我看了引用文献,他是针对unix命令的一个应用,发表在AAAI的会议上。
  4. 在p334部分,两篇论文,针对异常检测的,分别是1阶马尔可夫模型和k阶马尔可夫模型
  5. 在p334部分,文献169针对网页访问控制的马尔可夫模型异常检测
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值