运行kmeans之前是否需要删除相关/共线性的变量?


14

我正在运行kmeans以识别客户群。我大约有100个变量来识别集群。这些变量中的每一个都代表客户在类别上花费的百分比。因此,如果我有100个类别,则我拥有这100个变量,这样每个客户的这些变量之和为100%。现在,这些变量彼此之间具有很强的相关性。在运行kmeans之前,是否需要删除其中一些以消除共线性?

这是示例数据。实际上,我有100个变量和1000万个客户。

Customer CatA CatB CatC   
1         10%  70%  20%   
2         15%  60%  25%

1
您是否尝试过PCA分析以解相关数据?
Miroslav Sabo 2013年

2
“ Collinear”与“ correleted”不太相同。因此,您的问题仍然不清楚
ttnphns 2013年

Answers:


10

不要删除任何变量,但请考虑使用PCA。这就是为什么。

首先,正如Anony-Mousse指出的那样,共线性/相关性不会严重影响k-means。因此,您无需丢弃信息。

其次,如果您以错误的方式放置变量,则会人为地将一些样本放在一起。一个例子:

Customer CatA CatB CatC
1        1    0    0
2        0    1    0
3        0    0    1

(我删除了%表示法,只是将值限制在0到1之间,所以它们的总和为1。)

每个客户在其自然3d空间中的欧式距离为(10)2+(01)2+(00)2=2

现在,假设您删除了CatC。

Customer CatA CatB 
1        1    0    
2        0    1    
3        0    0    

现在,客户1和2之间的距离仍然为,但是客户1和3之间以及2和3 之间的距离仅为。您已使原始客户3不支持原始数据,从而使客户3更类似于1和2。2(10)2+(00)2=1

第三,直线性/相关性不是问题。你的维度是。100个变量足够大,即使有1000万个数据点,我担心k均值可能会在数据中找到虚假模式并适合这种情况。相反,请考虑使用PCA将其压缩到更易于管理的尺寸范围(例如从10或12开始)(可能更高,也许更低),您必须查看每个组件的差异,然后四处探索一点,以找到正确的数字)。是的,您将人为地将一些样本放在一起,但是,您这样做的方式应保留数据中的大部分方差,并优先删除相关性。

~~~~~

编辑:

关于以下有关PCA的评论。是的,它绝对有病态。但这很容易尝试,因此,如果您想减少问题的范围,对我来说仍然不错。

不过,在此说明上,我尝试快速将几套100维合成数据放入k均值算法中,以查看它们的结果。尽管聚类中心位置估计值不那么准确,但是聚类成员资格(即,是否将两个样本分配给同一聚类,这似乎是OP感兴趣的)比我想象的要好得多。所以我之前的直觉很可能是错误的-k均值migth在原始数据上工作得很好。


1
我认为在通过PCA消除变量时必须格外小心。首先,必须在消除之前对方差进行归一化,因为您可能会因为变量的单位不同而错误地消除变量。其次,在那之后,我将仅消除那些具有微小变化的维度,因为如果PCA假设正交,则如果您在非正交方向上具有变化,则它将被k均值捕获,而被PCA消除。
Cagdas Ozgenc

1
一个更基本的问题是,自变量上的PCA根本不提供因变量的任何信息。构造示例很容易,这种PCA方法将消除所有重要的变量,仅保留不重要的变量!要查看发生了什么,让具有一个双变量正态分布,其方差为且相关性并设置。来自数据的PCA 将标识为主要成分,并消除。上的回归将不显着。1 ρ > 0 Ŷ = X 1 - X 2X 1X 2X 1 + X 2 X 1 - X 2(X1,X2)1ρ>0Y=X1X2(X1,X2)X1+X2X1X2X 1 + X 2YX1+X2
ub

1
在无人监督的情况下,这是无关紧要的讨论。对于监督设置,PCA不在乎与目标变量的关系。如果依赖性方向落在方差低的方向,那么运气不好。
Cagdas Ozgenc

2

在2d或3d的玩具示例中,它没有太大的区别,它只是为数据增加了一些冗余:所有点都在奇数(d-1)维超平面上。聚类方法也是如此。而且(d-1)维超平面中的距离是相同距离的线性倍数,因此它不会发生任何变化。

如果您是人为地构造此类数据,例如通过执行则会扭曲空间并强调和的影响。如果对所有变量都这样做,那就没关系了;但是您可以通过这种方式轻松更改权重。这体现了众所周知的事实,即标准化和加权变量必不可少。如果数据中具有相关性,那么这比以往任何时候都重要。x y(x,y)(x,y,x+y)xy

让我们看一个最简单的例子:重复变量。

如果对数据集运行PCA并复制变量,这实际上意味着将重复权重放在该变量上。PCA的假设是,每个方向的方差都同样重要-因此,实际上,您应该在进行PCA之前仔细权重变量(考虑相关性,还进行任何其他必要的预处理)。


1
根据我对stats.stackexchange.com/a/50583的分析,这种推理似乎是错误的。
ub

我的答案有很大改善,根据玩具示例数据来看,答案太多了。
已退出-Anony-Mousse 2015年

1

如果变量高度相关,建议将其删除。

与聚类算法或链接方法无关,通常要遵循的一件事是找到点之间的距离。保持高度相关的变量除了给它们更多的功能外,在计算两点之间的距离时权重也加倍(因为所有变量都已标准化,因此效果通常会加倍)。

简而言之,如果变量与其他变量具有高度相关性,则影响聚类形成的变量强度会增加。

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.