K-均值算法简介

前段时间把en.wikipedia.org里关于K-means clustering算法的条目翻译了一下,搬到了zh.wikipedia.org里的条目“K-平均算法”下。

后来组内讨论的时候又重新整理了一下要用的内容,放到博客上来吧。
因为打算写一篇K-均值算法下自学习距离度量(distance metric)的文章,还需要有K-均值算法的内容作为铺垫。

本文名为K-均值算法简介,除包含算法内容以外,还包含了K-均值算法的来源、关于K-均值算法的不同视角,以及应用和优缺点方面的内容。

一、算法描述

已知观测集 这里写图片描述,其中每个观测都是一个这里写图片描述维实向量, 这里写图片描述-均值聚类要把这这里写图片描述个观测划分到这里写图片描述个集合中这里写图片描述,使得组内平方和(WCSS within-cluster sum of squares)最小。换句话说,它的目标是找到使得满足下式

这里写图片描述

其中 这里写图片描述这里写图片描述中所有点的均值。
注:这个 问题本身是NP-难的,所以出现了K-均值这样的启发式算法来求解。

1.1初始化
通常使用的初始化方法有Forgy随机划分(Random Partition)方法:
(1)Forgy方法随机地从数据集中选择 个观测点作为初始的均值点;
(2)随机划分方法则随机地为每一观测指定所属聚类,然后运行“更新(Update)”步骤,计算随机分配的各聚类的图心,作为初始的均值点。

特点:Forgy方法易于使得初始均值点散开,随机划分方法则把均值点都放到靠近数据集中心的地方。
适用性:随机划分方法一般更适用于K-调和均值和模糊K-均值算法;Forgy方法更适用于期望-最大化(EM)算法和标准K-均值算法。

K-均值是一个启发式算法,无法保证收敛到全局最优解,并且聚类的结果会依赖于初始的聚类。又因为算法的运行速度通常很快,所以一般都以不同的起始状态运行多次来得到更好的结果。

1.2运行时
已知初始的这里写图片描述个均值点这里写图片描述 ,算法的按照下面两个步骤交替进行:
分配(Assignment)
将每个观测分配到聚类中,使得组内平方和(WCSS)达到最小。

这里写图片描述

因为这一平方和就是平方后的欧氏距离,所以很把观测点分配到离它最近的均值点即可:
这里写图片描述

(数学上,这意味依照由这些均值点生成的Voronoi图来划分上述观测点)
其中每个 这里写图片描述都只被分配到一个确定的聚类 这里写图片描述中(在理论上它可能被分配到2个或者更多的聚类中)。

更新(Update)
计算上步得到的聚类中,每一聚类观测点的图心,作为新的均值点。

这里写图片描述

因为算术平均是最小平方估计,所以这一步同样减小了目标函数组内平方和(WCSS)的值。

这一算法将在对于观测的分配不再变化时收敛。由于交替进行的两个步骤都会减小目标函数WCSS的值,并且分配方案只有有限种,所以算法一定会收敛于某一(局部)最优解。
注意:使用这一算法无法保证得到全局最优解。

算法为把观测点分配到距离最近的聚类。
目标函数是组内平方和(WCSS),而且按照“最小平方和”来分配观测,确实是等价于按照最小欧氏距离来分配观测的。
如果使用不同的距离函数来代替(平方)欧氏距离,可能使得算法无法收敛。然而,使用不同的距离函数,也能得到K-均值聚类的其他变体,如球体K-均值算法和K-中心点算法。

二、算法思想[1]

算法的思想可以追溯到1957年,术语“K-均值”在1967年被首次使用。不过,标准算法其实是由Stuart Lloyd在1957年,作为一种脉冲编码调制技术提出的(但1982年才被AT&T实验室公开出版)。在1965年,E.W.Forgy发表了本质上相同的方法,所以这一算法有时被称为Lloyd-Forgy方法。

下面是问题原型:

