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

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

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

所以,问题是这样的:

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

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

我的问题是:

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

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


回答:

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

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

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

希望这对你有帮助

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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