K均值聚类算法 The K-Means Clustering Algorithm
在前面的课程我们已经介绍过监督学习算法,现在我们开始介绍非监督学习算法,首先我们将介绍一种很典型的非监督学习算法,K-Means聚类算法。
聚类算法可用于解决这一问题:给定一个训练集{x1, x2, ..., xm},我们希望将其分为k个不同的类,但我们事先并不知道训练集中的某一元素应分到哪一类中。聚类算法中常用的有K均值算法,这一算法的执行过程如下:
在上述算法中,参数k表示我们希望的分类数,参数μj表明我们当前对第j类中心位置的预测。在初始过程中,我们可以随机的选取k个点作为类中心,当然也可以有其他的选择方法。它的循环过程包括两步:(1)将待分类的点分配给距离最近的类;(2)将类的中心移动到这一类所有点的中心。
一个典型的K均值算法执行过程如下,我们选择类数k=2
在K均值算法中,我们定义失真函数Distortion Function为,失真函数的物理意义为训练集中的元素和类中心的集合距离的平方和,这一函数类似于我们之前介绍的损耗函数。
我们执行算法的过程类似于之前介绍过的坐标上升法,我们分别固定c和μ取得极值,因此函数必定单调下降,一定会收敛,但由于这一函数是非凸的函数,其很可能收敛于一个局部最优解而非全局最优解。一般而言K均值算法会取得很好的效果,我们也可以多次使用这一算法以保证结果的准确性。<