MOEA-FCM、RCGAd-FCM、CS-FCM三者介绍及比较

MOEA-FCM、RCGAd-FCM、CS-FCM三者介绍及比较

FCM(Fuzzy cognitive maps)

FCM已在之前有所介绍 https://blog.csdn.net/loveC__/article/details/98479162

MOEA-FCM(2013)

文章:Learning of Fuzzy Cognitive Maps with Varying Densities using a Multi-objective Evolutionary Algorithm

摘要

之前学习FCM的算法密度都远高于人类专家建立的FCM,于是将FCM的密度和准确度作为两个目标问题进行建模,MOEA-FCM实验中使用了合成数据和真实数据,使用了不同尺寸(FCM点数目)和稠密程度。实验表明MOEA-FCM不仅能高精度的重建FCM,还能得到不同密度下的Pareto前沿。

介绍

之前自动生成的学习FCM算法密度都超过了90%,而由人类专家知识建立的FCM密度只有40%,只有降低FCM的稀疏程度,才能处理大规模的FCM问题,两个优化的目标分别为:

  1. 降低输入数据和模拟数据的差别
    第一个目标Data_Error,用来评估可用响应序列和生成响应序列的不同
    在这里插入图片描述
    N t N_t Nt是时间序列的长度, N s N_s Ns是响应序列的长度, C n t ( s ) C_{n}^{t}(s) Cnt(s)是第n个点在第s个可用响应序列中第t个状态, C ^ n t ( s ) \hat{C}_{n}^{t}(s) C^nt(s)是第n个点在第s个生成响应序列中第t个状态。
  2. 降低学习得的FCM的连接密度
    第二个目标是Density(稀疏性),评估学习生成的权重矩阵和真实的结构区别
    Density ( W ) = M N n × N n \text {Density}(\boldsymbol{W})=\frac{M}{N_{n} \times N_{n}} Density(W)=Nn×NnM
    关于符合多目标的讨论:在多目标中,目标应该互相冲突,实验表明,密度增加时,Data_Error会增长缓慢,稠密模型的Data_Error比稀疏模型更接近真实模型的Data_Error,如果以Data_Error作为单一目标进行优化,得到的模型将具有加高的密度,将比实际真实的FCM稠密的多。所以Density和Data_Error将成为两个冲突的目标,应采用多目标技术进行优化。
算法介绍

实质上该算法使用NSGA-II对FCM进行了学习,降低了稀疏性的同时,提高了模型的精确度,因为NSGA-II对两目标问题表现出较好的性能
为使算法适合EA,将其转换为
 Maximize  f 1 ( W ) = h ( Data − Error ⁡ ( W ) )  Maximize  f 2 ( W ) = h ( Density ( W ) ) \begin{array}{ll}{\text { Maximize }} & {f_{1}(\boldsymbol{W})=h\left(\text {Data}_{-} \operatorname{Error}(\boldsymbol{W})\right)} \\ {\text { Maximize }} & {f_{2}(\boldsymbol{W})=h(\text {Density}(\boldsymbol{W}))}\end{array}  Maximize  Maximize f1(W)=h(DataError(W))f2(W)=h(Density(W))
