2016-08-31 31 views
0

我正在设计一个用于异常检测的系统检测多维数据中的共同特征

建立这样的系统有多种方法。我选择通过检测大多数样本共享的特征来实现此类系统的一个方面。我承认这种方法可能存在的不足之处,但是对于我的具体用例:(1)只要知道一个新样本包含(或缺少)大多数过去数据共有的特征以便作出快速决定就足够了。对这种方法将提供给数据的见解感兴趣。

所以,现在的问题是:

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

鉴于此训练数据集,我想确定哪些功能在数据中重复出现;而对于这种反复出现的功能,它们大多数是共享一个值。

我的问题:

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

我重塑了一个现有的车轮吗?如果有一个在线方法来完成这个任务,它会更好。

回答

0

如果我理解正确,你的问题, 无论如何你需要浏览所有的数据,为什么不使用散列? 实际上有两个哈希表:

  1. 特征值分布的内部哈希表。
  2. 功能存在的外部散列表。

通过这种方式,内部散列表的大小将指示您的数据中共同特征的功能如何,实际值将指示它们如何相互区别。还有一点需要注意的是,您只需查看一次数据,并且散列表上每个操作(几乎)的时间复杂度(如果从开始处分配足够的空间)是O(1)

希望它有帮助