聚类一维数据


16

我有一个数据集,我想基于一个变量(没有缺失值)在该数据上创建聚类。我想基于该变量创建3个群集。

使用哪种聚类算法,k均值,EM,DBSCAN等?

我的主要问题是,在什么情况下我应该在EM上使用k-means还是在k-means上使用EM?


1
EM算法是用于对丢失的数据进行最大似然估计的通用工具-您能否更具体地说明它是一种“聚类算法”?

我使用weka作为工具,在聚类算法下,EM被列为算法。对于la脚的问题,我感到抱歉,我是数据挖掘的新手。
阿里

我知道EM算法用于对潜在变量模型(可以认为是“丢失数据”)进行最大似然估计,并且经常使用潜在变量对聚类进行建模。也许这是什么意思。

@macro:您可能想在这里看看:stat.washington.edu/mclust开始。
user603 2011年

3
集群的目的是什么? 与大多数统计问题一样,答案也多种多样,并且知道目的是选择适当或好的问题的基本指南。
ub

Answers:


11

对于一维聚类,K-means算法和EM算法将非常相似。

在K均值中,您首先猜测均值在哪里,然后将每个点分配给具有最均值的聚类,然后根据当前的点分配重新计算均值(和方差),然后更新点的分配,然后更新办法 ...

在EM中,您还应该从均值在哪里开始猜测,然后计算分配的期望值(基本上是每个点在每个聚类中的概率),然后使用期望值更新估计的均值(和方差)作为权重,然后计算新的期望值,然后计算新的均值,...

主要区别在于,将点分配给K-均值的聚类是全有还是全无,其中EM给出组成员资格的比例/概率(一个点可能被视为具有A组的80%概率,A组的18%概率在B组中的概率为2%,在C组中的概率为2%)。如果组之间存在很大的分离,则这两种方法将得出非常相似的结果。但是,如果有相当多的重叠,则EM可能会给出更有意义的结果(如果对方差/标准差感兴趣的话甚至会更多)。但是,如果您只关心分配组成员身份而不关心参数,那么K-means可能会更简单。

为什么不两者都做,看看答案有何不同?如果它们相似,则选择较简单的模型;如果它们不同,则决定将分组与数据和外部知识进行比较。


谢谢greg,您的帖子提供了帮助,我同时应用了这两种方法,看来EM产生的聚类比k-mean好。(我认为主要是因为我拥有的数据是连续的并且没有空白)。我有点困惑,因为我只有一维数据,所以我可能应该进行装箱来对数据进行分类。你怎么看?参数到底是什么意思?它是否引用实例的属性?感谢Ali
Ali

仅EM似乎还不够。您需要对混合物的基础分布的分布进行假设。
tomka

2

在结果方面,EM优于k-均值。

但是,K均值具有更快的运行时间。

如果标准偏差/协方差矩阵近似相等,它们将产生相似的结果。如果您怀疑这是真的,请使用k-means。

数据为非高斯数据时使用DBSCAN。如果使用一维数据,则通常不适用,因为高斯近似值通常在一维中有效。


0

另一种简单的方法是基本上使用一维数组的排序:即遍历每个点并获得在正方向和负方向上与该点相距最小距离的值。例如:

data = [1,2,3,4,5,6,7,8,9,10,12]
k = 5
for a in data:
   print {'group': sorted(k, key=lambda n: abs(n-a))[0:k], 'point': a}

将给出:

{'group': [1, 2, 3, 4, 5], 'point': 1}
{'group': [2, 1, 3, 4, 5], 'point': 2}
{'group': [3, 2, 4, 1, 5], 'point': 3}
{'group': [4, 3, 5, 2, 6], 'point': 4}
{'group': [5, 4, 6, 3, 7], 'point': 5}
{'group': [6, 5, 7, 4, 8], 'point': 6}
{'group': [7, 6, 8, 5, 9], 'point': 7}
{'group': [8, 7, 9, 6, 10], 'point': 8}
{'group': [9, 8, 10, 7, 6], 'point': 9}
{'group': [10, 9, 8, 12, 7], 'point': 10}
{'group': [12, 10, 9, 8, 7], 'point': 12}

哪一点,接近特定点的项目基本上在其组内。该技术中唯一需要考虑的是变量k,它是簇的固定大小:-)。


-2

如果只有一个变量,则无需聚类。您可以根据变量的分布轻松地将观察结果分组。

还是我在这里缺少几点?


5
您能否给出一个具体示例,说明如何根据变量的分布对观察结果进行分组?
阿里

@ composer314:带有直方图?
nico

1
抱歉,我仍然没有关注。如何使用直方图对相关观察进行分组?(我想我可能要问的问题是,实际上是如何在直方图中找到团块的?这类似于频谱峰的选择吗?)
阿里

5
@composer使用直方图甚至数据的核平滑通常不是一种“简便”的群集方法。如果要采用这种方式,则需要拟合有限混合模型。如果您只是想随意看一下直方图,可以使用K均值(也称为Jenks方法,在制图师中很流行)。
ub
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.