其中
h ( x ) = 1 1 + α x h(x)=\frac{1}{1+\alpha x} h(x)=1+αx1
该算法使用NSGA-II作为EA的框架。其中快速非支配排序、拥挤距离计算、二元锦标赛选择、模拟二进制交叉和变异方法都和NSGA-II算法一致。
算法流程:
Step1:初始化种群 , t t t为0, P t P_t Pt和N个染色体,每个染色体的值在[-1,1]。
Step2:使用非支配快速排序, F ←  fast-nondominated-sort  ( P t ) F \leftarrow \text { fast-nondominated-sort }\left(P_{t}\right) F fast-nondominated-sort (Pt)
Step3:根据排序后的 P t P_t Pt的秩和拥挤距离,采用二元锦标赛选择法从排序后的 P t P_t Pt中选择染色体,并对所选染色体进行交叉和变异操作,生成大小为N的后代群体 Q t Q_t Qt
Step4:将父代和子代合并至 R t R_t Rt R t ← P t ∪ Q t R_{t} \leftarrow P_{t} \cup Q_{t} RtPtQt
Step5:对 R t R_t Rt使用快速非支配排序, F ←  fast-nondominated-sort  ( R t ) F \leftarrow \text { fast-nondominated-sort }\left(R_{t}\right) F fast-nondominated-sort (Rt)
Step6:令下一代种群 P t + 1 P_{t+1} Pt+1为空, 令 i = 1 令i=1 i=1
Step7: I f ∣ P t + 1 ∣ + ∣ F i ∣ &lt; N , t h e n P t + 1 ← P t + 1 ∪ F i , i ← i + 1 , g o t o S t e p 7 If |P_t+1|+|F_i|&lt;N, then P_t+1←P_t+1∪ F_i, i←i+1, go to Step7 IfPt+1+Fi<N,thenPt+1Pt+1Fi,ii+1,gotoStep7这一步的作用是从之前非支配快速排序得到的F中,选出 i i i个元素组成 P t + 1 P_{t+1} Pt+1
Step8:通过拥挤度分配,根据拥挤距离对 F i F_i Fi进行降序排序。
Step9:将 F i F_i Fi根据排序与 P t + 1 P_{t+1} Pt+1合并成N个染色体组成的新一代种群 P t + 1 P_{t+1} Pt+1
Step10:t = t +1。
Step11:如果达到最大迭代数,则输出当前种群,否则则转去Step3。

实验

实验中使用了合成数据和真实世界数据;
交叉率为:0.9
变异率为0.5
目标评价次数为 3 × 1 0 6 3 \times 10^{6} 3×106
实验的其他评价标准:

  1. Model_Error:比较学习到的FCM和目标FCM的权重。
    Model −  Error  = 1 N n 2 ∑ i = 1 N n ∑ j = 1 N n ∣ w i j − w ^ i j ∣ \text {Model}_{-} \text { Error }=\frac{1}{N_{n}^{2}} \sum_{i=1}^{N_{n}} \sum_{j=1}^{N_{n}}\left|w_{i j}-\hat{w}_{i j}\right| Model Error =Nn21i=1Nnj=1Nnwijw^ij
  2. Out_of_Sample_Error:评价模型处理过拟合的能力,10个随机初始化的向量作为输入,计算真实模型的响应序列和已经获得的模型生成的响应序列的差值。
    Out  −  of  −  Sample  −  Error  ( W ) = 1 N s ⋅ ( N t − 1 ) ⋅ N n ∑ t = 1 N s ∑ t = 1 N t − 1 ∣ C n t ( s ) − C ^ n t ( s ) ∣ \text {Out }_{-} \text { of }-\text { Sample }_{-} \text { Error }(W)=\frac{1}{N_{s} \cdot\left(N_{t}-1\right) \cdot N_{n}} \sum_{t=1}^{N_{s}} \sum_{t=1}^{N_{t}-1}\left|C_{n}^{t}(s)-\hat{C}_{n}^{t}(s)\right| Out  of  Sample  Error (W)=Ns(Nt1)Nn1t=1Nst=1Nt1Cnt(s)C^nt(s)
  3. SS Mean:为了预测两个概念点之间是否存在连接。
    S S  Mean  = 2 ×  Specificity  ×  Sensitivity   Specificity  +  Sensitivity  S S \text { Mean }=\frac{2 \times \text { Specificity } \times \text { Sensitivity }}{\text { Specificity }+\text { Sensitivity }} SS Mean = Specificity + Sensitivity 2× Specificity × Sensitivity 
    Specificity = N T P N T P + N F N \text {Specificity}=\frac{N_{T P}}{N_{T P}+N_{F N}} Specificity=NTP+NFNNTP
    Sensitivity = N T N N T N + N F P \text {Sensitivity}=\frac{N_{T N}}{N_{T N}+N_{F P}} Sensitivity=NTN+NFPNTN
    在这里插入图片描述
    可以从实验数据看出,MOEA-FCM(37%)大部分的数据优于其他的算法。其中37%是从Pareto最优解中,选出的密度为37%的值。

RCGAd-FCM(2015)

