模糊c均值聚类和k-means聚类的数学原理

摘要
前端

这篇博客是从一个网上下载的资料关于模糊c均值聚类和k-means均值聚类的数学方法衍生而来。我下载的那个文章讨论的不是很清楚,还有一些错误的地方,有些直接给告终果,可是中间的数学推导没有给出,我感受中间的数学推导应该是最精华的地方,上网搜发现网上对于这两个算法的数学推导仍是不多的甚至是没有,百度文库有一篇,可是推导的是用穷举找规律,数学的味道不是很浓厚。在这篇文章的基础上,我增长了一些数学方面的理论推导,讲的更加的详细了一些,特别是在模糊c均值聚类的递推公式的推导上,须要具备必定的数学功底。这是我一天的成果,就把这个记录下来了啊,但愿对你们有帮助,同时也能够为之后本身的复习作备份。算法其实很简单,可是知其然并知其因此然却很难。k-means的算法数学推导原理:http://9269309.blog.51cto.com/9259309/1864214算法


FCM聚类算法介绍网络

FCM算法是一种基于划分的聚类算法,它的思想就是使得被划分到同一簇的对象之间类似度最大,而不一样簇之间的类似度最小。模糊C均值算法是普通C均值算法的改进,普通C均值算法对于数据的划分是硬性的,而FCM则是一种柔性的模糊划分。在介绍FCM具体算法以前咱们先介绍一些模糊集合的基本知识。编辑器

  1. 模糊集基本知识[21]ide

首先说明隶属度函数的概念。隶属度函数是表示一个对象x隶属于集合A的程度的函数,一般记作μA(x),其自变量范围是全部可能属于集合A的对象(即集合A所在空间中的全部点),取值范围是[0,1],即0<=函数

μA(x)<=1。μA(x)=1表示x彻底隶属于集合A,至关于传统集合概念上的xA。一个定义在空间X={x}上的隶属度函数就定义了一个模糊集合A,或者叫定义在论域X={x}上的模糊子集 。对于有限个对象x1x2……xn模糊集合 能够表示为:性能

          wKioL1gW8SnCSi9bAAArgAQyz0M666.png      .............. (6.1)学习


有了模糊集合的概念,一个元素隶属于模糊集合就不是硬性的了,在聚类的问题中,能够把聚类生成的簇当作模糊集合,所以,每一个样本点隶属于簇的隶属度就是[01]区间里面的值。google

  1. K均值聚类算法(HCM)介绍spa

K均值聚类,即众所周知的C均值聚类,已经应用到各类领域。它的核心思想以下:算法把n个向量xj(1,2…,n)分为c个组Gi(i=1,2,…,c),并求每组的聚类中心,使得非类似性(或距离)指标的价值函数(或目标函数)达到最小。当选择欧几里德距离为组j中向量xk与相应聚类中心ci间的非类似性指标时,价值函数可定义为:

       wKioL1gW8TvwyL4VAAAneGIHXFs687.png   ..............    (6.2)

其中wKioL1gW8k-jUC3qAAAI7Py_ayA590.png是组i内的价值函数。这样Ji的值依赖于Gi的几何特性和ci的位置。

通常来讲,可用一个通用距离函数d(xk,ci)代替组I中的向量xk,则相应的总价值函数可表示为:

             wKioL1gW8nLy9ze7AAAqbQqLE4Q332.png ........  (6.3)

为简单起见,这里用欧几里德距离做为向量的非类似性指标,且总的价值函数表示为(6.2)式。

划分过的组通常用一个c×n的二维隶属矩阵U来定义。若是第j个数据点xj属于组i,则U中的元素uij1;不然,该元素取0。一旦肯定聚类中心ci,可导出以下使式(6.2)最小uij

  wKiom1gW9EDj1-CRAAAMhAeanCg066.png-wh_50  (6.4)

重申一点,若是cixj的最近的聚类中心,那么xj属于组i。因为一个给定数据只能属于一个组,因此隶属矩阵U具备以下性质:

              wKiom1gW8sWCx6EAAAAqn0JT3eE306.png-wh_50 (6.5)

                          wKioL1gW8tizTMISAAAdnv0VDD8806.png-wh_50 (6.6)

另外一方面,若是固定uij则使(6.2)式最小的最佳聚类中心就是组I中全部向量的均值:

 ,                    wKioL1gW8u6hMFMBAAAoCQMdyHE412.png   (6.7)

这里|Gi|是第i个簇中元素对象的个数

为便于批模式运行,这里给出数据集xi12…n)的K均值算法;该算法重复使用下列步骤,肯定聚类中心ci和隶属矩阵U

步骤1:初始化聚类中心ci,i=1,…,c。典型的作法是从全部数据点中任取c个点。

步骤2:用式(6.4)肯定隶属矩阵U

步骤3:根据式(6.2)计算价值函数。若是它小于某个肯定的阀值,或它相对上次价值函数质的改变量小于某个阀值,则算法中止。

步骤4:根据式(6.5)修正聚类中心。返回步骤2

该算法自己是迭代的,且不能确保它收敛于最优解。K均值算法的性能依赖于聚类中心的初始位置。因此,为了使它可取,要么用一些前端方法求好的初始聚类中心;要么每次用不一样的初始聚类中心,将该算法运行屡次。此外,上述算法仅仅是一种具备表明性的方法;咱们还能够先初始化一个任意的隶属矩阵,而后再执行迭代过程。

