【发布时间】:2015-09-28 00:00:38
【问题描述】:
我整个夏天都在做一个数据分析项目。主要目标是利用医院内用户访问患者信息的一些访问日志数据,并尝试检测异常访问行为。已经选择了几个属性来表征用户(例如员工角色、部门、邮政编码)和患者(例如年龄、性别、邮政编码)。大约有 13 - 15 个变量正在考虑中。
我之前使用的是 R,现在我使用的是 Python。我可以根据你们建议的任何合适的工具/库来使用。
在我提出任何问题之前,我想提一下,很多数据字段在交给我时都经过了匿名处理,这是医疗保健行业保护个人信息的要求。具体来说,很多 VARCHAR 值被转换为随机整数值,只在数据集之间保持引用完整性。
问题:
-
没有给出异常值的确切定义(它是根据大多数数据的行为定义的,如果存在一般行为),也没有标记的训练集告诉我数据集中的哪些行被认为是异常的。我相信该项目属于无监督学习领域,所以我正在研究聚类。
由于数据是混合的(数字和分类),我不确定聚类如何处理这种类型的数据。
我已经读过可以扩展分类数据并让变量中的每个类别为 0 或 1 以进行聚类,但是 R/Python 将如何为我处理如此高维的数据? (简单地扩大雇主角色会带来大约 100 个变量)
-
如何解释聚类的结果?
使用聚类算法,潜在的“异常值”是否也被分组到聚类中?我应该如何检测它们?
此外,由于涉及分类数据,我不确定“点之间的距离”是如何定义的,数据点的接近度是否表明类似的行为?将每个类别扩展到具有真/假值的虚拟列是否有帮助?那么距离是多少呢?
-
面对聚类分析的挑战,我也开始尝试对数据进行切片,一次只查看两个变量。例如,我会查看某个员工角色访问的患者的年龄范围,并使用四分位数和四分位数间距来定义异常值。对于分类变量,例如员工角色和被触发事件的类型,我只会查看每个事件被触发的频率。
有人可以向我解释一下对非正态分布的数据使用四分位数的问题吗?对此有何补救措施?
- 最后,您会建议两种方法(或其他一些方法)中的哪一种?使用这种方法的最佳方法是什么? 非常感谢。
【问题讨论】:
-
首先我喜欢这个问题。虽然我可能会指出,在这种情况下,太多的变量可能是你的敌人,但我自己有一点医疗数据背景,我认为数据集中有两个不同的问题。一;是正在查看的与用户相关的数据。二是具体的个人看的太多。我不知道你所有的变量,但我猜你可能会缩小一点。我会查看患者单位/部门与用户单位/部门或医师专业的情况。您会看到一些变量,例如 OBGYN 和 Peds
-
这些问题很有趣。但是,从我和队友的讨论来看,切片数据并看到在 2D 空间中有一个点偏离并不意味着它是原始 k 维空间中的异常数据。你不这么认为吗?
-
也许吧,但我想如果请求的潜水动机是基于合规性的,那么在“谁可以看什么”与问题时的整体用户体验方面,你会有一些黑白分明是“他们如何在 EMR 中导航”
-
@Pakwah 你有想过这个吗?我有类似的问题,想知道你的过程。
标签: cluster-analysis data-mining data-analysis