基于模糊聚类的模糊决策树–分类问题
一篇久远的文献: Fuzzy classification systems based on fuzzy information gain measures
首先对训练数据集RRR,在特征fff下的值,使用模糊聚类算法,聚类为kkk个模糊簇,一维表示为区间值[x11,x12],[x21,x22],…,[xk1,xk2][x_{11},x_{12}],[x_{21},x_{22}],\dots,[x_{k1},x_{k2}][x11,x12],[x21,x22],…,[xk1,xk2],簇中心记为m1′,m2′,…,mk′m'_1, m'_2, \dots, m'_km1′,m2′,…,mk′.
针对任意一个特征fff,在该特征下,对得到的kkk个簇中心在该特征下按升序排列。
(1)对于第一个簇m1m_1m1和其临近簇m2m_2m2在该特征下的值,构造为簇m1m_1m1的模糊隶属度函数:
μv1(x)={1−x−m1Umin−m1×0.5,if Umin≤x≤m11−x−m1m2−m1,if m1<x≤m20,otherwise
\mu_{v_1}(x) =
\begin{cases}
1-\frac{x-m_1}{U_{min}-m_1}\times 0.5, \text{if}\ \ U_{min} \leq x \leq m_1\\
1-\frac{x-m_1}{m_2-m_1}, \text{if}\ \ m_1 < x \leq m_2\\
0, otherwise
\end{cases}
μv1(x)=⎩⎨⎧1−Umin−m1x−m1×0.5,if Umin≤x≤m11−m2−m1x−m1,if m1<x≤m20,otherwise
其中,UminU_{min}Umin是特征fff中的最小值。
解释:\textbf{解释}:解释:该函数中,当x=Uminx = U_{min}x=Umin,μv1(x)=12\mu_{v_1}(x) = \frac{1}{2}μv1(x)=21;当x=m1x = m_1x=m1,μv1(x)=1\mu_{v_1}(x) =1μv1(x)=1;当x=m2x = m_2x=m2,μv1(x)=0\mu_{v_1}(x) =0μv1(x)=0.
(2)为在该特征下最大的簇中心的值mkm_kmk构造模糊隶属函数:
μvk(x)={1−x−mkmk−1−mk,if mk−1≤x≤mk1−x−mkUmax−mk×0.5,if mk<x≤Umax0,otherwise
\mu_{v_k}(x) =
\begin{cases}
1-\frac{x-m_k}{m_{k-1}-m_k}, \text{if}\ \ m_{k-1} \leq x \leq m_k\\
1-\frac{x-m_k}{U_{max}-m_k}\times 0.5, \text{if}\ \ m_k < x \leq U_{max}\\
0, otherwise
\end{cases}
μvk(x)=⎩⎨⎧1−mk−1−mkx−mk,if mk−1≤x≤mk1−Umax−mkx−mk×0.5,if mk<x≤Umax0,otherwise
其中,UmaxU_{max}Umax是特征fff中的最大值。
解释:\textbf{解释}:解释:该函数中,当x=Umaxx = U_{max}x=Umax,μvk(x)=12\mu_{v_k}(x) = \frac{1}{2}μvk(x)=21;当x=mkx = m_kx=mk,μvk(x)=1\mu_{v_k}(x) =1μvk(x)=1;当x=mk−1x = m_{k-1}x=mk−1,μvk(x)=0\mu_{v_k}(x) =0μvk(x)=0.
(3)为该特征下的中间簇构造mi(i≠1,k)m_i( i \neq 1, k )mi(i=1,k)的模糊隶属度函数:
μvi(x)={1−x−mimi−1−mi,if mi−1≤x≤mi1−x−mimi+1−mi,if mi<x≤mi+10,otherwise
\mu_{v_i}(x) =
\begin{cases}
1-\frac{x-m_i}{m_{i-1}-m_i}, \text{if}\ \ m_{i-1} \leq x \leq m_i\\
1-\frac{x-m_i}{m_{i+1}-m_i}, \text{if}\ \ m_i < x \leq m_{i+1}\\
0, otherwise
\end{cases}
μvi(x)=⎩⎨⎧1−mi−1−mix−mi,if mi−1≤x≤mi1−mi+1−mix−mi,if mi<x≤mi+10,otherwise
以上三种隶属度函数均为三角模糊隶属函数,只不过在两个端点的模糊隶属度为12\frac{1}{2}21.
模糊信息增益
kkk个簇可视为不同特征下的语言变量,以上已经为任意特征下的语言变量构造模糊集。假设,训练数据集为RRR,类别数为CCC,特征fff下有VVV个模糊集。对于任意一个模糊集v∈Vv \in Vv∈V,μv\mu_vμv代表其隶属函数,μv(x)\mu_v(x)μv(x)代表xxx在模糊集vvv下的隶属度。模糊集vvv的支持表示为全集的子集,记为Uv={u∣μv(u)>0且u∈U}U_v=\{u\mid \mu_v(u)>0 且 u\in U\}Uv={u∣μv(u)>0且u∈U}。
类别度\textbf{类别度}类别度:属于类别 ccc 的训练样本集的子集 RvR_vRv 的类别度 CDc(v)CD_c(v)CDc(v) 定义为:
CDc(v)=∑x∈Xcμv(x)∑x∈Xμv(x)
CD_c(v) = \frac{\sum_{x\in X_c}\mu_v(x)}{\sum_{x\in X}\mu_v(x)}
CDc(v)=∑x∈Xμv(x)∑x∈Xcμv(x)
其中,XXX 表示训练集的子集 RvR_vRv 在特征 fff 下的值的集合(xxx表示特征值),X⊆UvX \subseteq U_vX⊆Uv, XcX_cXc 表示训练集中属于类 ccc, c∈Cc \in Cc∈C 的子集 RvR_vRv 在特征 fff 下的值的集合。μv(x)\mu_v(x)μv(x)表示值xxx属于模糊集合vvv的隶属度,μv(x)∈[0,1]\mu_v(x)\in [0,1]μv(x)∈[0,1]。
模糊熵\textbf{模糊熵}模糊熵:特征 fff的值落在特征 fff 下的模糊集 vvv 的支持度 UvU_vUv 中,的训练集子集的模糊熵 FE(v)FE(v)FE(v) 定义为
FE(v)=−∑c∈CCDc(v)log2CDc(v)
FE(v) = -\sum_{c\in C}CD_c(v)log_2 CD_c(v)
FE(v)=−c∈C∑CDc(v)log2CDc(v)
其中,CCC 表示类的集合,CDc(v)CD_c(v)CDc(v) 表示属于类 ccc 的训练实例子集的类度。
模糊信息增益\textbf{模糊信息增益}模糊信息增益:特征 fff 相对于一组训练实例RRR的模糊信息增益定义为
FIG(R,f)=∑c inC(−ncnlog2ncn)−∑v∈V(svsFE(v))
FIG(R,f) = \sum_{c \ in C}(-\frac{n_c}{n}log_2\frac{n_c}{n}) - \sum_{v \in V}(\frac{s_v}{s}FE(v))
FIG(R,f)=c inC∑(−nnclog2nnc)−v∈V∑(ssvFE(v))
其中,nnn表示RRR中包含的实例数(训练样本个数),ncn_cnc表示RRR中包含的属于ccc类的实例数,VVV表示特征fff上的模糊集集合,sss表示特征fff下的所有模糊集中的隶属度值的总和,svs_vsv表示属于特征 fff下模糊集vvv的所有隶属度值之和。
实际操作步骤:
训练阶段
利用模糊聚类算法对数据集进行聚类,得到kkk个簇和对应的簇中心。
根据数据集的特征类型,连续型和离散型分别对每个特征下的数据,根据得到的簇中心进行模糊化:
假设RRR表示一组训练实例,CCC表示一组类,ccc表示CCC的一个类,FFF表示一组特征,F={f1,f2,…,fn}F = \{f_1, f_2,… , f_n\}F={f1,f2,…,fn}, nnn 表示特征的数量,fif_ifi 表示 FFF 的第 iii 个特征。处理所有特征的最佳模糊划分的算法现在如下所示:
步骤1:初始化 i=1i = 1i=1;
步骤2: 聚类簇数设置为2,选择第iii个特征;
步骤3: 对每个特征,构建隶属度函数,构造几个模糊集;如果fif_ifi连续型,
步骤3.1 :构造数值特征的隶属函数
对j=1,2…,kj = 1,2\dots,kj=1,2…,k:
以聚类中心mjm_jmj作为模糊集vijv_{ij}vij的中心,构造其隶属函数μij\mu_{ij}μij,其中UminU_{min}Umin表示特征fif_ifi的最小值,UmaxU_{max}Umax表示特征fif_ifi中的最大值,以及模糊集 vi1,vi2,…,vikv_{i1}, v_{i2}, \dots, v_{ik}vi1,vi2,…,vik 的聚类中心是 m1,m2,…,mkm_1, m2, \dots,m_km1,m2,…,mk.
如果j=1j = 1j=1:
μvi1(x)={1−x−m1Umin−m1×0.5,if Umin≤x≤m11−x−m1m2−m1,if m1<x≤m20,otherwise
\mu_{v_{i1}}(x) =
\begin{cases}
1-\frac{x-m_1}{U_{min}-m_1}\times 0.5, \text{if}\ \ U_{min} \leq x \leq m_1\\
1-\frac{x-m_1}{m_2-m_1}, \text{if}\ \ m_1 < x \leq m_2\\
0, otherwise
\end{cases}
μvi1(x)=⎩⎨⎧1−Umin−m1x−m1×0.5,if Umin≤x≤m11−m2−m1x−m1,if m1<x≤m20,otherwise
其中,UminU_{min}Umin是特征fff中的最小值。
如果j=kj = kj=k:
μvik(x)={1−x−mkmk−1−mk,if mk−1≤x≤mk1−x−mkUmax−mk×0.5,if mk<x≤Umax0,otherwise
\mu_{v_{ik}}(x) =
\begin{cases}
1-\frac{x-m_k}{m_{k-1}-m_k}, \text{if}\ \ m_{k-1} \leq x \leq m_k\\
1-\frac{x-m_k}{U_{max}-m_k}\times 0.5, \text{if}\ \ m_k < x \leq U_{max}\\
0, otherwise
\end{cases}
μvik(x)=⎩⎨⎧1−mk−1−mkx−mk,if mk−1≤x≤mk1−Umax−mkx−mk×0.5,if mk<x≤Umax0,otherwise
否则:
μvij(x)={1−x−mimi−1−mi,if mi−1≤x≤mi1−x−mimi+1−mi,if mi<x≤mi+10,otherwise
\mu_{v_{ij}}(x) =
\begin{cases}
1-\frac{x-m_i}{m_{i-1}-m_i}, \text{if}\ \ m_{i-1} \leq x \leq m_i\\
1-\frac{x-m_i}{m_{i+1}-m_i}, \text{if}\ \ m_i < x \leq m_{i+1}\\
0, otherwise
\end{cases}
μvij(x)=⎩⎨⎧1−mi−1−mix−mi,if mi−1≤x≤mi1−mi+1−mix−mi,if mi<x≤mi+10,otherwise
步骤3.2 :构造离散特征的隶属函数
对于离散特征fif_ifi,U={u1,u2,…,up}U = \{u_1,u_2,\dots,u_p\}U={u1,u2,…,up},uju_juj代表特征fif_ifi的一个离散特征值
μvij(x)=μuj(x)={1,x=uj0,otherwise
\mu_{v_{ij}}(x) = \mu_{u_j}(x) =
\begin{cases}
1, x = u_j\\
0,otherwise
\end{cases}
μvij(x)=μuj(x)={1,x=uj0,otherwise
步骤4: 基于步骤3中构建的特征fif_ifi的每个模糊集vijv_{ij}vij的隶属函数,计算训练实例的每个子集RijR_{ij}Rij对于每个类的类别度CDc(vij)CD_c(v_{ij})CDc(vij)。然后,计算训练实例的每个子集RijR_{ij}Rij的模糊熵FE(vij)FE(v_{ij})FE(vij)。然后,计算特征fif_ifi相对于训练实例集合RRR的模糊信息增益FIG(R,fi)FIG(R,f_i)FIG(R,fi)。
步骤5: 如果特征fif_ifi是数值特征,则判断是否增加簇数k。设TTT表示给定的阈值,其中T∈[0,1]T \in [0, 1]T∈[0,1],IvalueI_{value}Ivalue表示特征fif_ifi的模糊信息增益相对于训练实例集合RRR在簇数k−1k-1k−1和kkk之间的增加值,即IvalueI_{value}Ivalue使用k−1k-1k−1个簇的信息增益和使用kkk个簇的信息增益。
如果fif_ifi是数值型特征,
如果k=2k=2k=2或者Ivalue≥TI_{value}\geq TIvalue≥T,那么k=k+1k = k+1k=k+1 go to 步骤3.1;
否则,将特征fif_ifi的值聚类成k−1k-1k−1个簇所构造的隶属函数作为特征fif_ifi的模糊集的隶属函数;
步骤6: 如果i≤ni\leq ni≤n, i=i+1i = i+1i=i+1, 否则,停止遍历。
测试阶段
基于每个特征的每个模糊集构造的隶属函数、获得的每个训练实例子集相对于每个类别的类别度以及获得的每个训练实例子集的模糊熵,提出对特征赋权用于动态对测试样本分类,称为模糊熵权重度量。由于所提出的模糊熵权重度量是基于根据测试实例的每个特征的每个值估计测试实例的类的不确定性来计算的,因此我们使用等式: (2)提出估计的模糊熵测度,用于根据测试实例的特定特征的值来计算该测试实例的类别的不确定性。
模糊熵
对于测试样本rrr在特征fff下的值xxx,评估其模糊熵:
EFEf(x)=∑v∈Vf(μv(x)×FE(v))
EFE_f(x) = \sum_{v\in V_f}(\mu_v(x)\times FE(v))
EFEf(x)=v∈Vf∑(μv(x)×FE(v))
其中,VfV_fVf表示特征fff的模糊集的集合,μv\mu_vμv表示在训练时构造的模糊集vvv的隶属函数,μv(x)\mu_v(x)μv(x)表示值xxx属于模糊集vvv的隶属度值,μv(x)∈[0,1]\mu_v(x)\in[0, 1]μv(x)∈[0,1]和 FE(v)FE(v)FE(v) 表示模糊特征fff上模糊集得到的模糊熵。
然后,基于上式的估计模糊熵度量,提出了一种模糊熵权度量来生成测试实例的特征权重,如下所述。假设测试实例属于某个类的概率服从均匀分布,其中 P(x)=1/ncP(x) = 1/ n_cP(x)=1/nc, x∈Xx \in Xx∈X, XXX 表示测试实例的集合,P(x)P(x)P(x)表示测试实例的集合XXX概率密度函数,ncn_cnc表示ccc类下样本的数量。在这种情况下,测试样本集合 XXX 具有最大熵。假设测试实例属于某个类的概率呈均匀分布,则所提出的模糊熵权重度量的定义如下。
模糊熵权
测试实例 rrr的特征 fff 的模糊熵权重 FEWf(x)FEWf(x)FEWf(x) 定义为
FEWf(x)=nc×(−1/nclog2−1/nc)−EFEf(x)∑g∈F[nc×(−1/nclog2−1/nc)−EFEgxg]
FEW_f(x) = \frac{n_c\times (-1/n_c log_2 -1/n_c )-EFE_f(x)}{\sum_{g\in F} [n_c\times (-1/n_c log_2 -1/n_c)-EFE_g{x_g}]}
FEWf(x)=∑g∈F[nc×(−1/nclog2−1/nc)−EFEgxg]nc×(−1/nclog2−1/nc)−EFEf(x)
其中xxx表示测试实例rrr的特征fff的值,EFEf(x)EFEf(x)EFEf(x)表示根据测试实例rrr的特征fff值xxx估计的测试实例rrr的模糊熵,FFF表示一组特征,ncn_cnc表示类ccc下的样本数量,xgx_gxg表示测试实例rrr的特征ggg的值,EFEg(xg)EFE_g(x_g)EFEg(xg)表示根据估计的测试实例rrr的在特征ggg下的模糊熵。
测试样本特征值的类别度
根据测试实例的特征fff的值xxx,测试实例rrr在特征fff下属于类别ccc的估计类别度ECDc(x,f)ECD_c(x, f)ECDc(x,f)定义为
ECDc(x,f)=∑v∈Vf(μv(x)×CDc(v))
ECD_c(x,f) = \sum_{v \in V_f}(\mu_v(x)\times CD_c(v))
ECDc(x,f)=v∈Vf∑(μv(x)×CDc(v))
其中VfV_fVf表示特征fff的模糊集,μv\mu_vμv表示在训练时构造的模糊集vvv的隶属函数,CDc(v)CD_c(v)CDc(v) 表示属于类ccc的训练实例子集的类别度。
测试样本的类别度–加权估计类别度量
测试实例 rrr 在所有特征下,属于类 ccc 的加权估计类度 WECDc(r)WECD_c(r)WECDc(r) 定义为
WECDc(r)=∑x∈X,f∈F(FEWf(x)×ECDc(x,f))
WECD_c(r) = \sum_{x\in X, f\in F}(FEW_f(x)\times ECD_c(x,f))
WECDc(r)=x∈X,f∈F∑(FEWf(x)×ECDc(x,f))
其中FFF表示一组特征,XXX表示测试实例rrr的特征值的集合,FEWf(x)FEW_f(x)FEWf(x)表示测试实例rrr的特征fff的模糊熵权,ECDc(x,f)ECD_c(x,f)ECDc(x,f)表示根据该测试实例的特征fff的值xxx估计该测试实例rrr属于类ccc的类度。
判断测试样本的类别
WECDC(r)=argmaxc∈CWECDCc(r)
WECDC(r) = argmax_{c\in C} WECDC_c(r)
WECDC(r)=argmaxc∈CWECDCc(r)
其中CCC表示类别,WECDc(r)WECD_c(r)WECDc(r)表示属于类c的测试实例rrr的加权估计类度。选择最大的加权估计类度作为样本rrr的预测类别。
总的评估函数–判断测试样本的类别
WECDC(r)=argmaxc∈C∑x∈X,f∈F(nc×(−1/nclog2−1/nc)−∑v∈Vf(μv(x)×FE(v))∑g∈F[nc×(−1/nclog2−1/nc)−∑v∈Vg(μv(x)×FE(v))]×∑v∈Vf(μv(x)×CDc(v))) WECDC(r) = argmax_{c\in C} \sum_{x\in X, f\in F} \big( \frac{n_c\times (-1/n_c log_2 -1/n_c )- \sum_{v\in V_f}(\mu_v(x)\times FE(v))}{\sum_{g\in F} [n_c\times (-1/n_c log_2 -1/n_c)- \sum_{v\in V_g}(\mu_v(x)\times FE(v))]}\times \sum_{v \in V_f}(\mu_v(x)\times CD_c(v))\big) WECDC(r)=argmaxc∈Cx∈X,f∈F∑(∑g∈F[nc×(−1/nclog2−1/nc)−∑v∈Vg(μv(x)×FE(v))]nc×(−1/nclog2−1/nc)−∑v∈Vf(μv(x)×FE(v))×v∈Vf∑(μv(x)×CDc(v)))
总结:该方法是对每个特征聚类,在训练阶段使用模糊决策树分别针对连续和离散属性模糊化,分别计算每个特征下的数据子集的模糊熵,信息增益,确定划分属性和节点。在测试阶段,针对测试样本新增了熵权法计算测试样本的不同特征下的权重,再去估计模糊熵权和加权估计类别度量,通过最大化二者的乘积,作为最终的预测类别。
创新点在于在测试阶段增加了计算测试样本的特征权重和加权类别估计。