按目标聚合分类特征

数据挖掘 聚类 特征工程
2022-02-22 02:25:36

有一个三元组 {X1,X2,Y} 的列表,例如:

{宾夕法尼亚州,发烧,疟疾}
{宾夕法尼亚州,头痛,疟疾}
{亚利桑那州,酮味,流感}
{纽约,发烧,癌症}
{俄亥俄州,手痛,外伤}

我有数千个带有状态、症状和诊断的样本。我需要聚合状态以使用症状和诊断将维度减少为更小的状态集。有什么想法吗?

我开始使用 Kmode 算法将数据聚类到几个集群中,但我不确定这样做是否有意义

3个回答

您可以使用Jaccard 索引作为相似性指标对离散数据进行聚类。具有更多症状和诊断的州将具有更高的 Jaccard 指数值。可以对 Jaccard 索引值进行阈值化以形成集群。

有趣的问题...

如果我理解正确,您希望获得具有相似模式/症状+诊断比例的状态集群,对吗?

如果是,我建议您重新组织数据,使一个实例代表一种状态,其特征是每对的频率(症状、诊断)。基于此表示,您可以对一对具有相似流行率的状态进行聚类。

这个想法的缺点是它认为对(症状,诊断)是不同的,即使两者中只有一个是不同的。当然,同样的过程可以通过只考虑症状或只考虑诊断来完成。可能有更好的方法,但这个简单的方法可能已经提供了一些见解。

大多数常用的机器学习算法,如决策树和逻辑回归,都将分类变量转换为 one-hot 编码。例如,如果您有 20 个状态,那么您创建 20 个变量,每次只有 1 个非零条目。在这种情况下,您可以通过训练嵌入矩阵E来降低输入空间的维度,就像学习词嵌入一样,例如 word2vec。您可以使用 15 的隐藏维度来减少输入空间。

要找到嵌入E,您需要创建一个神经网络,根据状态和症状的嵌入来预测疾病的嵌入。通过反向传播以上述目标训练该模型将允许嵌入矩阵捕获结构存在于给定数据的状态中。训练结束后, E的第 i^{th} 行给出你的 i^{th} 状态的新表示。