K-MEANS算法总结。K-MEANS算法总结。

K-MEANS算法

K-MEANS算法

摘要:当数额挖掘被,K-Means算法是一样种
cluster analysis
的算法,其主要是来算数据聚集的算法,主要透过不停地得到离种子点最近均值的算法。

摘要:每当多少挖掘被,K-Means算法是千篇一律栽
cluster analysis
的算法,其关键是来计算数据聚集之算法,主要透过持续地抱离种子点最近均值的算法。

每当多少挖掘被,K-Means算法是同样栽cluster
analysis的算法,其重点是来测算数据聚集的算法,主要通过持续地收获离种子点最近均值的算法。

于多少挖掘中,K-Means算法是平栽cluster
analysis的算法,其利害攸关是来算数据聚集的算法,主要透过不断地得到离种子点最近均值的算法。

问题

K-Means算法主要解决之问题要下图所显示。我们得看来,在祈求的左手有一对接触,我们所以肉眼可以看下有四单点群,但是我们怎么通过电脑程序找来当下几乎独点多多来啊?于是就出现了我们的K-Means算法(Wikipedia链接)

新普京在线娱乐 1

K-Means要缓解之题材

算法概要

这算法其实很简短,如下图所示: 

新普京在线娱乐 2

打高达图被,我们可看,A,B,C,D,E是五单当觊觎中点。而灰色的触及是咱们的种子点,也尽管是我们因此来搜寻点群的点。有半点只种子点,所以K=2。

下一场,K-Means的算法如下:

  1. 随机在图备受取K(这里K=2)个种子点。
  2. 下一场针对图被的享有点要到就K个种子点的离开,假如点Pi离种子点Si最近,那么Pi属于Si点群。(上图被,我们好看到A,B属于地方的种子点,C,D,E属于下面中部的种子点)
  3. 接通下,我们若活动种子点到属他的“点群”的中心。(见图及之老三步)
  4. 下一场再第2)和第3)步,直到,种子点没有运动(我们得看来图备受的季步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)。

这算法很粗略,但是出来细节我而取一下,求距离的公式我弗说了,大家有初中毕业水平的口还应该明了怎么竟的。我重点想说一下“求点多多中心的算法”。

问题

K-Means算法主要解决的问题要下图所展示。我们好看看,在觊觎的左手有一些触及,我们之所以肉眼可以拘留出来有四只点群,但是咱怎么通过计算机程序找有当下几乎个点多多来啊?于是就出现了我们的K-Means算法(Wikipedia链接)

新普京在线娱乐 3

K-Means要缓解之题材

算法概要

以此算法其实大简短,如下图所示: 

新普京在线娱乐 4

从高达图被,我们可以看,A,B,C,D,E是五只当觊觎中点。而灰色的触及是咱们的种子点,也便是我们就此来寻找点群的点。有点儿只种子点,所以K=2。

下一场,K-Means的算法如下:

  1. 轻易在图备受取K(这里K=2)个种子点。
  2. 然后对图备受的备点请求到立刻K个种子点的距离,假如点Pi离种子点Si最近,那么Pi属于Si点群。(上图被,我们得看到A,B属于地方的种子点,C,D,E属于下面中部的种子点)
  3. 连下去,我们若活动种子点到属他的“点群”的骨干。(见图及之老三步)
  4. 下一场再第2)和第3)步,直到,种子点没有运动(我们好看看图备受的季步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)。

本条算法很粗略,但是发生几细节我要是取一下,求距离的公式我莫说了,大家有初中毕业水平的人数都应当明白怎么竟的。我最主要想说一下“求点多多为主的算法”。

求点群中心的算法

一般的话,求点众中心点的算法你可充分粗略的下各个点之X/Y坐标的平均值。不过,我这边想报大家别三个求中心点的的公式:

1)Minkowski
Distance公式——
λ可以无限制取值,可以是负数,也得是正数,或是无穷大。

新普京在线娱乐 5

2)Euclidean
Distance公式
——也就算是第一只公式λ=2的情形

新普京在线娱乐 6

3)CityBlock
Distance公式
——也就是是率先个公式λ=1的情事

新普京在线娱乐 7

随即三只公式的要中心点来一对免均等的地方,我们看下图(对于第一单λ在0-1次)。

新普京在线娱乐 8新普京在线娱乐 9新普京在线娱乐 10

(1)Minkowski
Distance     (2)
Euclidean Distance    (3) CityBlock
Distance**

