使用混合数字和分类数据进行无监督异常检测

Posted

技术标签:

【中文标题】使用混合数字和分类数据进行无监督异常检测【英文标题】:Unsupervised Anomaly Detection with Mixed Numeric and Categorical Data 【发布时间】:2015-09-28 00:00:38 【问题描述】:

我整个夏天都在做一个数据分析项目。主要目标是利用医院内用户访问患者信息的一些访问日志数据,并尝试检测异常访问行为。已经选择了几个属性来表征用户(例如员工角色、部门、邮政编码)和患者(例如年龄、性别、邮政编码)。大约有 13 - 15 个变量正在考虑中。

我之前使用的是 R,现在我使用的是 Python。我可以根据你们建议的任何合适的工具/库来使用。

在我提出任何问题之前,我想提一下,很多数据字段在交给我时都经过了匿名处理,这是医疗保健行业保护个人信息的要求。具体来说,很多 VARCHAR 值被转换为随机整数值,只在数据集之间保持引用完整性。

问题:

没有给出异常值的确切定义(它是根据大多数数据的行为定义的,如果存在一般行为),也没有标记的训练集告诉我数据集中的哪些行被认为是异常的。我相信该项目属于无监督学习领域,所以我正在研究聚类。

由于数据是混合的(数字和分类),我不确定聚类如何处理这种类型的数据。

我已经读过可以扩展分类数据并让变量中的每个类别为 0 或 1 以进行聚类,但是 R/Python 将如何为我处理如此高维的数据? (简单地扩大雇主角色会带来大约 100 个变量)


如何解释聚类的结果?

使用聚类算法,潜在的“异常值”是否也被分组到聚类中?我应该如何检测它们?

此外,由于涉及分类数据,我不确定“点之间的距离”是如何定义的,数据点的接近度是否表明类似的行为?将每个类别扩展到具有真/假值的虚拟列是否有帮助?那么距离是多少呢?


面对聚类分析的挑战,我也开始尝试对数据进行切片,一次只查看两个变量。例如,我会查看某个员工角色访问的患者的年龄范围,并使用四分位数和四分位数间距来定义异常值。对于分类变量,例如员工角色和被触发事件的类型,我只会查看每个事件被触发的频率。

有人可以向我解释一下对非正态分布的数据使用四分位数的问题吗?对此有何补救措施?


最后,您会建议两种方法(或其他一些方法)中的哪一种?使用这种方法的最佳方法是什么? 非常感谢。

【问题讨论】:

首先我喜欢这个问题。虽然我可能会指出,在这种情况下,太多的变量可能是你的敌人,但我自己有一点医疗数据背景,我认为数据集中有两个不同的问题。一;是正在查看的与用户相关的数据。二是具体的个人看的太多。我不知道你所有的变量,但我猜你可能会缩小一点。我会查看患者单位/部门与用户单位/部门或医师专业的情况。您会看到一些变量,例如 OBGYN 和 Peds 这些问题很有趣。但是,从我和队友的讨论来看,切片数据并看到在 2D 空间中有一个点偏离并不意味着它是原始 k 维空间中的异常数据。你不这么认为吗? 也许吧,但我想如果请求的潜水动机是基于合规性的,那么在“谁可以看什么”与问题时的整体用户体验方面,你会有一些黑白分明是“他们如何在 EMR 中导航” @Pakwah 你有想过这个吗?我有类似的问题,想知道你的过程。 【参考方案1】:

您可以决定混合数据的相似性度量(例如高尔距离)。

然后您可以使用任何基于距离的异常值检测方法。

【讨论】:

现在我回顾了我想要考虑的变量,我认为它们都可以被视为分类变量,我想我将为每个类别创建一个虚拟列,以便值是0或1。然后我想执行PCA以查看降维数据中是否存在簇。您认为 PCA 是否适用于所有二进制列和如此高维的数据?(数百)@Anony-Mousse 不,我不认为 PCA 适用于具有连续相关性的连续变量。如果您有二进制数据,您可以通过购物篮分析找到模式(预计会出现二进制) 如果我将列中的每个类别都更改为数字并对所有类别列执行此操作,然后我可以使用 z-score 标准化所有列以使它们具有相同的比例。即使数字分配是任意的,您认为这是否适用于 PCA 和聚类? (它将保持参照完整性) 没有。添加更多随机函数并不能使这种方法变得明智。 Z-score 由 normal 分布式数据驱动。二进制值不正常。试着找出什么是明智的,而不是什么是可编程的。有太多没有意义的事情要尝试。【参考方案2】:

您可以将 k-prototypes 算法用于混合数字和分类属性。 Here你可以找到一个python实现。

【讨论】:

以上是关于使用混合数字和分类数据进行无监督异常检测的主要内容,如果未能解决你的问题,请参考以下文章

AIOps指标异常检测之无监督算法

《异常检测——从经典算法到深度学习》15 通过无监督和主动学习进行实用的白盒异常检测

《异常检测——从经典算法到深度学习》15 通过无监督和主动学习进行实用的白盒异常检测

AAAI AIOps案例:无监督多指标异常检测及诊断

如何评估无监督异常检测

《异常检测——从经典算法到深度学习》16 基于VAE和LOF的无监督KPI异常检测算法