聚类概念:

聚类:简单地说就是把相似的东西分到一组。同 Classification (分类)不同,分类应属于监督学习。而在聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到一起,因此,一个聚类算法通常只需要知道如何计算相似 度就可以开始工作了。聚类不需要使用训练数据进行学习,应属于无监督学习。

我们经常接触到的聚类分析,一般都是数值聚类,一种常见的做法是同时提取 N 种特征,将它们放在一起组成一个 N 维向量,从而得到一个从原始数据集合到 N 维向量空间的映射,然后基于某种规则进行分类,在该规则下,同组分类具有最大的相似性。

需要解决的问题:

K-Means算法主要解决的问题如下图所示。我们可以看到,在图的左边有一些点,我们用肉眼可以看出来有四个点群,但是我们怎么通过计算机程序找出这几个点群来呢?

算法概要:

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聚类算法主要分为三个步骤:

(1)第一步是为待聚类的点寻找聚类中心

(2)第二步是计算每个点到聚类中心的距离,将每个点聚类到离该点最近的聚类中去

(3)第三步是计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心,反复执行(2)、(3),直到聚类中心不再进行大范围移动或者聚类次数达到要求为止。

求点群中心的公式:

假设我们提取到原始数据的集合为,并且每个xi为d维的向量,K-means聚类的目的就是,在给定分类组数k(k ≤ n)值的条件下,将原始数据分成k类 S = ,在数值模型上,即对以下表达式求最小值:

这里表示分类的平均值。

:arg表示使目标函数取最小值时的变量值

设我们一共有 N 个数据点需要分为 K 个 cluster ,k-means 要做的就是最小化

其中  rnk在  在数据点 n 被归类到 cluster k 的时候为 1 ,否则为 0 。直接寻找  rnk  和 uk  最小化 j 并不容易,不过我们可以采取迭代的办法:先固定 uk,选择最优的 rnk,很容易看出,只要将数据点归类到离他最近的那个中心就能保证 j  最小。下一步则固定 rnk ,再求最优的 uk 。将j 对 uk 求导并令导数等于零,很容易得到 j 最小的时候uk 应该满足:

亦即 uk的值应当是所有 cluster k 中的数据点的平均值。

首先 3 个中心点被随机初始化,所有的数据点都还没有进行聚类,默认全部都标记为红色,如下图所示:

然后进入第一次迭代:按照初始的中心点位置为每个数据点着上颜色,重新计算 3 个中心点,结果如下图所示:

可以看到,由于初始的中心点是随机选的,这样得出来的结果并不是很好,接下来是下一次迭代的结果:

可以看到大致形状已经出来了。再经过两次迭代之后,基本上就收敛了,最终结果如下:

不过正如前面所说的那样 k-means 也并不是万能的,虽然许多时候都能收敛到一个比较好的结果,但是也有运气不好的时候会收敛到一个让人不满意的局部最优解,例如选用下面这几个初始中心点:

最终会收敛到这样的结果:

最新文章

  1. 数据库基础知识(1)--数据库php连接
  2. Linux Kernel 3.11 正式版发布
  3. paypal IPN 接口返回INVALID参数可能问题
  4. HDU 5768:Lucky7(中国剩余定理 + 容斥原理)
  5. 线程入门之yield
  6. Delphi 操作word 表格
  7. 对Cost (%CPU) 粗略的理解
  8. LogBack入数据库重写
  9. 【转】自动布局之autoresizingMask使用详解(Storyboard&Code)
  10. javascrit字符串截取
  11. c++指针存储应用程序和释放内存的问题
  12. Spring源码解析三:IOC容器的依赖注入
  13. Flume-ng源码解析之Sink组件
  14. redis 持久化之 RDB
  15. IDEA写scala简单操作
  16. PEP8规范
  17. html5 viewport使用
  18. PHP图像处理
  19. Delphi按名字调用方法高级解决方案
  20. Pg168-1

热门文章

  1. windows server 2012将计算机图标添加到桌面(图文教程)(转)
  2. Linux的PCI驱动分析
  3. pl/sql游标
  4. Node.js meitulu图片批量下载爬虫1.01版
  5. Selenium webdriver Java firefox 路径设置问题
  6. 微信小程序 - 文字走马灯
  7. 查看tomcat启动文件都干点啥---catalina.bat
  8. MongoDB查询经典方式
  9. CSS3怎样实现超出指定文本以省略号显示效果
  10. ORCAD应用小技巧