文章:Inferring Causal Networks using Fuzzy Cognitive Maps and Evolutionary Algorithms with Application to Gene Regulatory Network Reconstruction

摘要

该算法从基因表达数据基于分解的GA算法,学习大规模的模糊认知图。将该算法与蚁群优化,差分进化和粒子群优化在一个分解框架中进行了比较。比较结果表明,该算法在数据量小、网络规模大或存在噪声的数据集上具有一定的优越性。

算法介绍

该算法主要应用在适应基因表达数据进行基因调控网络的重建(GRNs),该算法基于实数编码的遗传算法,采用锦标赛的选择方法,采用分解的方式来学习大规模的FCM,从而应用于基因调控网络重建问题上。GA、PSO、DE、ACO和基于梯度的优化算法,这些算法成功应用在没有专家干预学习FCM方面,从而解决了一部分问题如,时间序列预测工程控制问题分类问题
分解前的目标函数,带有稀疏惩罚因子
在这里插入图片描述
其中 N V N_V NV是FCM节点数目, N S N_S NS是时间序列的个数, N T N_T NT是每个时间序列的长度, P S P_S PS是稀疏惩罚因子, C n ( s , t ) C_n(s,t) Cn(s,t)是第s个时间序列,第t个时间点,第n个节点的观测数据(已知的输入数据), C ^ n ( s , t ) \hat{C}_{n}(s, t) C^n(s,t)是第s个时间序列,第t个节点,第n个节点的仿真数据(计算得到的)
C ^ n ( s , t ) = f n ( ∑ i = 1 N V w i n C n ( s , t − 1 ) ) \hat{C}_{n}(s, t)=f_{n}\left(\sum_{i=1}^{N_{\mathrm{V}}} w_{i n} C_{n}(s, t-1)\right) C^n(s,t)=fn(i=1NVwinCn(s,t1))
对于每一个节点n的激活函数是
f n ( x ) = 1 1 + e − λ n x f_{n}(x)=\frac{1}{1+e^{-\lambda_{n} x}} fn(x)=1+eλnx1
C ^ n ( s , t ) \hat{C}_{n}(s, t) C^n(s,t)的计算依赖 λ n \lambda _n λn和第n列的权值矩阵 W n W_n Wn
W n = [ w 1 n , w 2 n , … , w N N , n ] T \mathbf{W}_{n}=\left[w_{1 n}, w_{2 n}, \dots, w_{N_{\mathrm{N}}, n}\right]^{\mathrm{T}} Wn=[w1n,w2n,,wNN,n]T
因此分解后目标函数E变成如下
E n = 1 ( N T − 1 ) N S ∑ i = 2 N T ∑ s = 1 N S ( C n ( s , t ) − C ^ n ( s , t ) ) 2 + p S ∑ i = 1 N N ∣ w i n ∣ E_{n}=\frac{1}{\left(N_{\mathrm{T}}-1\right) N_{\mathrm{S}}} \sum_{i=2}^{N_{\mathrm{T}}} \sum_{s=1}^{N_{\mathrm{S}}}\left(C_{n}(s, t)-\hat{C}_{n}(s, t)\right)^{2}+p_{\mathrm{S}} \sum_{i=1}^{N_{\mathrm{N}}}\left|w_{i n}\right| En=(NT1)NS1i=2NTs=1NS(Cn(s,t)C^n(s,t))2+pSi=1NNwin
可以对比看出分解前和分解后主要是目标函数的变化,原来的目标函数计算的是所有节点的综合,目标函数缺少了 N V N_V NV,现在目标函数结算单个列值作为评价函数。整个优化算法优化的列数n从1到 N N N_N NN λ n \lambda_n λn W n W_n Wn
W = [ W 1 , W 2 , . . . , W N V ] W = [W_1, W_2,...,W_{N_V}] W=[W1,W2,...,WNV]
λ = [ λ 1 , λ 2 , . . . , λ N v ] \lambda = [\lambda_1, \lambda_2,...,\lambda_{N_v} ] λ=[λ1,λ2,...,λNv]
基于这种分解方法,将整个计算分解为n个节点,优化过程从 N V ( N V + 1 ) N_V(N_V+1) NV(NV+1)to N V + 1 N_V+1 NV+1,这是能够学习大规模FCM的主要因素。