上面立几个图的疏忽是她们是怎么个逼近中心的,第一独图为星形的点子,第二个图为同心圆的主意,第三单图为菱形的法门。

K-Means的演示

若你以”K
Means
Demo“为重中之重字到Google里查看你可以查到很多示范。这里推荐一个演示:http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/AppletKM.html

操作是,鼠标左键是初始化点,右键初始化“种子点”,然后勾选“Show
History”可以看看同样步一步之迭代。

注:这个演示的链接也来一个对的K
Means
Tutorial。

求点群中心的算法

一般的话,求点多中心点的算法你可老简单的使各个点之X/Y坐标的平均值。不过,我此想报大家其他三个求中心点的的公式:

1)Minkowski
Distance公式——
λ可以肆意取值,可以是负数,也可是正数,或是无穷大。

新普京在线娱乐 11

2)Euclidean
Distance公式
——也不怕是率先单公式λ=2的情

新普京在线娱乐 12

3)CityBlock
Distance公式
——也就是首先只公式λ=1的事态

新普京在线娱乐 13

及时三个公式的伸手中心点发生有休同等的地方,我们看下图(对于第一个λ在0-1里)。

新普京在线娱乐 14新普京在线娱乐 15新普京在线娱乐 16

(1)Minkowski
Distance     (2)
Euclidean Distance    (3) CityBlock
Distance**

面这几独图的忽视是他们是怎么个逼近中心的,第一单图为星形的措施,第二只图为同心圆的艺术,第三独图为菱形的方式。

K-Means的演示

如果你因”K
Means
Demo“为主要字到Google里查看你可查到很多演示。这里推荐一个示范:http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/AppletKM.html

操作是,鼠标左键是初始化点,右键初始化“种子点”,然后勾选“Show
History”可以看来同一步一步的迭代。

流淌:这个演示的链接也发出一个科学的K
Means
Tutorial。

K-Means++算法

K-Means主要发生有限单最要害的瑕疵——都同初始值有关:

  • K是事先给定的,这个K值的选定是生难以估计的。很多下,事先并不知道给定的数据集应该分为小只品类才不过贴切。(ISODATA算法通过类似的活动合并及分裂,得到比较合理的种类数目K)

  • K-Means算法需要因此起来随机种子点来搞,这个自由种子点太重大,不同的即兴种子点会来获取完全两样之结果。(K-Means++算法可用来缓解者问题,其好使得地挑选初始点)

自以这边要说一样下K-Means++算法步骤:

  1. 先行从咱的数据库随机挑个随机点当“种子点”。
  2. 对于每个点,我们都盘算其及近年来底一个“种子点”的离D(x)并保留于一个数组里,然后将这些离开加起得到Sum(D(x))。
  3. 然后,再获一个自由值,用权重的法子来收获计算下一个“种子点”。这个算法的落实是,先取一个能落在Sum(D(x))中之人身自由值Random,然后据此Random -= D(x),直到其<=0,此时的触发就是是下一个“种子点”。
  4. 重复第(2)和第(3)步截至有的K个种子点都为挑选出来。
  5. 进行K-Means算法。

相关的代码你可在此地找到“implement
the K-means++
algorithm”(墙)另,Apache的通用数据学库也落实了这无异于算法

K-Means++算法

K-Means主要发生星星点点单顶要紧的先天不足——都同初始值有关:

  • K是事先给定的,这个K值的选定是挺难以估计的。很多时分,事先并不知道给定的数据集应该分为小个类型才不过适合。(ISODATA算法由此类似的自行合并及瓦解,得到比较合理的花色数目K)

  • K-Means算法需要因此起随机种子点来来,这个自由种子点太重要,不同的肆意种子点会产生获得完全两样的结果。(K-Means++算法好据此来缓解者题材,其好使得地摘初始点)

自以此地要说一样下K-Means++算法步骤:

  1. 先行由我们的数据库随机挑个随机点当“种子点”。
  2. 对每个点,我们且算其同近年来底一个“种子点”的离D(x)并保留在一个数组里,然后将这些离开加起得到Sum(D(x))。
  3. 然后,再获一个无限制值,用权重的主意来获取计算下一个“种子点”。这个算法的实现是,先取一个能落在Sum(D(x))中之肆意值Random,然后用Random -= D(x),直到该<=0,此时的触发便是生一个“种子点”。
  4. 重复第(2)和第(3)步截至有的K个种子点都给挑选出来。
  5. 进行K-Means算法。

