机器学习11 聚类

13 聚类

内容:
无监督学习
K-均值算法
优化目标
随机初始化
选择聚类数

13.1 无监督学习

  1. 与监督学习区别:监督学习数据有标签(就是你知道它是属于哪一类);无监督学习数据没有标签(你不知道这些数据分别属于哪一类或者可以分成哪几类,需要通过学习自己判断)
  2. 聚类算法:能够将这些数据分成几类的算法。他是非监督学习算法的其中一种

13.2 K-均值算法

  1. 特点:算法接受一份未标记的数据集,然后将数据聚类成不同的组。这是一个迭代算法。
  2. 聚类中心:随机选择K个随机的点。
  3. 算法步骤:



    Repeat {
    for i = 1 to m
    c(i) := index (form 1 to K) of cluster centroid closest to x(i)
    for k = 1 to K
    μk := average (mean) of points assigned to cluster k
    }
    算法分为两个步骤,第一个 for 循环是赋值步骤,即:对于每一个样例,计算其应该属于的类。第二个 for 循环是聚类中心的移动,即:对于每一个类,重新计算该类的质心。

  4. 例子


  5. 应用
    可以很便利地用于将数据分为许多不同组,即使在没有非常明显区分的组群的情况下也可以。

    下图所示的数据集包含身高和体重两项特征构成的,利用 K-均值算法将数据分为三类,用于帮助确定将要生产的 T-恤衫的三种尺寸。

13.3 优化目标

  1. 代价函数(畸变函数)




    回顾刚才给出的:K-均值迭代算法,第一个循环是用于减小()引起的代价,而第二个循环则是用于减小引起的代价。迭代的过程一定会是每一次迭代都在减小代价函数。

13.4 随机初始化

介绍如何随机初始化K个聚类中心点(此时假设我们已经知道K应该取多少,目的是初始化这几个点的位置)

  1. 我们应该选择 < ,即聚类中心点的个数要小于所有训练集实例的数量
  2. 随机选择个训练实例,然后令个聚类中心分别与这个训练实例相等

然而仍然存在下图的问题



它有可能会停留在一个局部最小值处,而这取决于初始化的情况。
解决方法:多次运行 K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行 K-均值的结果,选择代价函数最小的结果。
缺点:在较小的时候(2~10)还是可行的,但是如果较大,这么做也可能不会有明显地改善。

13.5 选择聚类数

  1. 肘部法则

    原理:改变值,也就是聚类类别数目的总数,每次计算畸变函数J,得到K与J的图像。

    比如左图,在K = 3的位置想一个人的肘部,那么使用三个聚类来进行操作时正确的。

    然而也会出现右图的情况,观察不到“肘部”

你可能感兴趣的:(机器学习11 聚类)