如何检测原始级别数据中的异常?

数据挖掘 机器学习 预测建模 异常检测
2022-02-26 15:36:32

我有一个每天增长约 3000 万行的数据集。

数据架构如下:

day_hour_timestamp timestamp,
campaign_id        varchar,
creative_id        int,
uuid               varchar,
device             varchar,
country            varchar,
os                 varchar,
browser            varchar

数据集中的每条记录都是关于广告印象的信息。

例如,如果我在 2017 年 10 月 11 日 13:30 访问了某个网站上的特定广告。我将成为数据集中的一个数据点,时间为 2017 年 10 月 11 日 13:00,以及我的设备、国家/地区、操作系统、浏览器等。

我的问题是如何检测此数据集中的异常情况?列数据不正常等异常情况,例如,如果我收到的操作系统为 NULL 或浏览器为“Apple”。

我应该创建一个检查每一列的启发式方法,还是有可以应用的机器学习算法?

由于这个数据集非常大,检查每个数据点会很昂贵吗?

2个回答

我应该创建一个检查每一列的启发式方法,还是有可以应用的机器学习算法?

我会选择无监督或半监督学习。使用“正常”数据作为训练数据,然后预测什么是正常的,什么是异常的。根据您的需要,您可以微调截止。

一类 SVM 应该可以工作。或一类 SVM 和 SV 数据描述的组合以获得更好的结果

我如何进行异常检测是拥有领域知识。在您的情况下,有多个域作为列,因此您可以使用本体作为检测异常的一种方式。有多种资源,如 WordNet、ConceptNet 和 GloVe,它们提供了广泛的数据。您可以获取查询所属的类并检查您想要的类是否存在。