算法流程
在这里插入图片描述
初始化种群:解的形式为 x j = [ W 1 n , W 2 n , . . . , W N N , λ n ] x_j=[W_{1n},W_{2n},...,W_{N_N},\lambda_n] xj=[W1n,W2n,...,WNN,λn]
选择算子:采用二元锦标赛
交叉算子:单点交叉
变异算子:非均匀变异
在这里插入图片描述

实验

实验数据
在这里插入图片描述
其中关于FCM应用在GRN问题上,DREAM数据较为常用。
交叉率:0.6
变异率:0.3
种群大小:100
最大迭代次数:15000
稀疏罚值稀疏在超过100大规模的数据集中设为0.2,在小规模的数据集中设为0
不同算法AUC和AUPR在DREAM4数据集上的表现
在这里插入图片描述
可以忽略粗体的数字,只看阴影的值,其中阴影的值是在同一条件下,诸多算法中表现最好的算法。从图中可以直观的得出,RCGAd在学习大规模FCM时有较好的表现。
在大规模的网络上进行比较
在这里插入图片描述
同样可以看出在300个节点时,该算法的性能优于其他算法。

CS-FCM(2017)

问章:Learning Large-Scale Fuzzy Cognitive Maps Based on Compressed Sensing and Application in Reconstructing Gene Regulatory Networks

摘要

本文旨在解决基于数据驱动,没有任何先验知识的情况下,学习大规模的稀疏FCM的问题,大量现有的方法速度较慢且在处理大规模FCM问题时有较大的的困难。本文介绍了一种基于压缩感知(CS)的凸规划方法来学习大规模的稀疏FCM(CS-FCM)。则该问题转换为稀疏信号重建问题。CS-FCM可以学习稀疏FCM至1000个节点甚至更多,本文最后用GRN的DREAM3和DREAM4数据进行了测试。

压缩感知(CS)
这边文章对压缩感知写的简单易懂,图文并茂,不一定严谨但容易理解,传送门https://blog.csdn.net/qq_42570457/article/details/82179065
在这里插入图片描述

算法介绍

