IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 复现GMC: Graph-based Multi-view Clustering -> 正文阅读

[C++知识库]复现GMC: Graph-based Multi-view Clustering

运行虚拟数据集结果

Input the name of data set: (TwoMoon or ThreeRing)
TwoMoon
iter = 5 lambda:16
Data set TwoMoon-> ACC:1.0000	NMI:1.0000	ARI:1.0000	error_cnt:0

运行真实数据集结果

iter = 6 lambda:8
100leaves
=====In iteration 1=====
ACC:0.8237	NMI:0.9292	ARI:0.4974	error_cnt:282
iter = 7 lambda:64
3sources
=====In iteration 1=====
ACC:0.6923	NMI:0.6216	ARI:0.4431	error_cnt:52
iter = 8 lambda:128
BBC
=====In iteration 1=====
ACC:0.6934	NMI:0.5628	ARI:0.4789	error_cnt:210
iter = 6 lambda:32
BBCSport
=====In iteration 1=====
ACC:0.8070	NMI:0.7600	ARI:0.7218	error_cnt:105
iter = 8 lambda:128
HW
=====In iteration 1=====
ACC:0.8820	NMI:0.9041	ARI:0.8496	error_cnt:236
iter = 6 lambda:32
HW2sources
=====In iteration 1=====
ACC:0.9940	NMI:0.9853	ARI:0.9867	error_cnt:12
iter = 6 lambda:32
NGs
=====In iteration 1=====
ACC:0.9820	NMI:0.9392	ARI:0.9554	error_cnt:9
iter = 7 lambda:64
WebKB
=====In iteration 1=====
ACC:0.7586	NMI:0.4133	ARI:0.4169	error_cnt:49
iter = 7 lambda:64
Hdigit
=====In iteration 1=====
ACC:0.9981	NMI:0.9939	ARI:0.9958	error_cnt:19
iter = 8 lambda:128
Mfeat
=====In iteration 1=====
ACC:0.8820	NMI:0.9041	ARI:0.8496	error_cnt:236

——————————
读取虚拟数据集TwoMoon
得到1x2个200x2的X,转置得到1x2个2x200的data
调用GMC,求解
m i n ∑ v ∑ i ∣ ∣ x i ? x j ∣ ∣ 2 s i j + α ∣ ∣ s i ∣ ∣ 2 + w v ∣ ∣ U ? S v ∣ ∣ 2 + λ ? t r a c e ( F T L u F ) min \sum_v{\sum_i{||x_i - x_j||^2s_{ij} + \alpha||s_i||^2} + w_v||U - Sv||^2 + \lambda*trace(F^TL_uF)} minv?i?xi??xj?2sij?+αsi?2+wv?U?Sv2+λ?trace(FTLu?F)
s.t S v > = 0 , 1 T S i v = 1 , U > = 0 , 1 T U i = 1 , F T F = I S^v>=0, 1^TS^v_i=1, U>=0, 1^TU_i=1, F^TF=I Sv>=0,1TSiv?=1,U>=0,1TUi?=1,FTF=I

输入:
data		多视图数据集,即两个视图
c			聚类数=2
lambda		λ=1
normData	=0,就不需要做z-score标准化
输出:
y			最终的聚类结果,即聚类指标向量
U			统一矩阵
S0			每个视图的相似性诱导图 (SIG) 矩阵
S0_initial	
F			图拉普拉斯矩阵的特征值
evs			嵌入表示

初始化1x2的S0
遍历两个视图,调用InitializeSIGs

参考Laplacian rank algorithm for graph-based clustering
输入:
X{i}		每列都是一个数据点
pn			邻居数k=15
issymmetric	0,如果为1则S = (S+S')/2
输出:
S0{i}		相似矩阵,每一行是一个数据点
D

调用L2_distance_1,计算当前X{i}的平方欧氏距离,其实应该说是2范数 ∣ ∣ A ? B ∣ ∣ 2 = ∣ ∣ A ∣ ∣ 2 + ∣ ∣ B ∣ ∣ 2 ? 2 A T B ||A-B||^2 = ||A||^2 + ||B||^2 - 2A^TB A?B2=A2+B2?2ATB

aa=sum(a.*a); 
bb=sum(b.*b); 
ab=a'*b;  
d = repmat(aa',[1 size(bb,2)]) + repmat(bb,[size(aa,2) 1]) - 2*ab;
d = real(d); 
d = max(d,0); 
d = d - diag(diag(d)); 

再对得到200x200的D每行升序排列得到索引矩阵idx
取D升序每行的[2:17]这16个距离记作di,构造每行的S
S ( i ) = d i ( 16 ) ? d i 15 d i ( 16 ) ? ∑ j = 1 15 d i ( j ) + e p s S(i)=\frac{d_i(16)-d_i}{15d_i(16)-\sum\limits_{j=1}^{15}d_i(j)+eps} S(i)=15di?(16)?j=115?di?(j)+epsdi?(16)?di??(明明论文里说是用高斯核的,但这个结果倒挺像什么插值的)
最终得到200x200的稀疏S(有元素的位置索引就是对应idx的值)
最终得到1x2的200x200的S0_initial

接下来构造200x200的U,S0的两个分块对应求平均数得到
再对应U的每行计算U(j,:) = U(j,:)/sum(U(j,:))(归一化?)

sU = (U+U')/2; 
D = diag(sum(sU)); 
L = D - sU; 

调用eig1

输入:
A		=L
c		=2
isMax	=0
isSym	=1
输出:
eigvec		L最小的两个特征值对应的特征向量=F[200x2]
eigval		L最小的两个特征值
eigval_full	L升序的特征值=evs[200x1]

nargin=3所以令isSym = 1,从而有A = max(A,A’)(对应取A和A’的最大值)
计算A的特征向量矩阵v和特征值列向量d
再对d升序

计算i视图的X{i}的2范数得到ed[1x2x200x200]

迭代20轮,依次更新 S v , w , U , F , λ , S^v,w,U,F,\lambda, SvwUFλ
(更新过程看不明白啊,另外这不是深度学习啊,全靠数学公式智能优化,大概这种MATLAB写的都不用看了吧;另外虽然可能可以参考一下思想,但看不懂是大问题,麻了)

生成结果图(和论文上的一样)

[clusternum, y]=graphconncomp(sparse(sU)); y = y';
if clusternum ~= c
    fprintf('Can not find the correct cluster number: %d\n', c)
end; 

以原论文采用的3sources数据集为例,
实例169个,视图3个,最终聚类分簇6个,每个视图的每个实例特征维度不统一三千以上,但是其实还是节点级别的!!!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:20:07  更:2021-10-11 17:21:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 20:21:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计