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

时间:2015-07-09 14:25:25

标签: cluster-analysis data-mining data-analysis

我今年夏天正在开展数据分析项目。主要目标是在医院中使用一些访问记录数据,以便用户访问患者信息并尝试检测异常访问行为。已经选择了若干属性来表征用户(例如,员工角色,部门,邮政编码)和患者(例如年龄,性别,邮政编码)。正在考虑大约13-15个变量。

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

在我提出任何问题之前,我想提一下,许多数据字段在交给我时已经过了匿名化过程,这是保健行业为保护个人信息所要求的。具体来说,许多VARCHAR值都会变成随机整数值,只保持整个数据集的参照完整性。

问题:

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

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

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

  • 如何解释聚类的结果?

    使用聚类算法,潜在的“异常值”不会被分组到聚类中吗?我怎么想检测它们呢?

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

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

    有人可以向我解释使用四分位数与非正常分布数据的问题吗?什么是补救措施?

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可以对混合的数字和类别属性使用k-prototypes算法。 Here,您可以找到python实现。