多视角聚类学习(一)An overview of recent multi-view clustering

本文概述了近期多视图聚类领域的进展,包括基于图的模型、基于空间学习的模型及基于二进制编码学习的模型。重点介绍了AMGL、SwMC和MLAN等算法,探讨了当前挑战与未来方向。

原文链接

1.Introduction

随着多媒体技术的发展,数据的获取不像以前那么紧张了多视角数据开始大量出现,多视角数据在最终的数据表现形式上可能不同,但他们都代表着相同的东西。多视图学习在聚类问题上的应用产生了许多新颖的多视角聚类算法。
最原始的多视角聚类是简单地缝合所有地数据特征,然后使用它们进行聚类,这种方式没有利用不同观点之间的信息互补性,也没有任何可解释性。随后。一种基于混合模型和期望最大化算法的方法被提出,其核心思想是为每个集群学习一个模型,并将它们集成到一个统一的模型中。目前研究的多视角聚类算法大多从谱聚类和其他基于图的方法中导出,他们的目标不是致力于获得统一的相似矩阵,而是学习最终的指标矩阵,直接用于聚类。子空间聚类可以有效地降低数据的维数,在多视点聚类领域也得到了人们的关注。

2.Recent multi-view clustering algorithms

2.1Graph-based model

基于图的聚类算法以构建数据的相似度矩阵的目标,采用典型的谱聚类算法或其他一些方法进行最终的标签分配。

2.1.1AMGL无参数自动加权多重图学习

它通过修改传统的谱聚类模型来实现权值的自动分配,不需要任何超参数。

AMGL目标函数:
在这里插入图片描述
构造目标函数的拉格朗日函数,求出F的偏导数并令导数为零,将权重因子 w v w^v

深度学习多视图聚类是近年来多视图聚类研究中的热点,结合了深度学习技术多视图聚类方法,旨在处理具有多个不同视图数据的聚类问题。 ### 原理 近年来,深度学习技术在多视图聚类中的应用成为研究热点。深度嵌入式聚类(DEC)利用自动编码器从原始特征中提取低维潜在表示,然后优化学生的t - 分布和特征表示的目标分布,以实现聚类。相比之下,传统的多视图聚类算法大多使用线性和浅层嵌入来学习多视图数据的潜在结构 [^2]。 多视图子空间聚类(MVSC)的目标是通过学习多视图数据的融合表示,寻找到个统的子空间,然后在相应的子空间中分离数据。不过现有方法存在高时间和空间复杂度的问题,而基于锚点的多视图子空间聚类方法能够在显著减少存储和计算时间的同时,取得良好的聚类性能。通常,锚点图是等权重的,并融合为共识图,然后进行谱聚类以获得聚类结果 [^3]。 ### 应用场景 虽然给定引用未提及具体应用场景,但多视图聚类般可应用于计算机视觉领域,例如图像分类,不同视图可以是图像的颜色、纹理、形状等特征;在生物信息学中,不同视图可以是基因表达数据、蛋白质相互作用数据等,用于对生物样本进行聚类分析;在社交网络分析中,不同视图可以是用户的行为数据、社交关系数据等,以发现用户群体。 ### 算法实现 给定引用未提供具体算法实现代码,但可以参考般的深度学习多视图聚类的实现思路。以下是个简单的伪代码示例,展示了基于深度嵌入式聚类(DEC)的基本流程: ```python import torch import torch.nn as nn import torch.optim as optim # 定义自动编码器模型 class Autoencoder(nn.Module): def __init__(self, input_dim, hidden_dim): super(Autoencoder, self).__init__() self.encoder = nn.Sequential( nn.Linear(input_dim, hidden_dim), nn.ReLU() ) self.decoder = nn.Sequential( nn.Linear(hidden_dim, input_dim), nn.Sigmoid() ) def forward(self, x): x = self.encoder(x) x = self.decoder(x) return x # 初始化模型、损失函数和优化器 input_dim = 100 hidden_dim = 20 model = Autoencoder(input_dim, hidden_dim) criterion = nn.MSELoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # 训练自动编码器 def train_autoencoder(data, epochs): for epoch in range(epochs): outputs = model(data) loss = criterion(outputs, data) optimizer.zero_grad() loss.backward() optimizer.step() if (epoch + 1) % 10 == 0: print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}') # 假设 data 是多视图数据 data = torch.randn(1000, input_dim) train_autoencoder(data, epochs=100) # 提取低维潜在表示 latent_representation = model.encoder(data) # 后续步骤:优化学生的t - 分布和特征表示的目标分布以实现聚类 # 这里省略具体代码,因为这部分涉及更复杂的数学和算法 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值