时间序列聚类

首先,聚类分为硬聚类(hard clustering)和软聚类(soft clustering),硬聚类将数据分割为几个确定的类别,软聚类为每个数据点指定几个类别。硬聚类又可以分为分层聚类方法(hierarchical clustering methods)和平稳聚类方法(flat clustering methods),分层聚类方法产生数据的嵌套网状分割,平稳聚类产生一个单一的分割,K-MEANS属于平稳聚类。

下面,我们介绍一下分层聚类算法和K-MEANS算法:

分层聚类算法就是对给定数据对象的几何进行层次分解,根据分层分解采用的分解策略,分层聚类法又可以分为凝聚的(agglomerative)和分裂的(divisive)分层聚类。

1.凝聚的分层聚类

它采用自底向上的策略,首先将每一个对象作为一个类,然后根据某种度量(如2个当前类中心点的距离)将这些类合并为较大的类,直到所有的对象都在一个类中,或者是满足某个终止条件时为止,绝大多数分层聚类算法属于这一类,它们只是在类间相似度的定义上有所不同。

2.分裂的分层聚类

它采用与凝聚的分层聚类相反的策略,自顶向下,它首先将所有的对象置于一个类中,然后根据某种度量逐渐细分为较小的类,直到每一个对象自成一个类,或者达到某个终止条件(如达到希望的类个数,或者2个最近的类之间的距离超过了某个阈值)。

分层聚类虽然比较简单,但经常会遇到选择合并点或者分裂点的问题。这种选择非常关键,因为一旦一组对象被合并或者分裂,下一步的工作就是在新形成的类上进行,已做的处理不能撤销,类之间也不能交换对象。如果合并或者分裂的决定不合适,就可能得出低质量的聚类结果。而且,分层聚类算法没有很好的可伸缩性,在决定合并或者分裂之前需要检查和估算大量的对象和类。

k-means算法

k-means算法,也被称为k-均值或k-平均。该算法首先随机地选择k个对象作为初始的k个簇的质心;然后对剩余的每个对象,计算其与各个质心的距离,将它赋给最近的簇,然后重新计算每个簇的质心;这个过程不断重复,直到准则函数收敛。通常采用的准则函数为平方误差和准则函数,即SSE(sum of the squared error),其定义如下:


SSE是数据库所有的对象的平方误差总和,p为数据对象,是簇的平均值。这个准则函数使生成的结果尽可能的紧凑和独立。

下面给出k-means算法的具体步骤:

时间序列聚类_第1张图片

距离D的计算方法

1.欧几里得距离


其意义就是两个元素在欧式空间中的集合距离,因为其直观易懂且可解释性强,被广泛用于标识两个标量元素的相异度。

2.曼哈顿距离


3.闵可夫斯基距离


k-means算法的性能分析

主要优点:

1)是解决聚类问题的一种经典算法,简单、快速。

2)对处理大数据集,该算法是相对可伸缩和高效率的。因为他的复杂度是O(nkt),其中,n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k远小于n且t远小于n。

3)当结果簇是密集的,而簇与簇之间区别明显时,它的效果最好。

主要缺点:

1)必须事先给出k值,但很多时候并不知道数据集应该分为多少个类别才最合适。聚类结果对初值敏感,对于不同的初始值,可能会导致不同结果。

2)初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果。可以多设置一些不同的初值,对比最后的运算结果,一直到结果趋于稳定来解决这一问题,但比较耗时,浪费资源。

3)在簇的平均值被定义的情况下才能使用,这对于处理符号属性的数据不适用。对于噪声和孤立点数据是敏感的,少量的该类数据能够对平均值产生极大的影响。

你可能感兴趣的:(机器学习,时间序列,聚类,k-means)