连锁的代码你可在此地找到“implement
the K-means++
algorithm”(墙)另,Apache的通用数据学库也落实了立即无异于算法

K-Means算法应用

观望此,你会说,K-Means算法看来十分简单,而且接近就是是在戏耍坐标点,没什么实际用处。而且,这个算法缺陷很多,还免使人工呢。是的,前面的例证只是游戏二维坐标点,的确没什么意思。但是若想转手底的几乎独问题:

1)如果不是二维的,是多维的,如5维的,那么,就不得不用微机来算了。

2)二维坐标点的X,Y
坐标,其实是平种植向量,是一模一样种数学抽象。现实世界面临过多特性是足以抽象成向量的,比如,我们的年,我们的爱慕好,我们的货品,等等,能抽象成向量的目的就是可以让电脑知道某片单属于性间的偏离。如:我们觉得,18春秋的人口去24春秋之人之距离而于去12年的离开要贴近,鞋子是商品离衣服者商品之去要较电脑要守,等等。

若能够把实际世界之体的习性抽象成向量,就足以为此K-Means算法来分类了

在《k均值聚类(K-means)》 这首文章被选举了一个分外对的采用例子,作者用亚洲15付出足球队的2005年届1010年之武功做了一个向量表,然后据此K-Means把球队归类,得出了下的结果,呵呵。

  • 亚洲甲级:日本,韩国,伊朗,沙特
  • 亚洲欠佳:乌兹别克斯坦,巴林,朝鲜
  • 亚洲三流动:中国,伊拉克,卡塔尔,阿联酋,泰国,越南,阿曼,印尼

实质上,这样的事情例子还有很多,比如,分析一个企业之客户分类,这样可针对不同的客户使用不同之商业策略,或是电子商务中分析商品相似度,归类商品,从而得以采用部分不比之销售策略,等等。

 

总结:

1. 算法流程

   
输入:聚类个数k,以及富含 n个数据对象的数据库。  
输出:满足方差最小标准的k个聚类。
 (1)从n个数据对象任意选取k个对象作为初始聚类中心
  
(2)计算每个对象同聚类中心的离开;并基于绝小去又对相应对象进行剪切
  
(3)重新计算每个聚类的均值作为新的聚类中心
  
(4)循环(2)到(3)直到每个聚类不再发生变化为止

2.
算法分析

   
K-Means的优化目标可以代表也:
    新普京在线娱乐 17
   
其中,x_n表示数据对象,μ_k表示中心点,r_nk以数据点n分配到类别k的当儿也1,没有分配至类别k的时光为0。

   
整个算法通过迭代计量,找到适合的r_nk和μ_k来,使得J最小。
   
算法流程的亚步,固定μ_k,更新r_nk,将每个数据对象放置与其最近的聚类中心的型吃,自然就无异步能够管在固定μ_k的状下,J的值降到了最好小。
   
算法流程的老三步,固定r_nk,更新μ_k,此时J对μ_k(实际上是μ_0,μ_1,…分别求导)求导并使结果相当吃零,得到:
  
 新普京在线娱乐 18 
   
即,当新的中坚点取每个门类吃的中心值的下,每个项目中的正经去下降最为多。J是颇具种类距离内的偏离之和,因此保证了的固定r_nk的景下,J的值降到了极其小。
   
两独步骤,J的价都以下滑,随着迭代次数多J的值会下降到一个尽小值。

3.
收场条件

   
K-Means迭代的规格可以出如下几个:
    ·
每个聚类内部因素不以变,这是无限精彩的情况了。
    ·
前后两不行迭代,J的值相差小于某个阈值。
    ·
迭代超过一定之次数。

4.
缺点

    ·
K值的设定难以估计,如果数量实际上是10只类别,设K=20,那么得的结果充分可能坏,如果要K=10,那么得的结果好可能会见老好。
    ·
K确定了下,初始中心也是一个问题,K个中心一旦选定了,就控制了聚类结果,选的好,聚类出来的结果虽好。
   
个人觉得要的症结是随即点儿独,相应的吧闹一部分更上一层楼方式,这里不涉及了,具体而参见参考中之百度百科_K-Means。

5.
重点

   
本文主要要发生星星点点个:
   
K-Means的老三只竣工条件(不转,J值变化较小,迭代次数)和片个毛病(K值,K个中心点)。

