0

我正在设计一个异常检测系统

有多种方法可以构建这样的系统。我选择通过检测大多数样本共享的特征来实现这种系统的一个方面。我承认这种方法可能存在不足,但对于我的特定用例:(1)知道一个新样本包含(或缺少)大多数过去数据共享的特征就足以做出快速决定。(2)我'我对这种方法将为数据提供的见解感兴趣。

所以,问题来了:

考虑具有M个数据点的大型数据集,其中每个数据点可能包含任意数量的 {key:value} 特征。我选择通过对数据中观察到的所有特征(所有唯一键的集合)进行分组并将其设置为模型的特征空间来对训练数据集进行建模。我通过为现有键设置其值来定义每个样本,并为它不包含的功能中的值设置无。

给定这个训练数据集,我想确定哪些特征在数据中再次出现;对于此类重复出现的功能,它们是否主要共享一个值。

我的问题:

一个简单的解决方案是计算所有内容 - 为N个特征中的每一个计算值的分布。然而,由于MN可能很大,我想知道是否有更紧凑的方法来表示数据或更复杂的方法来声明特征频率。

我是在重新发明现有的轮子吗?如果有完成此类任务的在线方法会更好。

4

1 回答 1

0

如果我正确理解您的问题,那么您无论如何都需要检查所有数据,那么为什么不使用哈希呢?实际上有两个哈希表:

  1. 用于特征值分布的内部哈希表。
  2. 特征存在的外部哈希表。

这样,内部哈希表的大小将表明您的数据中该特征的共性如何,而实际值将表明它们之间的差异。需要注意的另一件事是,您只检查一次数据,并且哈希表上的每个操作(几乎)的时间复杂度(如果您从一开始就分配了足够的空间)是O(1).

希望能帮助到你

于 2016-08-31T09:07:47.007 回答