聚类算法 距离矩阵_数据挖掘入门笔记——谱聚类(初来乍到)

dd6c6f21ae548001a0c67a878fb9eb7f.png

写在前面:健忘星人自学笔记,仅供参考

本章预计简单介绍一下谱聚类的内容,由于谱聚类是基于图论的,虽然使用起来简单,但是理解清楚并不容易,需要一定的知识铺垫,对萌新很不友好,一部分推导内容下文省略。

但是大家如果能认真啃下来问题不是很大,下面是一篇较为简单易懂的阅读材料,希望能有帮助

谱聚类详细、入门级介绍 - 百度文库​wenku.baidu.com

专业性较好的参考资料:

https://blog.csdn.net/qq_24519677/article/details/82291867​blog.csdn.net

一、谱聚类原理

谱聚类,是一种基于 图论 的聚类方法,通过样本数据的 拉普拉斯矩阵的特征向量 进行聚类。

上面的定义看不懂没关系,我们换一种说法。

谱聚类的思想,是将原问题转化为“图分割“的问题。

这里面涉及两个关键的步骤:

(1) 如何将原数据,转化为“无向权重图“

(2)如何对图进行分割?

1.1 无向图定义

73163a16434cacb28963ef29f5d63e9f.png

上图是一张“无向权重图“示例

图,是若干个 顶点 相互连接组成的,分为无向图和有向图。

边没有方向的图,称为无向图。

在上图中,我们观察到有6个顶点,也就是有6组数据样本,用 V={

} 表示。两个顶点之间由蓝色的边连接,用字母 E 表示边集。

无向图,表示为 G(V, E)

我们注意到,边上显示的数字表示的是两个顶点之间的逻辑关系(相似程度),我们称之为“权重”,用

来表示。(
>0 )

在无向图中,边的权重

( 因为边没有方向 )

并且,

1.2 图分割初探

在绘制出无向图之后,我们想要做的,是将图完全分成若干个子图。

要求: 同子图内的点相似度高;
不同子图内的点相似度低;

80776f9d0f681ca8858fb0ab0011da8f.png

上图的划分,看起来似乎是一个不错的选择。

这样切图的方法,我们截断了两条边,损失函数可以定义为被截断边的权重之和

如何选择一个最佳的截断方式? 我们很自然会想到最小化

损失函数。

但是直接最小化,又会遇到一个问题,

b0b57901121ef15614bc245da2085d50.png
错误的分割

例如,按照上图的分割,切成了单点离散的图,显然这样是最快且最能满足那个最小化操作的。但这明显不是想要的结果,合理的切分结果应该是组内的样本点尽可能的多,所以后面我们要学习 RatioCut 和 Ncut 的分割方法。

通过上面的介绍,希望大家能对谱聚类的原理有一个大体上的了解,下面我们将对算法详细展开。

二、无向图权重

73163a16434cacb28963ef29f5d63e9f.png

在上面的例子里,我们定义了顶点 i 和 顶点 j 连接起来的边的权重为

将所有权重以矩阵的形式存放,我们称之为邻接矩阵

以上图为例,

34946493809a600907daf193db801e01.png

注意:

( 因为边没有方向 ),并且,

这里我们直接给出了邻接矩阵里的数值。但是在谱聚类问题中,我们只有顶点向量,怎么才能计算得到邻接矩阵呢?

权重的基本思想是,距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高。

但这仅仅是定性,我们需要定量的权重值。

一般来说,我们可以通过样本点距离度量的相似矩阵 S 来获得邻接矩阵W。

构建邻接矩阵W的方法有三类:ϵ-邻近法,Knn 和全连接法。

(1)ϵ-邻近法 (很少用)

对于ϵ-邻近法,它设置了一个距离阈值ϵ,然后用欧式距离

度量任意两点
的距离。

然后根据

和 ϵ 的大小关系,来定义邻接矩阵W :

d271a6bbea6d95a42f0022560b8e50e5.png

从上式可见,两点间的权重要不就是ϵ ,要不就是0,矩阵中没有携带关于数据集的太多信息,所以该方法一般很少使用,在sklearn中也没有使用该方法。

(2)Knn

基本思想是,利用 Knn 算法遍历所有的样本点,取每个样本最近的 k 个点作为近邻,只有和样本距离最近的 k 个点之间的

