CiteSpace进阶:如何对聚类结果进行二次聚类分析

1次阅读
没有评论

共计 1929 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

背景痛点

在文献计量分析中,使用 CiteSpace 进行关键词或文献聚类是常见操作。但单次聚类常常面临两大问题:

CiteSpace 进阶:如何对聚类结果进行二次聚类分析

  • 主题混杂 :当研究领域交叉性强时,单个聚类可能包含多个子主题。比如在 ” 机器学习 ” 聚类中,可能混杂着 ” 深度学习 ”、” 强化学习 ” 等不同分支
  • 粒度不均 :受算法参数限制,部分聚类过大(如包含 50+ 节点)而另一些过小(仅 3 - 5 个节点),影响后续分析

典型场景示例:分析人工智能领域文献时,首次聚类得到 ” 自然语言处理 ” 这个大类别,实际需要进一步拆分为 ” 机器翻译 ”、” 文本生成 ” 等细分方向

技术验证

经测试 CiteSpace6.2.R4 版本,发现其原生界面不支持直接对聚类结果二次操作,但可通过数据导出 + 外部处理 + 重新导入实现:

  1. 算法对比 :
  2. 首次聚类默认使用 Louvain 算法(适合快速发现社区结构)
  3. 二次聚类推荐 Leiden 算法(改进社区划分质量,尤其适合处理小规模网络)

  4. 效果差异 :
    | 指标 | 直接聚类 | 二次聚类 |
    |—————|———-|———-|
    | 模块度 (Q 值) | 0.72 | 0.68 |
    | 轮廓系数 | 0.55 | 0.62 |
    | 聚类大小方差 | 高 | 低 |

实现方案

步骤 1:数据导出与预处理

从 CiteSpace 导出两种关键数据:

  • cluster_membership.csv(包含节点 - 聚类归属关系)
  • cooccurrence_matrix.csv(共现矩阵)

使用 Python 进行数据清洗:

import pandas as pd
import numpy as np

# 读取聚类数据
df_cluster = pd.read_csv('cluster_membership.csv')
# 筛选需要细分的聚类(示例:处理第 5 号聚类)target_cluster = df_cluster[df_cluster['cluster'] == 5]

# 加载共现矩阵并过滤
matrix = pd.read_csv('cooccurrence_matrix.csv', index_col=0)
sub_matrix = matrix.loc[target_cluster['node'], target_cluster['node']]

# 处理缺失值
sub_matrix = sub_matrix.fillna(0)

步骤 2:二次聚类实施

关键参数配置建议:

  • 相似度阈值 :通常设为原始矩阵的 75% 分位数
  • 最小节点数 :建议≥5 以保证统计意义
  • 分辨率参数 :Leiden 算法中 1.0 为默认值,增大可获更多小聚类
from leidenalg import find_partition
import igraph as ig

# 转换为 igraph 对象
g = ig.Graph.Weighted_Adjacency(sub_matrix.values.tolist())

# 执行 Leiden 聚类
partition = find_partition(g, partition_type='RBConfiguration', 
                          resolution_parameter=1.2)

# 保存结果
for i, community in enumerate(partition):
    target_cluster.loc[community, 'new_cluster'] = f'5_{i}'

可视化优化

二次聚类后的可视化挑战主要来自:

  • 标签重叠(特别是子聚类间距过近时)
  • 颜色区分度不足

Gephi 解决方案 :

  1. 使用 ”Multilevel” 布局先定位主聚类
  2. 对每个主聚类启用 ”Expansion” 插件进行局部展开
  3. 颜色编码采用:
  4. 一级聚类:色相差异(如红 / 蓝 / 绿)
  5. 二级聚类:饱和度差异(如深红 / 浅红)

避坑指南

过度聚类预防

  • 监控模块度 Q 值:当 <0.3 时应停止继续细分
  • 设置最小聚类规模(建议不少于原始节点的 5%)

术语歧义处理

  1. 同义词合并 :建立领域术语表提前归一化
  2. 词义消歧 :
    # 示例:区分 "transformer" 的两种含义
    context_keywords = {'电力': ['voltage', 'power'],
        'NLP': ['bert', 'attention']
    }
  3. 人工校验 :对边界节点进行专家复核

内存管理

  • 处理大型矩阵时使用稀疏矩阵格式:
    from scipy import sparse
    sparse_matrix = sparse.csr_matrix(sub_matrix)
  • 分块处理超过 10,000 节点的网络

测试资源

示例数据集与配置文件已上传: 下载链接
包含:
– 预处理好的 AI 领域文献数据
– 参数模板(含注释说明)
– Gephi 样式配置文件

通过这种二次聚类方法,我们在新冠文献分析中成功将 ” 治疗 ” 大类细分为 ” 药物研发 ”、” 疫苗临床试验 ” 等子类,使研究热点演化路径更加清晰。建议首次使用时先在小数据集(<500 节点)上验证参数效果,再扩展到全量分析。

正文完
 0
评论(没有评论)