bbc数据集在SDCN算法下的结果
SDCN初始化
args.lr = 1e-4
args.k = None
args.n_clusters = 5
args.n_input = 5000
AE pretrain 数值
model = AE(
n_enc_1=500,
n_enc_2=500,
n_enc_3=2000,
n_dec_1=2000,
n_dec_2=500,
n_dec_3=500,
n_input=5000,
n_z=10,).cuda()
其中5000是通过tfidf处理后的最多提取的特征数
AE预训练结果
可以从图中看出,最开始的指标很低,在200多epoch后达到最高值,loss呈现下降(但不知道为什么loss那么低)
SDCN结果
从图中可以看到,Q和P指标较为接近,且比Z指标高很多
res1 = tmp_q.cpu().numpy().argmax(1) #Q
res2 = pred.data.cpu().numpy().argmax(1) #Z
res3 = p.data.cpu().numpy().argmax(1) #P
Q, Z, P在train_sdcn函数中表示:
- 目标分布P(SDCN-P):它是通过自编码器学习到的数据表示。目标分布P能够引导整个模型的更新,提供了一个准确性较高的参考。
- 分布Q(SDCN-Q):它是通过图卷积网络(GCN)学习到的数据表示。由于自编码器和GCN学习到的信息可能存在差异,因此SDCN-Q可能与目标分布P产生冲突。
- 分布Z(SDCN-Z):也是通过图卷积网络(GCN)学习得到的数据表示。随着训练轮数增加,并且受目标分布P引导缓解冲突后,SDCN-Z逐渐趋于一致并提高准确性。
三者关系可由SDCN框架图显示:
稳定结果
三个指标的acc都稳定在0.8,nmi在0.7,ari在0.65,f1在0.77