但是,由于每个样本点的 k 个近邻可能不是完全相同的,所以用此方法构造的相似度矩阵并不是对称的。

为了解决这种问题,一般采取下面两种方法之一:

方法一、只要一个点在另一个点的K近邻中,就保留

方法二、必须两个点互为K近邻,才能保留

(很显然第二种方式比第一种方式生成的相似度矩阵要稀疏。)

(3)全连接法(最常用)

相比前两种方法中,全连接法中所有的点之间的权重值都大于0。

可以选择不同的核函数来定义边权重,常用的有:多项式核函数,高斯核函数和Sigmoid核函数。其中,最常用的是高斯核函数RBF,在sklearn中默认的也是该方法,此时相似矩阵和邻接矩阵相同:

a014015db3bf50245ca5ca0b2207a012.png
高斯核函数

从公式中可以看出,任意两个样本点都有相似度,但是距离较远的样本点之间相似度较低,甚至可以忽略。

其中,参数

控制着样本点的邻域宽度,
越大表示样本点与距离较远的样本点的相似度越大,反之亦然。

上面说了这么多,还只解决了第一个问题,如何将原数据转化为无向权重图 ?

下面我们要说,如何对图进行分割?

三、损失函数与拉普拉斯矩阵

之前,我们定义了损失函数——被截断边的权重之和

假设 G( V, E) 被划分为 G1,G2 两个子图,设G有 n 个顶点

定义 q = [

] 是一个 n 维向量,用来表示划分方案

77c00c26e83700a6f192414a88b84e0d.png

例如,

80776f9d0f681ca8858fb0ab0011da8f.png

按照上图划分,q = [

]

分子可变换为,

因此,

其中,

为拉普拉斯矩阵。

补充知识:

若一个矩阵为拉普拉斯矩阵,则其对任意一个向量

都有,

3bcaa499dc738e6cff6f4a854c576a67.png

拉普拉斯矩阵的计算:

其中,D 为度矩阵,W 为邻接矩阵

邻接矩阵在上面已经介绍过,下面补充介绍一下 度矩阵

对于任意一个点 i,它的度 di 定义为和它相连的所有边的权重之和,即

利用点的定义,度矩阵D是一个对角矩阵,只有主对角线有值。

94cc8bf9645c9d21ab5bef83257a3325.png

举例,

73163a16434cacb28963ef29f5d63e9f.png

顶点1的度,d1 = 0.8 +0.6 +0.1 = 1.5

55c81265a5179c07c06dd131c174ef56.png
图片引用自推荐阅读材料1

166512594d4e8ba7734e942605da1bf0.png
图片引用自,推荐阅读材料1

四、图分割

上面我们对损失函数进行了一系列变换,最终得到

图形分割的一种方法——最小切(Minimum Cut),就是直接最小化上式。

但是之前我们也说过,在许多情况下 Minimum Cut 只是简单的将图中的一个顶点与其余的顶点分开,这并不是我们想要的结果。所以mincut在实际中并不常用。

合理的切分应该是组内的样本点尽可能的多。

下面我们介绍另外两个切图方式 Ratio Cut 和 Normalized Cut,二者都在上式的基础上进行了一定的改进。

50d50c923561e2cb8c865c487f80a90d.png
在 RatioCut 切图中,不仅要考虑使不同组之间的权重最小化,也考虑了使每个组中的样本点尽量多。
在 N Cut 切图中,除了考虑最小化损失函数之外,还考虑了子图之间的权重大小。
由于子图样本的个数多并不一定权重就大,切图时基于权重也更合目标, 因此一般来说Ncut 切图优于 RatioCut 切图。

证明及推导过程省略,详细请参考推荐阅读2

也可以参考,

转载自:【聚类算法】谱聚类(Spectral Clustering)​www.cnblogs.com
7a1ad695e6d4a618666491d1d3928578.png

(有空的时候再详细分解)

五、优缺点

优点:

1)谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法比如K-Means很难做到
2)由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好。

缺点:

1)如果最终聚类的维度非常高,则由于降维的幅度不够,谱聚类的运行速度和最后的聚类效果均不好。
2) 聚类效果依赖于相似矩阵,不同的相似矩阵得到的最终聚类效果可能很不同

今天的内容就到这里,感谢观看~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值