无监督学习(聚类)
- 前言
- 一、K-均值算法
- 1、定义
- 2、优化目标
- 二、使用技巧
- 1、随机初始化
- 2、选择聚类数
- 总结
前言
前面我们介绍了线性回归,逻辑回归,SVM等都是监督学习的算法,下面我们来介绍第一个非监督学习的算法——聚类(Clustering)。在非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中,然后我们告诉这个算法,为我们找找这个数据的内在结构给定数据。我们可能需要某种算法帮助我们寻找一种结构。这种算法就被称为聚类算法。
一、K-均值算法
1、定义
K均值聚类算法是先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。
K-均值是一个迭代算法,假设我们想要将数据聚类成 n 个组,其方法为:
首先选择K个随机的点,称为聚类中心(cluster centroids);对于数据集中的每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类。计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置。
2、优化目标
K-均值最小化问题,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此 K-均值的代价函数(又称畸变函数 Distortion function)。其中uc代表与x(i)最近的聚类中心点。 我们的的优化目标便是找出使得代价函数最小的 c(1),c(2),…,c(m)和u1,u2,…,uk:
二、使用技巧
1、随机初始化
在运行 K-均值算法的之前,我们首先要随机初始化所有的聚类中心点,下面介绍怎样
做:
- 我们应该选择K < m,即聚类中心点的个数要小于所有训练集实例的数量
- 随机选择 K 个训练实例,然后令 K 个聚类中心分别与这 K 个训练实例相等
K-均值的一个问题在于,它有可能会停留在一个局部最小值处,而这取决于初始化的情
况。为了解决这个问题,我们通常需要多次运行 K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行 K-均值的结果,选择代价函数最小的结果。这种方法在K较小的时候(2–10)还是可行的,但是如果K较大,这么做也可能不会有明显地改善。
2、选择聚类数
当人们在讨论, 选择聚类数目的方法时, 有一个可能会谈及的方法叫作“肘部法则”。 关
于“肘部法则”, 我们所需要做的是改变K值,也就是聚类类别数目的总数。我们用一个聚类来运行 K 均值聚类方法。如果我们绘制的曲线有如同下面的图像,那么就可以取“肘部”位置的值作为聚类数K,如果很不幸像右图所示比较平滑的曲线,那么我们只能听天由命根据经验来选择K值(我们在运行聚类算法时一般有个明确的目标聚类数)。
总结
以上就是《吴恩达机器学习》系列视频 无监督学习 的内容笔记,以便后续学习和查阅。