K均值算法也能够在线方式运行。这时,经过时间平均,导出相应的聚类中心和相应的组。即对于给定的数据点x,该算法求最近的聚类中心ci,并用下面公式进行修正:

                    wKiom1gW8xizy346AAAYW_1DBkU695.png-wh_50   (6.8)

这种在线公式本质上嵌入了许多非监督学习神经元网络的学习法则。

6.2.3   模糊C均值聚类

模糊C均值聚类(FCM),即众所周知的模糊ISODATA,是用隶属度肯定每一个数据点属于某个聚类的程度的一种聚类算法。1973年,Bezdek提出了该算法,做为早期硬C均值聚类(HCM)方法的一种改进。

FCMn个向量xii=1,2,…,n)分为c个模糊组,并求每组的聚类中心,使得非类似性指标的价值函数达到最小。FCMHCM的主要区别在于FCM用模糊划分,使得每一个给定数据点用值在01间的隶属度来肯定其属于各个组的程度。与引入模糊划分相适应,隶属矩阵U容许有取值在01间的元素。不过,加上归一化规定,一个数据集的隶属度的和总等于1

                  wKioL1gW8zbjRoutAAAf9XCK0a8273.png     (6.9)

那么,FCM的价值函数(或目标函数)就是式(6.2)的通常化形式:

 ,         wKiom1gW80iwDycyAABEcRBam2s385.png      (6.10)

这里uij介于01间;ci为模糊组I的聚类中心,dij=||ci-xj||为第I个聚类中心与第j个数据点间的欧几里德距离;且 是一个加权指数。

构造以下新的目标函数,可求得使(6.10)式达到最小值的必要条件:

       wKioL1gW813xicm4AABP8pzrWGE065.png  (6.11)

这里λjj=1n,是(6.9)式的n个约束式的拉格朗日乘子。对全部输入参量求导,使式(6.10)达到最小的必要条件为:

                        wKioL1gW83jzGhBhAABU0xMz3i4736.png......... 6.12

由上述两个必要条件,模糊C均值聚类算法是一个简单的迭代过程。在批处理方式运行时,FCM用下列步骤肯定聚类中心ci和隶属矩阵U[1]

步骤1:用值在01间的随机数初始化隶属矩阵U,使其知足式(6.9)中的约束条件

步骤2:用式(6.12)计算c个聚类中心cii=1,…,c

步骤3:根据式(6.10)计算价值函数。若是它小于某个肯定的阀值,或它相对上次价值函数值的改变量小于某个阀值,则算法中止。

步骤4:用(6.13)计算新的U矩阵。返回步骤2

上述算法也能够先初始化聚类中心,而后再执行迭代过程。因为不能确保FCM收敛于一个最优解。算法的性能依赖于初始聚类中心。所以,咱们要么用另外的快速算法肯定初始聚类中心,要么每次用不一样的初始聚类中心启动该算法,屡次运行FCM


对于式(6.12)结果的推导的数学原理:


FCM算法的数学模型实际上是一个条件极值问题:

wKiom1gW-LOgzJx6AAAYPYeZuQY989.png-wh_50

咱们须要把上面的条件极值问题转化为无条件的极值问题,这个在数学分析上常常用到的一种方法就是拉格朗日乘数法把条件极值转化为无条件极值问题,须要引入n个拉格朗日因子,以下所示:

wKioL1gXIiHBywbGAAATqhRfAY0014.png

而后对各个变量进行求导,从而获得各个变量的极值点:

对C中心点进行求导:

wKioL1gXE6nACcDBAACDAqHruHM744.png-wh_50


拉格朗日函数分为两部分,咱们须要分别对其进行求导,先算简单的,对后一部分进行求导:


wKioL1gXFUWQlnflAAAzYPUgjKU099.png-wh_50


对前一部分进行求导就比较复杂和困难了:

wKiom1gXFq_gC1ScAAA753BBhZg299.png-wh_50


把两部分放到一块儿则是:

wKiom1gXHnCB77McAAEPZuVN6mo300.png-wh_50

上面的一些公式用到了英文,不是我装,个人英语不好的,我用的google公式编辑器不能打汉字,没办法,凑活着看吧。

上式推导中的一些点的解释:

wKioL1gXI7ySbqDGAAAd2hNj-vs446.png

  1. FCM算法的应用

经过上面的讨论,咱们不难看出FCM算法须要两个参数一个是聚类数目C,另外一个是参数m。通常来说C要远远小于聚类样本的总个数,同时要保证C>1。对于m,它是一个控制算法的柔性的参数,若是m过大,则聚类效果会很次,而若是m太小则算法会接近HCM聚类算法。

算法的输出是C个聚类中心点向量和C*N的一个模糊划分矩阵,这个矩阵表示的是每一个样本点属于每一个类的隶属度。根据这个划分矩阵按照模糊集合中的最大隶属原则就可以肯定每一个样本点归为哪一个类。聚类中心表示的是每一个类的平均特征,能够认为是这个类的表明点。

从算法的推导过程当中咱们不难看出,算法对于知足正态分布的数据聚类效果会很好,另外,算法对孤立点是敏感的。

相关文章
相关标签/搜索