【计算智能】模糊聚类实现鸢尾花分类问题

FUZZY c-MEANS 算法

硬聚类(hard clustering),把数据点划分到确切的某一聚类中,如K-均值聚类。而模糊聚类(亦称软聚类,soft clustering)中,数据点则可能归属于不止一个聚类中,并且这些聚类与数据点通过一个成员水平(实际上类似于模糊集合中隶属度的概念)联系起来。成员水平显示了数据点与某一聚类之间的联系有多强。模糊聚类就是计算这些成员水平,按照成员水平来决定数据点属于哪一个或哪些聚类的过程。

1、隶属度函数

隶属度函数 是表示一个对象 x 隶属于集合 A 的程度的函数,通常记作 μ A ( x ) \mu_A(x) μA(x) 。其自 变量范围是所有可能属于集合 A 的对象,取值范围是 [0, 1],即 0 ≤ µA(x) ≤ 1。µA(x) = 1 表示 x 完全隶属于集合 A,相当于传统集合概念上的 x ∈ A。

2、K-means聚类算法

先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。

目标函数可定义为:
J m ( U , V ) = ∑ i = 1 c ∑ j = 1 n ∥ X j − V i ∥ A 2 J_m(U,V)=\sum_{i=1}^{c}\sum_{j=1}^n\parallel X_j - V_i \parallel^2_A Jm(U,V)=i=1cj=1nXjViA2
算法实现主要步骤包括:

1、随机确定 k 个初始点作为质心:

2、对数据集中的每个数据点找到距离最近的簇:

3、对于每一个簇,计算簇中所有点的均值并将均值作为质心:

4、重复步骤 2,直到任意一个点的簇分配结果不变。

3、模糊聚类算法

对每个对象和每个簇赋予一个权值,指明对象属于该簇的程度。

模糊聚类算法的目标函数为:
J m ( U , V ) = ∑ i = 1 c ∑ j = 1 n μ i j m ∥ X j − V i ∥ A 2 J_m(U,V)=\sum_{i=1}^{c}\sum_{j=1}^n \mu_{ij}^m\parallel X_j - V_i \parallel^2_A Jm(U,V)=i=1cj=1nμijmXjViA2
其中 U = [ u i j ] U=[u_{ij}] U=[uij]为隶属度矩阵, u i j u_{ij} uij是第 j 个样本对于第 i 类的隶属度,m 是模糊常数。

约束条件:对于任意一个样本,它对各个聚类的隶属度之和为 1。
∑ i = 1 c u i j = 1 \sum_{i=1}^{c} u_{i j}=1 i=1cuij=1
使用拉格朗日乘子法:
F = ∑ i = 1 c u i j m ∥ X j − V i ∥ 2 + λ ( ∑ i = 1 c u i j − 1 ) F=\sum_{i=1}^{c} u_{i j}^{m}\left\|X_{j}-V_{i}\right\|^{2}+\lambda\left(\sum_{i=1}^{c} u_{i j}-1\right) F=i=1cuijmXjVi2+λ(i=1cuij1)
F F F 函数求极值得最优化条件如下:
∂ F ∂ λ = ( ∑ i = 1 c u i j − 1 ) = 0 ∂ F ∂ u i j = [ m ( u i j ) m − 1 ∥ X j − V i ∥ 2 − λ ] = 0 ∂ F ∂ v i = ∑ j = 1 n ( u i j ) m x j − v i ∑ i = 1 c u i j m = 0 \frac{\partial F}{\partial \lambda}=\left(\sum_{i=1}^{c} u_{i j}-1\right)=0 \\ \frac{\partial F}{\partial u_{i j}}=\left[m\left(u_{i j}\right)^{m-1}\left\|X_{j}-V_{i}\right\|^{2}-\lambda\right]=0 \\ \frac{\partial F}{\partial v_{i}}=\sum_{j=1}^{n}\left(u_{i j}\right)^{m} x_{j}-v_{i} \sum_{i=1}^{c} u_{i j}^{m}=0 \\ λF=(i=1cuij1)=0uijF=[m(uij)m1XjVi2λ]=0viF=j=1n(uij)mxjvii=1cuijm=0

解得:
u i j = [ ∑ k = 1 c ( ∥ X j − V i ∥ 2 ∥ X j − V k ∥ 2 ) 2 m − 1 ] − 1 v i = ∑ j = 1 n u i j m X j ∑ j = 1 n ( u i j m ) u_{i j}=\left[\sum_{k=1}^{c}\left(\frac{\left\|X_{j}-V_{i}\right\|^{2}}{\left\|X_{j}-V_{k}\right\|^{2}}\right)^{\frac{2}{m-1}}\right]^{-1} \\ v_{i}=\frac{\sum_{j=1}^{n} u_{i j}^{m} X_{j}}{\sum_{j=1}^{n}\left(u_{i j}^{m}\right)} uij=k=1c(XjVk2XjVi2)m121vi=j=1n(uijm)j=1nuijmXj
上面两式便是算法更新公式。

算法实现主要步骤包括:

1、选取模式类数K;

2、初始化隶属度矩阵:

3、求算聚类中心,并更新隶属度矩阵:

4、重复步骤3

5、根据隶属度进行划分,完成聚类。

4、FCM算法实验结果

编程实现模糊聚类算法,对鸢尾花分类问题,实现模糊聚类相关方法分析。分别选择聚类个数为3,4,5进行分析如下:

4.1分类结果

首先对不同聚类结果进行可视化,分别选用前两个特征以及后两个特征为横纵坐标进行绘图,并画出聚类中心如下:

3类情况

在这里插入图片描述

4类情况

在这里插入图片描述

5类情况

在这里插入图片描述

4.2 XB指标及对应准确度情况

Xin-Beni指标是评价聚类有效性的常用指标。它能显示类内紧凑度和类间分离度之间平衡值。类内紧凑度 = 该公式分子部分/样本数m,越小越好;类间分离度 = 该公式分母部分*样本数m,越大越好。所以XB指标计算结果越小,聚类效果最好。XB指标计算结果越小,聚类效果最好。分别对3类、4类、5类聚类方法求XB指标作图如下:
在这里插入图片描述

由图可知,分类为3时,性能指标最优,符合数据集真实情况,分别计算3、4、5类分类时准确度情况作图如下:

在这里插入图片描述

4.3与BP算法分类效果比较

设置最大迭代次数为50,将鸢尾花分为三类时训练误差(左图)及测试误差(右图)随迭代次数变化曲线如下:

在这里插入图片描述

使用BP神经网络对鸢尾花数据集进行分类的误差曲线如下:

在这里插入图片描述

分析可知,模糊聚类算法收敛速度要更快,实际操作过程中迭代十次以内便达到停止条件完成聚类过程,相比BP算法,迭代次数远小于BP算法,训练时间时间更短。但训练准确度要劣于BP算法,模糊聚类算法收敛后分类准确度稳定在90%-92%之间,BP算法则能够达到95%以上。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值