欢迎光临散文网 会员登陆 & 注册

机器学习谱聚类详解

2022-11-24 00:20 作者:021usc  | 我要投稿

完整文档和代码

https://gitee.com/youryouth/mc/tree/master/spectral_clustering

完整文档和代码
文档截图

一、概述

对于下图所示的数据进行聚类,可以采用GMM或者K-Means的方法:

数据

然而对于下图所示的数据,单纯的GMM和K-Means就无效了,可以通过核方法对数据进行转换,然后再进行聚类:


数据

如果直接对上图所示的数据进行聚类的话可以考虑采用谱聚类(spectral clustering)的方法。

总结来说,聚类算法可以分为两种思路:

①Compactness,这类有 K-means,GMM 等,但是这类算法只能处理凸集,为了处理非凸的样本集,必须引⼊核技巧。
②Connectivity,这类以谱聚类为代表。

关于凸集和非凸,如下图左非凸,图右凸

非凸和凸集

二、基础知识

无向权重图

谱聚类的方法基于带权重的无向图,图的每个节点是一个样本点,图的边有权重,权重代表两个样本点的相似度。

假设总共N个样本点,这些样本点构成的图可以用G%3D(V%2CE)表示,其中V%3D%5C%7Bv_1%2C%20v_2%2C...v_N%5C%7D,图中的每个点v_i也就代表了一个样本x_iE是边,用邻接矩阵(相似度矩阵)W_%7BN%C3%97X%7D来表示,W%3D%5Bw_%7Bij%7D%5D%2Ci%E2%89%A51%2CN%E2%89%A5j,由于是无向图,因此W_%7Bij%7D%20%3D%20W_%7Bji%7D

另外还有度的概念,这里可以类比有向图中的出度和入度的概念,不过图中的点v_i的度d_i

并不是和该点相连的点的数量,而是和其相连的边的权重之和,也就是邻接矩阵的每一行的值加起来,即:

d_%7Bi%7D%3D%5Csum_%7Bj%3D1%7D%5E%7BN%7D%20w_%7Bi%20j%7D

而图的度矩阵(对角矩阵)D_%7BN%C3%97N%7D可以表示如下:

D%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bllll%7D%0Ad_%7B1%7D%20%26%20%26%20%5C%5C%0A%26%20d_%7B2%7D%20%26%20%5C%5C%0A%26%20%26%20%5C%5C%0A%26%20%26%20d_%7BN%7D%0A%5Cend%7Barray%7D%5Cright%5D

另外我们定义,对于点集V的一个子集A%E2%88%88V,我们定义%7CA%7C等于子集A中点的个数

%5Coperatorname%7Bvol%7D(A)%3A%3D%5Csum_%7Bi%20%5Cin%20A%7D%20d_%7Bi%7D

构建邻接矩阵

%5Cepsilon%20-近邻法

首先需要设置一个阈值%5Cepsilon%20,比较任意两点x_ix_j之间的距离s_%7Bij%7D%3D%7C%7Cx_i-x_j%7C%7C%5E2_%7B2%7D%5Cepsilon%20的大小,定义邻接矩阵如下:

w_%7Bi%20j%7D%3D%5Cleft%5C%7B%5Cbegin%7Barray%7D%7Bl%7D%0A0%2C%20s_%7Bi%20j%7D%3E%5Cepsilon%20%5C%5C%0A%5Cepsilon%2C%20s_%7Bi%20j%7D%20%5Cleq%20%5Cepsilon%0A%5Cend%7Barray%7D%5Cright.

这种方法表示如果两个样本点之间的欧氏距离的平方小于阈值%5Cepsilon%20,则它们之间是有边的。

因为不支持markdown语法,关于其他构建邻接矩阵方法可以参考链接,下面只贴出代码的运行结果。


运行结果

运行结果对比


机器学习谱聚类详解的评论 (共 条)

分享到微博请遵守国家法律