末尾给一个异常好之算法的幻灯片:http://www.cs.cmu.edu/~guestrin/Class/10701-S07/Slides/clustering.pdf

 

K-Means算法应用

视此,你会说,K-Means算法看来非常简单,而且接近就是是以耍坐标点,没什么实际用处。而且,这个算法缺陷很多,还未设人工呢。是的,前面的例证只是玩玩二维坐标点,的确没什么意思。但是你想转底下的几只问题:

1)如果未是二维的,是多维的,如5维的,那么,就不得不用微机来算了。

2)二维坐标点的X,Y
坐标,其实是相同种植向量,是同种数学抽象。现实世界面临有的是性质是足以抽象成向量的,比如,我们的年华,我们的喜好,我们的货色,等等,能抽象成向量的目的就是是可以被电脑知道某片单属于性间的离。如:我们看,18岁的人口去24春之人之偏离要比去12夏之距离而临近,鞋子是商品离衣服是商品之离而于电脑要守,等等。

苟会将实际世界的物体的习性抽象成于量,就好用K-Means算法来分类了

在《k均值聚类(K-means)》 这首文章被举了一个深对的下例子,作者用亚洲15开发足球队的2005年到1010年的武功做了一个向量表,然后据此K-Means把球队归类,得出了底的结果,呵呵。

  • 亚洲一等:日本,韩国,伊朗,沙特
  • 亚洲潮:乌兹别克斯坦,巴林,朝鲜
  • 亚洲三流:中国,伊拉克,卡塔尔,阿联酋,泰国,越南,阿曼,印尼

其实,这样的政工例子还有多,比如,分析一个商店之客户分类,这样好对不同的客户使用不同之买卖策略,或是电子商务中分析商品相似度,归类商品,从而得以采取一些异之销售策略,等等。

 

总结:

1. 算法流程

   
输入:聚类个数k,以及富含 n个数据对象的数据库。  
输出:满足方差最小标准的k个聚类。
 (1)从n个数据对象任意选取k个对象作为开聚类中心
  
(2)计算每个对象和聚类中心的去;并依据绝小去新普京在线娱乐还对相应对象进行私分
  
(3)重新计算每个聚类的均值作为新的聚类中心
  
(4)循环(2)到(3)直到每个聚类不再发生变化为止

2.
算法分析

   
K-Means的优化目标可以象征也:
    新普京在线娱乐 19
   
其中,x_n表示数据对象,μ_k表示中心点,r_nk于数据点n分配到类别k的时段也1,没有分配到类别k的时候为0。

   
整个算法通过迭代计量,找到合适的r_nk和μ_k来,使得J最小。
   
算法流程的第二步,固定μ_k,更新r_nk,将每个数据对象放置与其最近之聚类中心的种吃,自然就同一步能够保证在固定μ_k的情况下,J的值降到了无限小。
   
算法流程的老三步,固定r_nk,更新μ_k,此时J对μ_k(实际上是μ_0,μ_1,…分别求导)求导并叫结果当给零,得到:
  
 新普京在线娱乐 20 
   
即,当新的中坚点取每个类别吃的中心值的时候,每个门类中的业内去下降最为多。J是颇具项目距离内的偏离之和,因此保证了的固定r_nk的景象下,J的值降到了无与伦比小。
   
两单步骤,J的值都于减低,随着迭代次数增多J的值会下降到一个顶小值。

3.
竣工条件

   
K-Means迭代的规则好生出如下几只:
    ·
每个聚类内部因素不以扭转,这是极度妙之景况了。
    ·
前后两软迭代,J的价值相差小于某个阈值。
    ·
迭代超过一定之次数。

4.
缺点

    ·
K值的设定难以估计,如果数据实际上是10单门类,设K=20,那么得的结果好可能坏,如果一旦K=10,那么得的结果大可能会见十分好。
    ·
K确定了然后,初始中心也是一个题材,K个中心而选定了,就决定了聚类结果,选的好,聚类出来的结果就是哼。
   
个人认为主要的短处是马上有限独,相应的为生一对更上一层楼方式,这里不干了,具体可参见参考中的百度百科_K-Means。

5.
重点

   
本文主要要来三三两两独:
   
K-Means的老三单了断条件(不成形,J值变化于小,迭代次数)和简单独缺陷(K值,K个中心点)。

最后为一个生好的算法的幻灯片:http://www.cs.cmu.edu/~guestrin/Class/10701-S07/Slides/clustering.pdf

 

相关文章