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

 

相关文章