如何将一组集合表示为向量

数据挖掘 聚类 特征工程
2022-03-07 03:30:26

我对机器学习很陌生。

我知道我可以将一组离散值表示为 0/1 值的向量。例如,在特征集合 {a, b, c, d, e} 中,包含的子集{a, c} 可以表示为[1, 0, 1, 0, 0],包含的子集{c, d, e}可以表示为[0, 0, 1, 1, 1],这意味着我的维度与元素一样多,当您有有限(和少量)的元素。

但是现在,对于聚类任​​务,我想表示集合的集合,例如,表示集合{{a, c}, {c, d, e}}我怎样才能做到这一点?在这里,基本的 0/1 方法不起作用,因为我将有2^n可能的组合。如果有的话,解决方法是什么?

编辑:这里是作为一个不那么抽象、更多业务问题的转录。我想根据他们的旅行找到人群。一次旅行包括一组访问过的城市和一组使用的交通工具。例如,人们可能已经{Rabat, Alger, Marrakech, Tunis, Hammamet}通过交通工具访问了集合中的城市,例如{car, plane, train}旅行可以是{Rabat, Marrakech, plane}{Alger, Marrakech, Tunis, car, train}请注意,不考虑访问城市的顺序或使用车辆的顺序。

我想要查找集群的项目的一个示例可能是一个人进行了这两次旅行,表示为p1 = {{Rabat, Marrakech, plane}, {Alger, Marrakech, Tunis, car, train}}

2个回答

您正在描述一次性编码。每个元素都有一个插槽。如果元素存在,则槽为 1,如果元素不存在,则槽为 0。

通常,人们会对不同维度的正交特征进行编码。在您的情况下,城市将是一个维度,而交通类型将是另一个维度。给定的数据点将在矩阵(向量的 2D 集合)中一次性编码。如果你想加人,你会去另一个维度。这将创建一个每个人连续的 3D 张量。

压缩数据的另一种方法是不编码城市(节点),而是编码城市(边缘)之间的路径。通过该编码,您可以创建一个拉普拉斯矩阵来设置谱聚类由于路线有多种运输方法,因此您可以创建具有多维谱聚类的聚类。

由于您没有行程的相似性度量,因此如果代表行程的集合不同,则两个行程是不同的。因此,您可以简单地用不同的数字表示不同的旅行,并用一组这些数字表示一个人的旅行。