更改

跳到导航 跳到搜索
第609行: 第609行:     
# 对 <math>P</math> 进行矩阵的[[特征值分解]],得到特征值集合 <math>\Lambda=\{\lambda_i\}^N_{i=1}</math> 与特征向量集合 <math>E=\{e_i\}^N_{i=1}</math>;
 
# 对 <math>P</math> 进行矩阵的[[特征值分解]],得到特征值集合 <math>\Lambda=\{\lambda_i\}^N_{i=1}</math> 与特征向量集合 <math>E=\{e_i\}^N_{i=1}</math>;
−
# 构建新的有偏特征向量集合 <math>E’=\{\lambda_ie_i|\lambda_i≠0\}^N_{i=1}</math>,该集合中的每个向量都被其对应的特征值加权,同时去除了零特征值及其对应的特征向量(新的状态数量为<math>N'=rank(P)</math>)。直观地说,忽略特征值为 0 的特征向量是有意义的,因为它对应了动力学中的简并性,而非零特征值及其对应特征向量则包含了丰富的网络拓扑结构信息;
+
# 构建新的有偏特征向量集合 <math>E’=\{\lambda_ie_i|\lambda_i≠0\}^N_{i=1}</math>,该集合中的每个向量都被其对应的特征值加权,同时去除了零特征值及其对应的特征向量(新的状态数量为 <math>N'=rank(P)</math>)。直观地说,忽略特征值为 0 的特征向量是有意义的,因为它对应了动力学中的简并性,而非零特征值及其对应特征向量则包含了丰富的网络拓扑结构信息;
 
# 依据 <math>E'</math> 计算状态间的相似矩阵 <math>D_{N'×N'}</math>:
 
# 依据 <math>E'</math> 计算状态间的相似矩阵 <math>D_{N'×N'}</math>:
 
## 如果状态 <math>v_i</math> 和 <math>v_j</math> 分别在对方的马尔科夫毯中,则通过新的特征向量计算两个节点的 cosine 相似性,作为两者间的相似度 <math>d_{ij}</math> 和 <math>d_{ji}</math>;
 
## 如果状态 <math>v_i</math> 和 <math>v_j</math> 分别在对方的马尔科夫毯中,则通过新的特征向量计算两个节点的 cosine 相似性,作为两者间的相似度 <math>d_{ij}</math> 和 <math>d_{ji}</math>;
 
## 否则将两个节点间的相似度设为无穷大 <math>\infty</math>(可以设个比较大的值,如10000);
 
## 否则将两个节点间的相似度设为无穷大 <math>\infty</math>(可以设个比较大的值,如10000);
−
# 基于相似度矩阵<math>D_{N'×N'}</math>和一个超参<math>\epsilon</math>(需要线性搜索,可以选择EI最大的参数),使用[[OPTICS]]算法(是一种基于密度的划分算法,旨在识别数据集中不同密度的划分结构)进行划分,输出对应超参<math>\epsilon</math>下的划分方式。
+
# 基于相似度矩阵 <math>D_{N'×N'}</math> 和一个超参 <math>\epsilon</math>(需要线性搜索,可以选择EI最大的参数),使用[[OPTICS]]算法(是一种基于密度的划分算法,旨在识别数据集中不同密度的划分结构)进行划分,输出对应超参 <math>\epsilon</math> 下的划分方式。
    
该方案的时间复杂度为<math>O(N^3)</math>。
 
该方案的时间复杂度为<math>O(N^3)</math>。
第619行: 第619行:  
'''缺点''':
 
'''缺点''':
 
# 对大规模动力学进行粗粒化时,对转移矩阵进行特征值分解的计算复杂度也较高
 
# 对大规模动力学进行粗粒化时,对转移矩阵进行特征值分解的计算复杂度也较高
−
# 聚类算法所需的距离超参<math>\epsilon</math>需要线性搜索,需要加入人为的先验知识
+
# 聚类算法所需的距离超参 <math>\epsilon</math> 需要线性搜索,需要加入人为的先验知识
    
