为什么混合数据是基于欧几里得的聚类算法的问题?


21

大多数经典的聚类和降维算法(分层聚类,主成分分析,k均值,自组织映射...)都是专门为数字数据设计的,其输入数据被视为欧氏空间中的点。

当然,这是一个问题,因为许多现实世界中的问题都涉及到混杂的数据:例如,如果我们研究公交车,则高度,长度和电机尺寸将是数字,但我们可能也会对颜色感兴趣(分类变量:蓝色/红色/绿色...)和容量类别(顺序变量:小/中/大容量)。具体来说,我们可能想同时研究这些不同类型的变量。

有很多方法可以将经典聚类算法扩展到混合数据,例如使用Gower不相似性插入层次聚类或多维缩放,或者采用其他以距离矩阵为输入的方法。或例如方法,是将SOM扩展为混合数据。

我的问题是:为什么我们不能仅对混合变量使用欧几里德距离?还是为什么这样做不好?为什么我们不能仅对分类变量进行虚拟编码,对所有变量进行归一化,以使它们在观察之间的距离上具有相似的权重,并在这些矩阵上运行常规算法?

这真的很容易,而且从未做过,所以我想这是非常错误的,但是有人可以告诉我为什么吗?和/或给我一些参考?谢谢


5
您可以对数据做任何喜欢的事情,将它们表示为欧几里得空间中的点,但是要素的含义可能会消失。问题出在测量规模的层面,而不是空间的层面。序数标度应适当量化,虚拟编码无济于事。不对称意义的二进位制(当前与不存在)自然要求除欧几里得距离之外的其他距离度量;加上插值问题(是和否之间不能存在实质性均值)。
ttnphns

(续)欧几里德空间大约有两件事:它是连续的(细粒度的),并且允许任何方向。并非所有的数据类型都需要或迎接这样的空间以适应由数据的性质引起的差异。
ttnphns

顺便说一句,层次聚类的工作原理具有任何相似之处。(除了Ward之类的情况外)-特别是,您可以使用例如Jaccard系数,这对于某些类别/二进制情况有意义。
Anony-Mousse 2014年

Answers:


5

这与无法计算某些东西无关。

距离常被用来衡量有意义的东西。对于分类数据,这将更早失败。如果它可以与多个变量一起使用,那就是...

如果您拥有“鞋子的大小”和“体重”的属性,那么欧几里得距离也没有太大意义。当x,y,z为距离时很好。欧几里得距离就是两点之间的视线距离。

现在,如果您对变量进行虚拟编码,这将产生什么含义

另外,当您的数据是离散的时,欧几里得距离没有意义。

如果仅存在整数x和y值,则欧几里得距离仍将产生非整数距离。它们不会映射回数据。同样,对于伪编码变量,该距离不会映射回一定数量的伪变量...

然后,当您计划使用k-means聚类时,它不仅与距离有关,而且与计算均值有关。但是伪编码变量没有合理的平均值,对吗?

最后,还有维数诅咒。当您增加变量数量时,已知欧几里德距离会降低。添加伪编码的变量意味着您会很快失去距离对比度。一切都与其他一切都相似,因为单个虚拟变量可以发挥所有作用。


3

这些基于度量的聚类问题的核心是插值的概念。

采取您刚才引用的任何方法,让我们考虑一个连续变量,例如权重。您有100kg,数据中有10kg。当您看到一个新的99kg时,该度量标准将使您可以接近100kg ---即使您从未见过。不幸的是,不存在用于离散数据的插值。

这个问题的另一个论点是没有自然的方法。您要在R中分配3个值,并使它们在每对之间的距离相等,这是不可能的。如果将它们分配到不同的类别并运行PCA,那么您将丢失实际上反映相同类别的信息。


1
谢谢!我了解插值问题,但是在许多应用程序中这不是问题(例如,当我们知道总线是绿色,红色或蓝色,并且数据集中不存在其他颜色时)。而且我认为,有几种简便的方法可以标准化虚拟变量,以使每个分类变量都具有与每个数字变量相似的“权重”(如果数字变量也已预先标准化)。还是随意将权重分配给不同的变量……
jubo,2014年

0

无序分类值的问题是,如果您对它们进行虚拟编码,则会强制排序,从而对变量赋予新的含义。例如,如果您将蓝色编码为1,将橙色编码为2,将绿色编码为3,则意味着具有橙色值的数据模式比具有蓝色值的数据模式更接近具有绿色值的模式。

一种解决方法是使它们具有新功能(列)。对于每个不同的值,您将创建一个新的二进制功能并将其设置为true / false(换句话说,对值进行二进制编码并将每一位设置为一列)。对于来自这一组新功能的每个数据模式,只有一个功能的值将为1,所有其他功能的值为0。但这通常不会停止训练算法为多个功能分配接近1的质心值。当然,这可能会导致解释问题,因为这在数据域中没有意义。

对于“容量类别”(即有序类别),您不会有相同的问题,因为在这种情况下,数值赋值才有意义。

当然,如果您使用不同性质或度量单位或不同值范围的特征,则应始终将这些值标准化。

/programming/19507928/growing-self-organizing-map-for-mixed-type-data/19511894#19511894

/programming/13687256/is-it-right-to-normalize-data-and-or-weight-vectors-in-a-som/13693409#13693409


这就是分类变量的“虚拟编码”的意思,但是谢谢。顺便说一句,我不同意您关于有序因素(“能力等级”)的陈述,因为无法在例如。(1,2,3)或(1,2,100),这对于基于距离的算法会产生巨大的影响。
jubo 2014年

0

答案实际上很简单,我们只需要了解虚拟变量中的真正信息即可。虚拟变量的概念表示是否存在因子水平(分类变量的离散值)。它旨在通过存储是否存在的信息来表示不可测量,不可量化的事物。这就是为什么虚拟变量用二进制数字表示的原因,与它所表示的分类变量的离散值一样多(或负1)。

将因子级别表示为0/1值仅在解析方程式(例如线性模型)中才有意义(对于那些可以解释统计模型系数的人来说,这是一个简单的概念)。在虚拟变量中,基础分类变量的信息按位顺序存储。当使用那些位作为维将输入样本映射到特征空间时(如相似/距离矩阵的情况),按位顺序的信息将完全丢失。


1
谢谢!实际上,我的观点是,在欧几里得距离内,伪编码的类别变量确实具有(一定的)意义:如果值不同,则平方距离加2,否则,它加0。您可以将不同的虚拟变量归一化方法,以考虑类别的数量或它们的概率。
jubo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.