脉冲编码调制就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。即对模拟信号先抽样,再对样值幅度量化,编码的过程。
给定一些要处理的信号,那些量化之后的值应该与……
It has long been realized that in pulse-code modulation(PCM), with a given ensemble of signals to handle, the quantum values should be spaced more closely in the voltage regions where the signal amplitude is more likely to fall.
也就是说,这其实是一个聚类问题:对于整个电压轴,需要找出这里写图片描述个离散的电压值,使得信号围绕这这里写图片描述个电压值的分布成为这里写图片描述个聚类。(原始文献中的讨论就视这里写图片描述为预先设定的值)

三、视角

3.1 可视为期望-最大化算法的特例
“分配”—即—“期望”
“更新”—即—“最大化”
可以看到,这一算法实际上是广义期望-最大化算法(GEM)的一个变体。

3.2 可视为空间划分的Voronoi图
链接到网页[3]。

3.3 与其它统计机器学习方法的关系

K-均值问题很容易就能一般化为高斯混合模型,另一个K-均值算法的推广则是K-SVD算法。后者把数据点视为“编码本向量”的稀疏线性组合,而K-均值对应于使用单编码本向量的特殊情形。

此外,K-均值算法还与下列方法有一定联系

(1)Mean Shift 聚类
基本的Mean Shift聚类要维护一个与输入数据集规模大小相同的数据点集。初始时,这一集合就是输入集的副本。然后对于每一个点,用一定距离范围内的所有点的均值来迭代地替换它。与之对比,K-均值把这样的迭代更新限制在(通常比输入数据集小得多的)K个点上,而更新这些点时,则利用了输入集中与之相近的所有点的均值。
还有一种与K-均值类似的Mean shift算法,即似然Mean shift,对于迭代变化的集合,用一定距离内在输入集中所有点的均值来更新集合里的点。

(2)主成分分析(PCA)
有研究表明,K-均值的放松形式解(由聚类指示向量表示),可由主成分分析中的主成分给出。
且主成分分析中,主方向张成的子空间与聚类图心空间是等价的。不过,主成分分析是K-均值聚类的有效放松形式并不是一个新的结果,并且还有研究结果直接给出了关于“聚类图心子空间是由主成分方向张成的”这一论述的反例。

(3)独立成分分析(ICA)
在稀疏假设下以及输入数据经过白化处理后,K-均值得到的解就是独立成分分析的解。这一结果对于解释K-均值在特征学习方面的成功应用很有帮助。

(4)双向过滤
K-均值算法隐含地假设输入数据的顺序不影响结果。双向过滤与K-均值算法和Mean shift算法类似之处在于它同样维护着一个迭代更新的数据集(亦是被均值更新)。
然而,双向过滤限制了均值的计算只包含了在输入数据中顺序相近的点,这使得双向过滤能够被应用在空间安排非常重要的图像去噪等问题中。

四、应用与优缺点

K-均值算法在向量量化、聚类分析、特征学习、计算机视觉等领域都有应用,也经常作为其他算法的预处理步骤使用。

使K-均值算法效率高的两个关键特点同时也常被视为它最大的缺陷:
(1)聚类数目k是一个输入参数。选择不恰当的k值可能会导致糟糕的聚类结果。这也是为什么要进行特征检查来决定数据集的聚类数目了。
(2)收敛到局部最优解,可能导致与直觉相反的错误结果。

K-均值算法的一个重要的局限性在于它的聚类模型:
这一模型的基本思想在于:得到相互分离的球状聚类,在这些聚类中,均值点趋向收敛于聚类中心。 一般会希望得到的聚类大小大致相当,这样把每个观测都分配到离它最近的均值点对应的聚类就是正确的分配方案。

五、其他[2]

  • K-均值算法的变体
  • 复杂度

参考文献
[1]STUART P. LLOYD.Least Squares Quantization in PCM[J].IEEE TRANSACTIONSON INFORMATION THEORY, 1982, IT-28(2):129-138.
[2]维基百科.K-平均算法[EB/OL].2015[2015-4-8].http://zh.wikipedia.org/zh/K%E5%B9%B3%E5%9D%87%E7%AE%97%E6%B3%95.
[3]VoronoiDiagram[EB/OL].[2015-4-8].
http://www.csie.ntnu.edu.tw/~u91029/VoronoiDiagram.html.