<br/>
 
<br/>
第625行: 第625行:  
===寻找成块划分的谱分解方法===
 
===寻找成块划分的谱分解方法===
   −
当马尔科夫矩阵存在块状结构,或者状态明显可以被划分为几类时,根据这样的划分,该矩阵就是成块的。对于简单的<math>P</math>,如图6中的<math>\bar{P}</math>所示,我们能够很快找出它的成块划分<math>\Phi</math>。然而在实际应用中,我们经常遇到的矩阵并不完美。例如,成块矩阵的状态排序可能被打乱(如图(6)中的<math>P_1</math>),或者矩阵中混入了如<math>P_2</math>这样的噪声(如图6中的<math>P</math>,<math>P = P_1 + P_2</math>,<math>P_1^TP_2 = 0</math>)。在这种情况下,我们通常面临的是像<math>P</math>这样的矩阵:既无法确定它是否成块,也无法决定它的划分,甚至不知道它的马尔科夫秩。
+
当马尔科夫矩阵存在块状结构,或者状态明显可以被划分为几类时,根据这样的划分,该矩阵就是成块的。对于简单的 <math>P</math>,如图6中的 <math>\bar{P}</math> 所示,我们能够很快找出它的成块划分 <math>\Phi</math>。然而在实际应用中,我们经常遇到的矩阵并不完美。例如,成块矩阵的状态排序可能被打乱(如图(6)中的 <math>P_1</math>),或者矩阵中混入了如 <math>P_2</math> 这样的噪声(如图6中的 <math>P</math>,<math>P = P_1 + P_2</math>,<math>P_1^TP_2 = 0</math>)。在这种情况下,我们通常面临的是像 <math>P</math> 这样的矩阵:既无法确定它是否成块,也无法决定它的划分,甚至不知道它的马尔科夫秩。
    
[[文件:Lump fig1.png|缩略图|398x398像素|图6:Zhang<ref name=":4" /> 文章中的示意图。图中左面四个矩阵都是成块的马尔科夫矩阵,而右面的P_2是一个噪声矩阵,(P_1)^T P_2 = 0|替代=]]
 
[[文件:Lump fig1.png|缩略图|398x398像素|图6:Zhang<ref name=":4" /> 文章中的示意图。图中左面四个矩阵都是成块的马尔科夫矩阵,而右面的P_2是一个噪声矩阵,(P_1)^T P_2 = 0|替代=]]
第633行: 第633行:     
# 获取一个 <math>n\times n</math> 维的马尔科夫矩阵 <math>P</math>,或者马尔科夫链的频率采样,并由此得到频率矩阵 <math>F</math>;
 
# 获取一个 <math>n\times n</math> 维的马尔科夫矩阵 <math>P</math>,或者马尔科夫链的频率采样,并由此得到频率矩阵 <math>F</math>;
−
# 获取马尔科夫秩<math>r<n</math>,或指定一个<math>r</math>;
+
# 获取马尔科夫秩 <math>r<n</math>,或指定一个 <math>r</math>;
 
# 对 <math>F</math> 进行 SVD 分解,<math>F = U \Sigma V^T</math>,其中 <math>U</math> 为左奇异向量,<math>V</math> 为右奇异向量,<math>\Sigma = diag(\sigma_{1},\sigma_{2},...,\sigma_{N})</math> 是一个对角矩阵,包含所有有序奇异值;
 
# 对 <math>F</math> 进行 SVD 分解,<math>F = U \Sigma V^T</math>,其中 <math>U</math> 为左奇异向量,<math>V</math> 为右奇异向量,<math>\Sigma = diag(\sigma_{1},\sigma_{2},...,\sigma_{N})</math> 是一个对角矩阵,包含所有有序奇异值;
 
# 通过下列公式得到最优划分 <math>\Omega_1, \Omega_2, ... , \Omega_r</math>
 
# 通过下列公式得到最优划分 <math>\Omega_1, \Omega_2, ... , \Omega_r</math>
812

个编辑

导航菜单