目前自动学习FCM算法的限制

  1. 准确度较低
  2. 学习得FCM规模较小
  3. 计算复杂度高
  4. 学习得图结构密度太高
    所以,快速学习一个高精度大规模稀疏的FCM仍然是一个挑战的问题。
    压缩感知(CS)是用一种用在信号和图像处理上的稀疏重建方法。将FCM的稀疏重建问题转换为了稀疏信号的重建问题,由于CS具有数据要求极低、收敛到最优解的严格保证等显著特点,CS-FCM具有较高的精度和效率。
    与现有学习不超过500个节点的FCMs方法相比,CS-FCM可以学习1000个节点甚至更多的大规模稀疏FCMs,计算量小,学习的FCMs比现有方法更精确。
    首先,将问题分解成节点个体学习局部的连接,因为FCM的稀疏性,所以从时间序列恢复局部结构可以转换稀疏信号重建问题,该问题结合了局部结构的稀疏性和观测数据与模拟数据的差异,即重构误差。
    C i ( t + 1 ) = ψ ( ∑ j = 1 N w j i C j ( t ) ) C_{i}(t+1)=\psi\left(\sum_{j=1}^{N} w_{j i} C_{j}(t)\right) Ci(t+1)=ψ(j=1NwjiCj(t))
    可将上述FCM的公式变为
    ψ − 1 ( C i ( t + 1 ) ) = ∑ j = 1 N w j i C j ( t ) \psi^{-1}\left(C_{i}(t+1)\right)=\sum_{j=1}^{N} w_{j i} C_{j}(t) ψ1(Ci(t+1))=j=1NwjiCj(t)
    上述公式可以写成 Y i = Φ W i Y_i = \varPhi W_i Yi=ΦWi的形式,其中 Y i Y_i Yi代表不同 t t t下的 ψ − 1 ( C i ( t + 1 ) ) \psi^{-1}\left(C_{i}(t+1)\right) ψ1(Ci(t+1)) Φ \varPhi Φ代表节点的状态 C j ( t ) C_j(t) Cj(t) W i W_i Wi是节点 i i i和所有节点的向量权重。最终得到以下公式:
    Y i = Φ [ w 1 i w 2 i ⋮ w N i ] Y_{i}=\Phi\left[\begin{array}{c}{w_{1 i}} \\ {w_{2 i}} \\ {\vdots} \\ {w_{N i}}\end{array}\right] Yi=Φw1iw2iwNi
    C i k ( t ) C_i^k(t) Cik(t)是第 i i i个节点在第 k k k个观测序列的第 t t t代的状态值。
    Φ = [ C 1 1 ( 1 ) C 2 1 ( 1 ) ⋯ C N 1 ( 1 ) ⋮ ⋮ ⋱ ⋮ C 1 1 ( M − 1 ) C 2 1 ( M − 1 ) ⋯ C 2 1 ( M − 1 ) ⋮ ⋮ ⋱ ⋮ C 1 l ( 1 ) C 2 l ( 1 ) ⋯ C N l ( 1 ) ⋮ ⋮ ⋱ ⋮ C 1 l ( M − 1 ) C 2 l ( M − 1 ) ⋯ C N l ( M − 1 ) ] \Phi=\left[\begin{array}{cccc}{C_{1}^{1}(1)} &amp; {C_{2}^{1}(1)} &amp; {\cdots} &amp; {C_{N}^{1}(1)} \\ {\vdots} &amp; {\vdots} &amp; {\ddots} &amp; {\vdots} \\ {C_{1}^{1}(M-1)} &amp; {C_{2}^{1}(M-1)} &amp; {\cdots} &amp; {C_{2}^{1}(M-1)} \\ {\vdots} &amp; {\vdots} &amp; {\ddots} &amp; {\vdots} \\ {C_{1}^{l}(1)} &amp; {C_{2}^{l}(1)} &amp; {\cdots} &amp; {C_{N}^{l}(1)} \\ {\vdots} &amp; {\vdots} &amp; {\ddots} &amp; {\vdots} \\ {C_{1}^{l}(M-1)} &amp; {C_{2}^{l}(M-1)} &amp; {\cdots} &amp; {C_{N}^{l}(M-1)}\end{array}\right] Φ=C11(1)C11(M1)C1l(1)C1l(M1)C21(1)C21(M1)C2l(1)C2l(M1)CN1(1)C21(M1)CNl(1)CNl(M1)
    由此可得
    Y = [ ψ − 1 ( C 1 1 ( 2 ) ) ψ − 1 ( C 2 1 ( 2 ) ) ⋯ ψ − 1 ( C N 1 ( 2 ) ) ⋮ ⋮ ⋱ ⋮ ψ − 1 ( C 1 1 ( M ) ) ψ − 1 ( C 2 1 ( M ) ) ⋯ ψ − 1 ( C N 1 ( M ) ) ⋮ ⋱ ⋮ ψ − 1 ( C 1 1 ( 2 ) ) ψ − 1 ( C 2 l ( 2 ) ) ⋯ ψ − 1 ( C N l ( 2 ) ) ⋮ ⋱ ⋮ ψ − 1 ( C 1 l ( M ) ) ψ − 1 ( C 2 l ( M ) ) ⋮ ψ − 1 ( C N l ( M ) ) ] Y=\left[\begin{array}{cccc}{\psi^{-1}\left(C_{1}^{1}(2)\right)} &amp; {\psi^{-1}\left(C_{2}^{1}(2)\right)} &amp; {\cdots} &amp; {\psi^{-1}\left(C_{N}^{1}(2)\right)} \\ {\vdots} &amp; {\vdots} &amp; {\ddots} &amp; {\vdots} \\ {\psi^{-1}\left(C_{1}^{1}(M)\right)} &amp; {\psi^{-1}\left(C_{2}^{1}(M)\right)} &amp; {\cdots} &amp; {\psi^{-1}\left(C_{N}^{1}(M)\right)} \\ {\vdots} &amp; {} &amp; {\ddots} &amp; {\vdots} \\ {\psi^{-1}\left(C_{1}^{1}(2)\right)} &amp; {\psi^{-1}\left(C_{2}^{l}(2)\right)} &amp; {\cdots} &amp; {\psi^{-1}\left(C_{N}^{l}(2)\right)} \\ {\vdots} &amp; {} &amp; {\ddots} &amp; {\vdots} \\ {\psi^{-1}\left(C_{1}^{l}(M)\right)} &amp; {\psi^{-1}\left(C_{2}^{l}(M)\right)} &amp; {\vdots} &amp; {\psi^{-1}\left(C_{N}^{l}(M)\right)}\end{array}\right] Y=ψ1(C11(2))ψ1(C11(M))ψ1(C11(2))ψ1(C1l(M))ψ1(C21(2))ψ1(C21(M))ψ1(C2l(2))ψ1(C2l(M))ψ1(CN1(2))ψ1(CN1(M))ψ1(CNl(2))ψ1(CNl(M))
    因此面对该问题,为了解决一个节点i到所有节电池的稀疏结构,我们需要建立L1规则化方法,如下
    min ⁡ W i ∥ W i ∥ 1  s.t.  Y i = Φ W i ( 1 ) \begin{array}{l}{\min _{W_{i}}\left\|W_{i}\right\|_{1}} \\ {\text { s.t. } Y_{i}=\Phi W_{i}}\end{array} (1) minWiWi1 s.t. Yi=ΦWi1
    算法流程如下
    D为观察数据
    Step1:i=1,通过D去获取 Φ 和 Y \Phi和Y ΦY;
    Step2:对于节点i,建立(1)的目标函数;
    Step3: W i ← SIPM ⁡ ( Φ , Y i ) W_{i} \leftarrow \operatorname{SIPM}\left(\Phi, Y_{i}\right) WiSIPM(Φ,Yi),通过 Φ \Phi Φ和Y来得出W, 使用标准内部点方法。
    Step4:i=1+1
    Step5:如果i>N,则停止;否则转去Step2。