【摘要】 目前,对于聚类问题的研究普遍存在于社会生活中的各个领域,如模式识别、图像处理、机器学习和统计学等。关于对生活中各种各样的数据的聚类分类问题已经成为众多学者的研究热题之一。聚类和分类的区别在于,聚类没有任何先验知识可循,要通过数据自身的特点,将数据自动的划分到不同的类别中。聚类的基本形式定义为“在已给的数据集合中寻找数据点集的同类集合。每一个集合叫做一个类,并确定了一个区域,在区域中对象的密度高于其他区域中的密度。”聚类方法有很多种,其中最简单的形式便是划分式聚类,划分式聚类试图将给定的数据集合分割成不相交的子集,使具体的聚类准则是最优的。实际中应用最广泛的准则是聚类误差平方和准则,即对于每一个点都计算它到相应的聚类中心点的平方距离,并对数据集合上的所有点的距离进行求和。一种最流行的基于最小聚类误差平法和的聚类方法是K-均值算法。然而,K-均值算法是一个局部搜索的算法,它存在一些严重的不足,比如K值需要预先确定、聚类结果的好坏依赖于初始点的选取。为了解决这些问题,这个领域的研究者开发了很多其他的一些技术,试图基于全局最优化的方法来解决聚类问题(比如模拟退火算法、遗传算法等)。然而这些技术并没有得到广泛的认可,在许多实际应用中应用最多的还是反复利用K-均值算法。K-均值算法是一种基于划分的聚类算法,它通过不断的迭代来进行聚类,当算法收敛到一个结束条件时就终止迭代过程,输出聚类结果。由于其算法思想简便,又容易实现对大规模数据的聚类,因此K-均值算法已成为一种最常用的聚类算法之一K-均值算法能找到关于聚类误差的局部的最优解,是一个能应用在许多聚类问题上的快速迭代算法。它是一种以点为基础的聚类算法,以随机选取的初始点为聚类中心,迭代地改变聚类中心来使聚类误差最小化。这种方法最主要的不足就是对于初始聚类中心点位置的选取敏感。因此,为了得到近似最优解,初始聚类中心的位置必须安排的有差异。本文就K-均值聚类算法聚类结果依赖于初始中心,而且经常收敛于局部最优解,而非全局最优解,以及聚类类别数K需要事先给定这两大缺憾展开研究。提出了分别解决这两个问题的算法各一个首先,本文将Hae-Sang等人的快速K-中心点算法确定初始中心点的思想应用于Aristidis Likas的全局K-均值聚类算法中下一个簇的初始中心选择上,提出一种改进的全局K-均值聚类算法,试图寻找一个周围样本点分布比较密集,且距离现有簇的中心都较远的样本点,将其作为下一个簇的最佳初始中心。通过对UCI机器学习数据库数据及人工随机模拟数据的测试,证明本文算法与Aristidis Likas的全局K-均值聚类算法和快速全局K-均值聚类算法比,在不影响聚类误差平方和的前提下,聚类时间更短,具有更好的性能。同时,本文介绍了自组织特征映射网络(Self-Organizing Feature Map, SOFM)的相关内容,SOFM网络是将多维数据映射到低维规则网格中,可以有效的进行大规模的数据挖掘,其特点是速度快,但是分类的精度不高。而K-均值聚类算法,是一种通过不断迭代调整聚类质心的算法,其特点是精度高,主要用于中小数据集的分类,但是聚类速度比较慢。因此,本文在分析了基于自组织特征映射网络聚类的学习过程,权系数自组织过程中邻域函数,以及学习步长的一般取值问题后,给出了基于自组织特征映射网络聚类实现的具体算法,将自组织特征网络与K-均值聚类算法相结合,提出了一种基于自组织映射网络的聚类方法,来实现对输入模式进行聚类,实现K-均值聚类算法聚类类别数的自动确定。同时通过实验进行仿真实现,证明该算法的有效性。 还原 【Abstract】 Clustering is a fundamental problem that frequently arises in a great variety of fields such as pattern recognition, image processing, machine learning and statistics. In general, clustering is defined as the problem of finding homogeneous groups of samples in a given data set. Each of these groups is called a cluster and can be defined as a region in which the density of exemplars is locally higher than in other regions.The simplest form of clustering is partition clustering w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值