机器学习技术(2)---K-Means聚类算法

聚类就是将一系列数据进行归类,属于无监督学习,所谓无监督学习是和有监督学习相对于的,像之前所学习的很多模型是知道自变量X和因变量Y的,着属于有监督学习,而有些时候并不知道因变量Y,这种就属于无监督的学习,那么聚类首先就是由于不知道他们归于哪一个类,而是按照数据之间的相似性进行聚类,使得同一类中的个体差异越小,不同类中的个体相似性最小,那么k-means聚类算法就是这一类算法的典型算法。

在聚类问题中,给我们的训练样本是

机器学习技术(2)---K-Means聚类算法

,每个

机器学习技术(2)---K-Means聚类算法

,没有因变量y。

     

K-means算法是将样本聚类成k个簇(cluster),具体算法描述如下:

其具体流程如下:

1、 随机选取k个聚类质心点(cluster centroids)为

机器学习技术(2)---K-Means聚类算法

2、 重复下面过程直到收敛

{ 对于每一个样例i,计算其应该属于的类

机器学习技术(2)---K-Means聚类算法

 对于每一个类j,重新计算该类的质心

机器学习技术(2)---K-Means聚类算法

}

K-means面对的第一个问题是如何保证收敛,下面定性的描述一下收敛性,假设我们定义畸变函数(distortion function)如下:

机器学习技术(2)---K-Means聚类算法

J函数表示每个样本点到其质心的距离平方和。K-means是要将J调整到最小。假设当前J没有达到最小值,那么首先可以固定每个类的质心,调整每个样例的所属的类别来让J函数减少,同样,固定,调整每个类的质心也可以使J减小。这两个过程就是内循环中使J单调递减的过程。当J递减到最小时,和c也同时收敛。(在理论上,可以有多组不同的和c值能够使得J取得最小值,但这种现象实际上很少见)。

由于畸变函数J是非凸函数,意味着我们不能保证取得的最小值是全局最小值,也就是说k-means对质心初始位置的选取比较感冒,但一般情况下k-means达到的局部最优已经满足需求。但如果你怕陷入局部最优,那么可以选取不同的初始值跑多遍k-means,然后取其中最小的J对应的数值输出。

简单点,k-means聚类算法就是反复两个过程:

  • 确定中心点

  • 把其他的点按照距中心点的远近归到相应的中心点

上一篇:使用windbg在挂起的C#应用​​程序中检测死锁


下一篇:$.extend()浅拷贝深拷贝