k均值聚类和PCA之间有什么关系?


60

通常的做法是在聚类算法(例如k均值)之前应用PCA(主要成分分析)。据信,它在实践中改善了聚类结果(降噪)。

但是,我有兴趣对PCA和k-means之间的关系进行比较和深入的研究。例如,Chris Ding和Hexiaofeng He,2004年,通过主成分分析进行的K-means聚类分析表明:“主要成分是K-means聚类离散聚类成员指标的连续解”。但是,我很难理解本文,而Wikipedia实际上声称这是错误的

同样,从PCA有助于减少“特征”数量而又保留方差的角度来看,这两种方法的结果有些不同,而聚类通过根据期望/均值汇总几个点来减少“数据点”的数量。 (对于k均值)。因此,如果数据集由每个具有特征的个点组成,则PCA旨在压缩特征,而聚类旨在压缩数据点。NŤ ÑTTN

我正在寻找关于这两种技术之间关系的外行解释,以及更多有关这两种技术的技术论文。


2
聚类也可以视为特征缩减。在每个样本中,通过其聚类分配表示它们,或对其进行稀疏编码(因此将减少为)。这两种方法都使数据点的数量保持不变,同时减小了“特征”尺寸。ķTk
2015年

Answers:


72

的确,K均值聚类和PCA似乎具有非常不同的目标,乍一看似乎没有关联。但是,正如Ding&He 2004年发表的论文《通过主成分分析的K-means聚类》中所述,它们之间存在着深厚的联系。

直觉是,PCA试图将所有数据向量表示为少量特征向量的线性组合,并且这样做是为了使均方重构误差最小。相反,K-手段旨在表示所有经由少数聚类中心的,即,数据向量来表示它们作为一个小数目群集的质心的向量,其中线性组合权重必须除单个全零的线性组合的。这样做也是为了最小化均方重构误差。Ñ 1nn1

因此,K均值可以看作是超稀疏PCA。

丁赫(Ding&He)论文的目的是使这种联系更加精确。


不幸的是,Ding&He论文(其中充其量)包含一些草率的表述,并且很容易被误解。例如,Ding&He似乎声称已证明K-means聚类解决方案的聚类质心位于维PCA子空间中:(K1)

定理3.3。集群质心子空间被第一个主方向跨越 。K1

对于这意味着在一个群集上PC1轴上的投影必然为负,而在另一个群集上PC1轴上的投影必然为正,即PC2轴将完美地分离群集。K=2

这要么是一个错误,要么是一些草率的写作。在任何情况下,从字面上看,该特定主张都是错误的。

让我们从2D中一些玩具示例开始。我使用相同的协方差矩阵但均值不同的两个正态分布生成了一些样本。然后,我同时运行K-means和PCA。下图显示了上面数据的散点图,并且根据下面的K-means解决方案对相同的数据进行了着色。我还将第一个主要方向显示为黑线和K均值带有黑色叉号的类质心。黑色虚线表示PC2轴。用随机种子重复K均值次,以确保收敛到全局最优。100K=2100

PCA vs K-均值

可以清楚地看到,即使类质心趋向于非常接近第一个PC方向,但它们并没有精确地落在该方向上。此外,即使PC2轴在子图1和图4中完美地分隔了群集,在子图2和3中它的另一侧也有一些点。

因此,K-means和PCA之间的协议相当不错,但是并不完全正确。

