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

Pak*_*wah 5 cluster-analysis data-mining data-analysis

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

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

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

问题:

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

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

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


  • 如何解释聚类的结果?

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

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


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

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


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

Ano*_*sse 0

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

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