谱聚类算法入门教程(二)—— 构造谱聚类算法的目标函数

1. 构造相似度矩阵

在教程的第一部分我们已经介绍过,谱聚类方法就是要把相似的点分在一起。因此,在一开始,我们需要有一个表示不同数据点之间相似度的值,这个值越大,表示两个数据点的越相似。

常常用于计算两个数据点之间相似度的函数有欧式距离,杰卡德相似系数,余弦相似度系数,高斯核函数等,这里不会告诉你应该使用什么核函数来计算两个数据点之间的相似度,因为选择什么函数来计算相似度最好目前也没有确定的结论。

假设给出数据集 V V V,数据集里保存了每个数据点(总共有 N N N 个数据点),由此我们可以构建一个 N X N N X N NXN 的相似度矩阵 W W W,矩阵 W W W 中第 i i i 行,第 j j j 列的元素 w i , j w_{i,j} wi,j 保存着数据集中第 i i i 个数据点和第 j j j 个数据点的相似度。

2. 一个简单的例子

下面我们将用一个简单的例子来更好地叙述谱聚类方法,这个例子将其扩展到更普遍的情况也是一样成立的。

假设我们有一个数据集: V { v 1 , v 2 , v 3 , v 4 , v 5 , v 6 } V\{v_1,v_2,v_3,v_4,v_5,v_6\} V{ v1,v2,v3,v4,v5,v6},每个数据点是一个二维向量,具体的值如下:

v 1 v_1 v1 v 2 v_2 v2 v 3 v_3 v3 v 4 v_4 v4 v 5 v_5 v5 v 6 v_6 v6
(0, 0) (0, 1) (1, 0) (4, 2) (5, 2) (5, 3)

画出数据集的散点图,如下所示:

从图中我们可以很清晰的看到,原来的6个数据点被分为了两类,我们用下面的方式表示( A ˉ \bar{A} Aˉ表示集合 A A A的补集):

A = v 1 , v 2 , v 3 A = {v_1,v_2,v_3} A=v1,v2,v3

A ˉ = v 4 , v 5 , v 6 \bar{A} = {v_4,v_5,v_6} Aˉ=v4,v5,v6

如果我们定义一个向量 f f f,如果对应编号的数据点在集合 A A A中,那么向量 f f f中对应行的值为1;反之,为 0,即:

f = [ 1 1 1 0 0 0 ] f = \left[ \begin{matrix} 1 \\ 1 \\ 1 \\ 0 \\ 0 \\ 0 \end{matrix}\right] f=111000

这样,我们就获得了一个所有数据点聚类结果的表示,求解这个向量的值就是我们的目标。

不过,上面的做法是对我们人来说的,机器并不能像我们一样一眼就看出来 v 1 , v 2 , v 3 v_1,v_2,v_3 v1,v2,v3 被分为一类, v 4 , v 5 , v 6 v_4,v_5,v_6 v4,v5,v6 被分为另一类,那么机器是怎么分析的呢?

首先,和我们在[第一部分](#1. 构造相似度矩阵)里说的一样,首先,我们需要构造一个相似度矩阵 W W W ,这里我们选择常用的高斯核函数:

w i , j = exp ⁡ ( − ∣ ∣ x i − x j ∣ ∣ 2 2 σ 2 ) w_{i,j} = \exp(-\displaystyle \frac{||x_i - x_j||^2}{2\sigma^2}) wi,j=exp(2σ2xixj2)

进过计算,我们可以得到下面的相似度矩阵 W W W,矩阵中值为 0 的元素表示值非常小,所以用 0 表示:

W = [ 1 0.6 0.6 0 0 0 0.6 1 0.37 0.0002 0 0 0.6 0.37 1 0.0015 0 0 0 0.0002 0.0015 1 0.6 0.37 0 0 0 0.6 1 0.6 0 0 0 0.37 0.6 1 ] W = \left[ \begin{matrix} 1 & 0.6 & 0.6 & 0 & 0 & 0 \\ 0.6 & 1 & 0.37 & 0.0002 & 0 & 0 \\ 0.6 & 0.37 & 1 & 0.0015 & 0 & 0 \\ 0 & 0.0002 & 0.0015 & 1 & 0.6 & 0.37 \\ 0 & 0 & 0 & 0.6 & 1 & 0.6 \\ 0 & 0 & 0 & 0.37 & 0.6 & 1\end{matrix}\right] W=10.60.60000.610.370.0002000.60.3710.00150000.00020.001510.60.370000.610.60000.370.61

这是一个 6 X 6 的对称矩阵,那么下一步就是求解我们的目标向量:

f = [ f 1 = ? f 2 = ? f 3 = ? f 4 = ? f 5 = ? f 6 = ? ] f = \left[ \begin{matrix} f_1=? \\ f_2=? \\ f_3=? \\ f_4=? \\ f_5=? \\ f_6=? \end{matrix}\right] f=f1=?f2=?f3=?f4=?f5=?f6=?

如何求解上面的目标向量呢?考虑下面的式子:

R = ∑ i , j = 1 6 w i , j ( f i − f j ) 2 R = \displaystyle \sum_{i,j = 1}^{6}w_{i,j}(f_i-f_j)^2 R=i,j=16wi,j(fifj)2

我们可以发现,给定一个 f f f,代入上面的公式,如果 R R R 的值越大,说明我们的不同聚类之间的相似度之和越大,而不同聚类之间的相似度应该是越小越好的,所以说明这个聚类的效果是不好的;反之同理。背后的原理很容易理解,因为上述公式就是计算一个聚类的所有元素到另一个聚类的所有元素的相似度之和。

举一个简单的例子:

f = [ 1 1 1 0 0 0 ] T f=\left[ \begin{matrix} 1 & 1 & 1 & 0 & 0 & 0\end{matrix}\right]^T f=[111000]T(为了方便表示,这里的 f f f 使用转置1表示,和上面的表示是一样的),从图上看,即:

W = [ 1 0.6 0.6 0 0 0 0.6 1 0.37 0.0002 0 0 0.6 0.37 1 0.0015 0 0 0 0.0002 0.0015 1 0.6 0.37 0 0 0 0.6 1 0.6 0 0 0 0.37 0.6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值