那么丁&他证明了什么?为简单起见,我将仅考虑情况。让分配给每个聚类的点数为和 ,点总数为。跟随Ding&He,让我们如下定义聚类指示符向量 :如果第个点属于聚类1,而如果它属于集群2)。集群指示符向量的单位长度为且“居中”,即其元素总和为零。n 1K=2n1 Ñ = Ñ 1 + Ñ 2 q[R Ñ q = n2n=n1+n2 qRnq=-qi=n2/nn1iqi=n1/nn2Σ q = 0q=1qi=0

Ding&He证明K均值损失函数(K-means算法最小化)可以等效地重写为,其中是所有点之间的标量积的克矩阵:,其中是数据矩阵,并且是居中的数据矩阵。ki(xiμk)2qGqGn×nG=XcXcXn×2Xc

(注意:我使用的符号和术语与他们的论文略有不同,但我觉得更清楚)。

因此,K-均值解是最大化的居中单位向量。很容易表明,第一个主成分(当归一化为具有单位平方和时)是Gram矩阵的前导特征向量,即它也是最大化的居中单位向量。唯一的区别是约束为仅具有两个不同的值,而没有此约束。qqGqppGpqp

换句话说,K-means和PCA使相同的目标函数最大化,唯一的区别是K-means具有附加的“类别”约束。

可以认为,正如我们在上面的仿真中看到的那样,大多数情况下,K均值(约束)解决方案和PCA(无约束)解决方案非常接近彼此,但是我们不应该期望它们是相同的。取并将其所有负元素设置为等于并将其所有正元素设置为通常通常不会完全给出 。pn1/nn2n2/nn1q

Ding&He似乎很了解这一点,因为他们将定理阐述如下:

定理2.2。对于K K均值聚类,聚类指示符向量的连续解是[第一]主成分K=2

注意单词“连续解”。在证明了该定理之后,他们还评论说PCA可用于初始化K-means迭代,这完全有意义,因为我们期望接近。但是仍然需要执行迭代,因为它们并不相同。qp

但是,Ding&He随后针对继续开发了更通用的处理方法,最终将定理3.3公式表示为K>2

定理3.3。集群质心子空间被第一个主方向跨越 。K1

我没有经过第3节的数学运算,但是我相信这个定理实际上也指的是K-means的“连续解”,即其陈述应为“ K-means连续解的聚类质心空间为”。跨越[...]”。

但是,Ding&He没有取得这一重要资格,而且在摘要中写道:

在这里,我们证明主成分是K-均值聚类的离散聚类成员指标的连续解。等效地,我们表明,由簇质心跨越的子空间是由以项截断的数据协方差矩阵的谱扩展给出的。K1

第一句话是绝对正确的,但第二句话则不是。我不清楚这是(非常)草率的文字还是真正的错误。我非常有礼貌地给两位作者发了电子邮件,要求澄清。(两个月后更新:我从未收到他们的回复。)


Matlab仿真代码

figure('Position', [100 100 1200 600])

n = 50;
Sigma = [2 1.8; 1.8 2];

for i=1:4
    means = [0 0; i*2 0];

    rng(42)
    X = [bsxfun(@plus, means(1,:), randn(n,2) * chol(Sigma)); ...
         bsxfun(@plus, means(2,:), randn(n,2) * chol(Sigma))];
    X = bsxfun(@minus, X, mean(X));
    [U,S,V] = svd(X,0);
    [ind, centroids] = kmeans(X,2, 'Replicates', 100);

    subplot(2,4,i)
    scatter(X(:,1), X(:,2), [], [0 0 0])

    subplot(2,4,i+4)
    hold on
    scatter(X(ind==1,1), X(ind==1,2), [], [1 0 0])
    scatter(X(ind==2,1), X(ind==2,2), [], [0 0 1])
    plot([-1 1]*10*V(1,1), [-1 1]*10*V(2,1), 'k', 'LineWidth', 2)
    plot(centroids(1,1), centroids(1,2), 'w+', 'MarkerSize', 15, 'LineWidth', 4)
    plot(centroids(1,1), centroids(1,2), 'k+', 'MarkerSize', 10, 'LineWidth', 2)
    plot(centroids(2,1), centroids(2,2), 'w+', 'MarkerSize', 15, 'LineWidth', 4)
    plot(centroids(2,1), centroids(2,2), 'k+', 'MarkerSize', 10, 'LineWidth', 2)

    plot([-1 1]*5*V(1,2), [-1 1]*5*V(2,2), 'k--')
end

for i=1:8
    subplot(2,4,i)
    axis([-8 8 -8 8])
    axis square
    set(gca,'xtick',[],'ytick',[])
end    

2
我刚刚浏览了Ding&He论文。在定理2.2中,他们指出,如果对某些p维数据云进行k均值(k = 2),并且还对数据执行PCA(基于协方差),那么属于聚类A的所有点都将为负,并且所有在PC1分数上,属于聚类B的点将为正。有趣的说法-应该在模拟中进行测试。但是,问题在于我认为它假设了全局最优的K-means解。但是我们如何知道所实现的聚类是否最优?
ttnphns

1
@ttnphns,我已经更新了仿真和图形以更明确地测试此声明。如果PC1上的投影对于A类和B类应该为正,为负,则意味着PC2轴应作为它们之间的边界。在我的4个玩具模拟中,情况非常接近,但是在示例2和3中,PC2的另一侧有几个问题。关于收敛,我运行kmeans了100次复制的函数:它每次选择一个不同的随机初始化,然后选择最佳解决方案,因此希望它可以确保实现全局最优。
变形虫说恢复莫妮卡

1
@ttnphns:我想我知道发生了什么事,请查看我的更新。
变形虫说恢复莫妮卡

变形虫,感谢您向我们所有人消化正在讨论的文章,​​并提出您的结论(+2);并让我亲自知道!希望几天后再回来阅读并调查您的答案。但是现在已经很欣赏了。
ttnphns

优秀职位。为什么使用Matlab而不使用R是有原因的?只是好奇,因为我正在学习ML Coursera课程,而Andrew Ng也使用Matlab,而不是R或Python。这是通用机器学习的选择吗?
Antoni Parellada

10

PCA和K-means做不同的事情。

PCA用于降维/特征选择/表示学习,例如,当特征空间包含太多无关或多余的特征时。目的是找到数据的固有维数。

这是一个二维示例,可以推广到更高维度的空间。数据集具有两个特征和,每个圆都是一个数据点。xy

在此处输入图片说明

在图像中,的幅度大于幅度。这些是特征向量。数据的维数从二维降为一维(在这种情况下,选择不多),这是通过在向量的方向上投影(在旋转后,其中变得平行或垂直于一个轴)来完成的。 。这是因为与最大方差的方向正交。考虑它的一种方法是将信息丢失降至最低。(由于丢失了一个坐标轴,因此仍然有损失)。v1v2v2v2v2

K均值是一种聚类算法,可基于它们的相似性返回数据点的自然分组。这是高斯混合模型特例

在下面的图像中,数据集具有三个维度。从左侧的3D图可以看出,可以“丢弃”尺寸而不会丢失太多信息。PCA用于将数据投影到两个维度上。在左图中,还显示了投影平面。然后,可以在投影数据上使用K-means来标记右图所示的不同组,并用不同的颜色编码。X

在此处输入图片说明

在机器学习中的无监督或无监督方法之前,都使用PCA或其他降维技术。除了您和我上面提到的原因所概述的原因之外,它还用于可视化目的(从更高的维度投影到2D或3D)。

至于这篇文章,我不认为有任何联系,PCA没有有关数据自然分组的信息,并且对整个数据(而不是子集(组))进行操作。如果某些组可以用一个特征向量来解释(仅因为该特定簇沿该方向散布),这只是一个巧合,而不应作为一般规则。

“ PCA的目的是压缩T个特征,而聚类的目的是压缩N个数据点。”

确实,压缩是考虑PCA的一种直观方法。但是,在K均值中,要描述相对于其簇的每个点,您仍然至少需要相同数量的信息(例如,尺寸),其中是距离,而已存储而不是。并且您还需要存储才能知道增量相对于什么。当然你也可以储存的和然而,你将无法检索数据的实际信息。xi=d(μi,δi)dδixiμidi

集群确实增加了信息。我认为这是将数据分成自然的组(不一定是不相交的)而又不知道每个组的标签是什么意思(嗯,直到您查看组内的数据)。


3
在图中,您的PC的标记方式似乎与文本中的相应讨论不一致。请注意,尽管PCA通常应用于列,而k-均值应用于行,两者可以应用于任一者。我还没有读过这篇论文,但是我敢打赌,这就是他们在谈论的内容。
gung-恢复莫妮卡

抱歉,我的意思是最高数字:即PC的v1和v2标签。
gung-恢复莫妮卡

好点,压缩数据点组可能很有用(无法弄清楚是做什么用的)。使用k均值查找组,使用pca将记录压缩成更少的记录。至于功能分组,这实际上可能有用。
shuriken x blue

2
那么,您本质上是在说纸是错误的吗?它明确指出(请参见摘要中的第3和第4句话),并声称已在数学上证明存在特定的联系,而您却说没有联系。
变形虫说恢复莫妮卡

我得到的是:PCA改进了K-means集群解决方案。关联是簇结构嵌入在前K-1个主成分中。这就是贡献。
shuriken x blue

7

通常在使用k均值之前先将数据变白。原因是k均值对比例非常敏感,并且当您具有混合属性时,就不再有“真实”比例。然后,您必须标准化,标准化或变白数据。没有一个是完美的,但是白化会删除全局关联,这有时会产生更好的结果。由于您对协方差矩阵进行运算,因此PCA /白化为。O(nd2+d3)

据我了解,k均值与PCA的关系不在原始数据上。要在距离矩阵上使用PCA(具有个条目,因此进行完整的PCA就是,即,成本过高,特别是与k-means相比,其中是唯一的大项),并且可能仅适用于。K均值是最小二乘优化问题,PCA也是。k均值试图找到数据的最小二乘分区。PCA找到最小二乘群集成员向量。 ø Ñ 2ð + Ñ 3ø ķ Ñ · ð ñ ķ = 2n2O(n2d+n3)O(knid)nk=2

第一个特征向量具有最大的方差,因此在此向量上进行分裂(类似于聚类成员,而不是输入数据坐标!)意味着在聚类方差之间最大化。通过最大化群集方差,您也可以最小化群集内方差。

但是对于真正的问题,这是没有用的。它仅具有理论意义。


2
很高兴看到Ding&He论文(与OP相关的文章)有更具体的解释/概述。我本人(现在)还不熟悉它,但是已经看到它提到了足够多的时间,因此非常好奇。
变形虫说恢复莫妮卡

3
你是这个意思吗?是的,我也遇到过它;我认为这只会增加我的困惑。我希望这将是可以为我澄清的线索...现在,我考虑了一下,也许我应该对此予以奖励。我认为接下来的几天我没有时间自己研究这个主题。
变形虫说恢复莫妮卡

3
这个Wiki段落很奇怪。它说Ding&He(2001/2004)既错又不是新结果!为了证明它不是新的,它引用了2004年的论文(?!)。为了证明这是错误的,它引用了2014年的最新论文,甚至没有引用Ding&He。腥。
变形虫说恢复莫妮卡

3
也许再次引用垃圾邮件。维基百科充满自我宣传。
Anony-Mousse,2015年

1
我想我已经确定了Ding&He的情况,请参阅我的回答。除此之外,您关于算法复杂性的观点也不是完全正确的,因为您将矩阵的完整特征向量分解与仅提取 K-均值“分量”进行了比较。那不是一个公平的比较。如果您对PCA使用某种迭代算法并且仅提取分量,那么我希望它的工作速度与K均值一样快。因此,我不确定说它对实际问题是没有用的,只是具有理论意义的,是不正确的。k kn×nkk
变形虫说恢复莫妮卡

4

在O(k / epsilon)低秩近似上求解k均值(即,像PCA一样,投影在第一个最大的奇异矢量的跨度上),就乘法误差而言,将得出(1 + epsilon)近似值。

特别是,在最大的k向量上投影会产生2近似值。

实际上,任何k个中心集的平方距离之和都可以通过此投影近似。然后,我们可以对简化后的数据计算核集,以将输入减少到近似于此和的poly(k / eps)点。

请参阅:Dan Feldman,Melanie Schmidt,Christian Sohler:将大数据转变为小数据:用于k均值,PCA和投影聚类的恒定大小核心集。SODA 2013:1434-1453


3

PCA和KMeans的直观关系

  1. 从理论上讲PCA维度分析(保留的第一个K维度表示有90%的方差...不需要与K Means聚类有直接关系),但是使用PCA的价值来自a)考虑到对象的性质而进行的实际考虑我们分析的趋势是自然地围绕其主要组成部分(年龄,性别)(从某个部分)演化而来。b)PCA消除了那些低方差维度(噪声),因此它本身就增加了价值(并形成了类似于聚类的感觉) )。通过简单地讲这些关键维度,就像XY轴可以帮助我们以更先进的方式掌握任何抽象的数学概念一样。

  2. K Means尝试最小化给定K的群集内的总体距离

  3. 对于具有N个维度参数的一组对象,默认情况下,相似的对象将具有MOST参数“相似”,但有几个关键区别(例如,一群年轻的IT学生,年轻的舞者,人类……将具有一些高度相似的特征(低方差)但是一些关键特征仍然相当多样化,捕获那些“关键主要成分”本质上可以捕获大部分差异,例如颜色,居住区域...。因此,如果我们忽略那些微小差异的特征,或者转换为较低的PC不会丢失很多信息
  4. 因此,将它们组合在一起以查看差异(变异)是“非常可能”和“非常自然的”,这对于数据评估是有意义的(例如,如果您在大街上每周进行1,000次调查,则根据种族进行聚类) ,年龄或受过教育的背景(例如PC才有意义)),在K Means的任务下,我们尝试建立一个合理的K数,以使(群中的)这些组元素在质心与成本之间的总距离最小(最小)。建立和运行K个集群是最佳选择(作为集群的每个成员都没有意义,因为维护成本太高且没有价值)
  5. K均值组可以很容易地“目视检查”以达到最佳状态,如果该K沿主要成分排列(例如,如果对于不同年龄的人,则不同种族/地区的群体倾向于表达相似的意见,因此,如果您基于那些达到最小化目标的PC(参考资料1)。此外,这些PC(种族,年龄,宗教信仰等)通常是正交的,因此通过查看PCA可以在视觉上区分开
  6. 但是,这种直观的推论导致了充分但不是必要的条件。(参考文献2:但是,PCA是k均值聚类的一种有用的放松并不是一个新的结果(例如,参见[35]),并且可以很容易地找到关于跨越聚类质心子空间的陈述的反例。根据主要指示。[36]

基于/沿着CP选择集群可能会轻松导致舒适的分配机制

如果x是沿X轴的第一台PC,则可能是一个示例:(........... CC1 ...... CC2 ..... ....... CC3 X轴),其中X轴表示捕获了超过9X%的方差,并且说是唯一的PC

6,最后,PCA还用于在K均值完成后进行可视化(参考4)

如果PCA显示*我们的K聚类结果是正交或接近的,则表明我们的聚类是正确的,每个聚类都表现出独特的特征

(*由于定义上PCA找出/显示了这些主要尺寸(从1D到3D),所以说K(PCA)可能会捕获绝大多数的方差。

因此,PCA既可用于可视化和确认良好的聚类,也可用于确定K均值聚类(在K均值之后使用)。

参考:

  1. https://msdn.microsoft.com/zh-CN/library/azure/dn905944.aspx
  2. https://zh.wikipedia.org/wiki/Principal_component_analysis
  3. 使用主成分分析进行聚类:老年人自动残废的应用(Combes和Azema)
  4. http://cs229.stanford.edu/notes/cs229-notes10.pdf吴恩达
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.