Cluster analysis 何时使用k均值聚类算法?

Cluster analysis 何时使用k均值聚类算法?,cluster-analysis,data-mining,k-means,Cluster Analysis,Data Mining,K Means,我可以对单个属性使用k-means算法吗 属性与集群数量之间是否存在任何关系 我有一个属性的性能,我想将数据分为三类:差、中、好 可以用一个属性创建3个簇吗?K-Means在您知道空间中实际存在多少簇时非常有用。它的主要优点是速度快。属性与数据集中的观察数之间存在关系 有时,数据集可能因变量/属性的数量远远大于观测值的数量而受到影响。基本上,在观测值很少的高维空间中,很难在超维空间中分离观测值 您当然可以有三个具有一个属性的集群。考虑有7个观察值的定量属性 一, 二, 一百 101 五百 49

我可以对单个属性使用k-means算法吗

属性与集群数量之间是否存在任何关系

我有一个属性的性能,我想将数据分为三类:差、中、好


可以用一个属性创建3个簇吗?

K-Means
在您知道空间中实际存在多少簇时非常有用。它的主要优点是速度快。属性与数据集中的观察数之间存在关系

有时,数据集可能因变量/属性的数量远远大于观测值的数量而受到影响。基本上,在观测值很少的高维空间中,很难在超维空间中分离观测值

您当然可以有三个具有一个属性的集群。考虑有7个观察值的定量属性

  • 一,
  • 二,
  • 一百
  • 101
  • 五百
  • 499
  • 501

请注意,此示例中有三个集群:1.5、100.5和500。

是的,可以使用具有单个属性的集群

不,集群数量和属性之间没有已知的关系。然而,有一些研究建议采用簇数(k)=n\sqrt{2},其中n是项目总数。这只是一项研究,不同的研究表明了不同的聚类数。确定簇号的最佳方法是选择最小化簇内距离和最大化簇间距离的簇号。有背景知识也很重要

性能属性的问题更多的是分类问题,而不是聚类问题

如果你有一维数据,搜索stackoverflow寻找比k-means更好的方法

当您有多变量数据时,K-means和其他聚类算法会大放异彩。他们将“工作”一维数据,但他们不再是非常聪明

一维数据是有序的。如果您对数据进行排序(甚至已经排序),那么处理数据的效率将大大高于使用k-means。k-means的复杂性“只是”
O(n*k*i)
,但如果您的数据是经过排序的一维数据,您实际上可以将k-means改进为
O(k*i)
。排序是有代价的,但是到处都有非常好的排序实现

另外,对于一维数据,可以使用很多统计数据,但这些统计数据在更高的维度上并没有得到很好的研究或处理。您真正应该尝试的一个统计是内核密度估计。也许也可以尝试Jenks自然休息优化


但是,如果您只想将数据分为差/中/高,为什么不使用两个阈值呢?

正如其他人已经回答的那样,k-means需要有关簇数的事先信息。这在一开始似乎不是很有帮助。但是,我将引用下面的场景,我曾经使用过它,并且发现它非常有用

颜色分割

想象一幅有3个信息通道的图片。(红、绿、蓝)您希望将颜色量化为20个不同的波段,以减少维度。我们称之为矢量量化

每个像素都是一个包含红色、绿色和蓝色分量的三维矢量。如果图像是100像素乘以100像素,则有10000个向量

R,G,B
128,100,20
120,9,30
255,255,255
128,100,20
120,9,30
.
.
.
根据您打算执行的分析类型,您可能不需要所有的R、G、B值。处理顺序表示可能更简单。 在上面的示例中,可以为RGB值指定一个平面积分表示

R,G,B
128,100,20 => 1
120,9,30   => 2
255,255,255=> 3
128,100,20 => 1
120,9,30   => 2
在这10000个向量上运行k-Means算法,并指定20个簇。结果-您已将图像颜色减少到20个宽桶。显然有些信息丢失了。然而,这种损失可以接受的直觉是,当人眼凝视一片绿色草地时,我们不太可能记录所有1600万RGB颜色

YouTube视频

我已嵌入此视频中的关键图片,以供您理解注意我不是这个视频的作者

原始图像

使用K均值分割后


只要有一个属性,就不需要使用k-means。首先,我想知道你的属性是数字属性还是分类属性

如果是数字,设置两个阈值会更容易。如果是直截了当的,事情会变得容易得多。只需指定哪些类别属于较差、中等或良好。然后简单的数据帧操作就可以工作了

如果您仍然感到困惑,请随时向我发送评论


Rowen

实际上,k-means不能合理地处理分类属性。因为这些都没有“意义”可言。@Anony Mouse很有道理。实际上,虽然我只是问OPs关于在一个属性中包含三个集群的问题。直截了当是回答这个问题最简单的方法。尽管如此,我还是将其改为停留在K-Means的领域。要继续关注内核密度估计的评论,如果您想要进行聚类分类,可以使用meanshift聚类之类的方法。然而,集群的数量将取决于您选择的内核。对于一维数据,meanshift不会比KDE产生任何好处,是吗?但是它的运行时间可能会高出一百倍,如果不是更多的话。对于一维数据,它们都应该工作得很好。如果该值是连续的,请查看高斯分类器。@MattBoyle问题在于未标记的数据。那么你不能使用任何分类器,是吗?读到这个问题,听起来他们好像在试图分类