13 聚类
内容:
无监督学习
K-均值算法
优化目标
随机初始化
选择聚类数
13.1 无监督学习
- 与监督学习区别:监督学习数据有标签(就是你知道它是属于哪一类);无监督学习数据没有标签(你不知道这些数据分别属于哪一类或者可以分成哪几类,需要通过学习自己判断)
- 聚类算法:能够将这些数据分成几类的算法。他是非监督学习算法的其中一种
13.2 K-均值算法
- 特点:算法接受一份未标记的数据集,然后将数据聚类成不同的组。这是一个迭代算法。
- 聚类中心:随机选择K个随机的点。
-
算法步骤:
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 循环是聚类中心的移动,即:对于每一个类,重新计算该类的质心。 -
例子
-
应用
下图所示的数据集包含身高和体重两项特征构成的,利用 K-均值算法将数据分为三类,用于帮助确定将要生产的 T-恤衫的三种尺寸。
可以很便利地用于将数据分为许多不同组,即使在没有非常明显区分的组群的情况下也可以。
13.3 优化目标
-
代价函数(畸变函数)
回顾刚才给出的:K-均值迭代算法,第一个循环是用于减小()引起的代价,而第二个循环则是用于减小引起的代价。迭代的过程一定会是每一次迭代都在减小代价函数。
13.4 随机初始化
介绍如何随机初始化K个聚类中心点(此时假设我们已经知道K应该取多少,目的是初始化这几个点的位置)
- 我们应该选择 < ,即聚类中心点的个数要小于所有训练集实例的数量
- 随机选择个训练实例,然后令个聚类中心分别与这个训练实例相等
然而仍然存在下图的问题
它有可能会停留在一个局部最小值处,而这取决于初始化的情况。
解决方法:多次运行 K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行 K-均值的结果,选择代价函数最小的结果。
缺点:在较小的时候(2~10)还是可行的,但是如果较大,这么做也可能不会有明显地改善。
13.5 选择聚类数
-
肘部法则
原理:改变值,也就是聚类类别数目的总数,每次计算畸变函数J,得到K与J的图像。
比如左图,在K = 3的位置想一个人的肘部,那么使用三个聚类来进行操作时正确的。
然而也会出现右图的情况,观察不到“肘部”