问题变成线性问题后则可以用SIPM来进行求解,比如原对偶路径跟踪内点法
复杂度分析

  1. 空间复杂度:需要两部分主要的存储空间,首先需要存储D(观察数据),Y(前面有定义)和 Φ \Phi Φ(前面有定义),需要O(MN),第二部分是提供给标准内点法(SIPM),时间复杂度为O(MN),因此空间复杂度为O(MN)。
  2. 时间复杂度:最主要的算法开销在Step3和Step1,这两者都是线性时间。 根据对SIPM的描述,CS-FCM的总时间复杂度为 O ( M A X I T E R × 2 M N 3 ) O(MAXITER \times 2MN^3) O(MAXITER×2MN3)
实验

评估标准为(上述有详细介绍):Data_Error、Out_of_Sample_Error、Model_Error、SS_Mean。

  1. 数据长度对CS-FCM的影响
    数据长度 N t N_t Nt越大则效果越好,在CS-FC M中即使 N t N_t Nt很小,也能识别出大部分的连接, N t N_t Nt越大则会有更高的SS_Mean(越大越好),更低的Model_Error(越小越好)和更低的Out_of_Sample_Error(越小越好)。Data_Error也可以维持在一个较低的水平。
  2. 稀疏度对CS-FCM的影响
    当密度增加时,SS_Mean减少,Model_Error增加,Out_of_Sample_Error增加,而Data_Error一直维持在一个较低的水平。稠密的FCM比稀疏的FCM需要更大的数据长度 N t N_t Nt首先,对于致密FCMs、W的稀疏性较差,导致CS的预测误差较大。其次,对于具有大量邻居的节点,其每次受影响的概率都很大。
  3. 噪声对CS-FCM的影响,实验中加入了不同程度的高斯噪声,实验表明,随着噪声程度的增加,CS-FCM的性能在逐渐降低。
    可以看出数据长度 N t N_t Nt越长准确率越高。

算法与LASSO-FCM、dMAGA、ACOrd、D&C RCGA RCGA进行了比较,在小规模和大规模数据中,得到了较好的结果。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值