在多维数据中检测常见特征

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

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

所以,问题是这样的:

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

基于这个训练数据集,我想确定哪些特征在数据中反复出现;对于这些反复出现的特征,它们是否大多共享一个单一值。

我的问题是:

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

我是否在重新发明轮子?如果有在线方法来完成这项任务,那就更好了。


回答:

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

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

这样,内部哈希表的大小将指示特征在你的数据中有多常见,而实际值将指示它们之间的差异。另一个需要注意的是,你只需遍历一次数据,并且如果从一开始就分配足够的空间,哈希表上几乎所有操作的时间复杂度都是O(1)

希望这对你有帮助

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注