谱聚类原理

谱聚类是基于图论的一种聚类方法。把n个样本点构成邻接矩阵。他们样本点之间的距离越大那么他们的权重越小,反之越大。那么我们如何来映射这种关系呢?这里用到高斯函数  W_{ij} = exp\frac{-(v_i-v_j)^2}{2\sigma ^2}    其中 W_{ij}  表示点i,j之间的权重。用W表示邻接矩阵(n*n的矩阵)

我们用 d_i 表示点 i 的度。D表示点的度矩阵。(D只有对角线上有元素,其他都为零。也是n*n的矩阵)

下面来看看图论里面的一个重要工具。拉普拉斯矩阵 L=D-W  这个矩阵有如下性质

  1. L 是对称矩阵,他的所有特征值都为实数
  2. 对于任意n维向量f 。有 f^TLf = \frac{1}{2}\sum_{i,j=1}^{n}w_{ij}(f_i-f_j)^2
  3. L是半正定的。所有的特征值都大于等于0.并且最小的特征值为0

有了上面的基础我们该考虑如何对图进行分割,才能达到聚类的效果 。对于切割得到的每一个子图需要满足两个条件。第一就是每一个子图内部的点之间的权重很大。第二就是子图与子图之间的权重很小。(一个子图就是一个簇)。

假设现在我们已经把原图分为了k个子图 A_1,A_2,A_3,......A_k.  

定义子图之间的权重 W(A,B) = \sum_{i\epsilon A,j\epsilon B}^{.}w_{ij}

那么对于切图的所有子图权重和的表达式为   W(A_1,A_2,A_3....A_k) = \sum_{i=1}^{k}W(A_i,\overset{-}{A_i})   其中 \overset{-}{A_i} 是 A_i 的补集。为了方便下面的运算我们另 W(A_1,A_2,A_3....A_k) =\frac{1}{2} \sum_{i=1}^{k}W(A_i,\overset{-}{A_i})  。这不会影响最终结果。

现在我们需要最小化W(A_1,A_2,A_3....A_k) =\frac{1}{2} \sum_{i=1}^{k}W(A_i,\overset{-}{A_i}) 这个式子。先不考虑如何求解这个目标函数。先看另一个问题。实践证明这个目标函数,会趋向于把偏远的离散点归为一个簇。我们肯定不需要这样的结果。所以我们需要对目标函数加一个惩罚项。结果为

W(A_1,A_2,A_3....A_k) =\frac{1}{2} \sum_{i=1}^{k}\frac{W(A_i,\overset{-}{A_i})}{\left | A_i \right |}     其中 \left | A_i \right |  表示 A_i 集合的元素个数。加入了惩罚项后目标函数会倾向于把更多的点聚到一个子图里。

现在开讨论如何求解目标函数。这里就要用到拉普拉斯矩阵了。首先取一个向量 f_i= (f_1,f_2,f_3....f_n) \: \: \: i=1,2,3,4.....k    (k个子图)

满足 \left\{\begin{matrix} f_{ij}=0\: \:\: \: \: f_{ij}\: \: !\epsilon \: \: A_i\\ f_{ij}=\frac{1}{\sqrt{\left | A_i \right |}}\: \:\: \: \: \: \: \: f_{ij}\: \: \epsilon\: \: \: A_i \end{matrix}\right.   (取这个条件也只是为了方便后面计算整合,而且这里也决定的如何划分子图。每一个f对应于一个子图)。当然由这个性质可以推出 F^TF=\frac{1}{\left | A_i \right |}I.其中 F= \begin{pmatrix} f_1\\f_2 \\ f_3 \\ ... \\ f_k \end{pmatrix}

下面来看看这个式子  f_i^TLf_i 的结果。通过计算发现  f_i^TLf_{i} = W(A_i,\overset{-}{A_i})  。整合所有的子图  \sum_{i=1}^{k}f_i^TLf_{i} = \sum_{i=1}^{k}(F^TLF)_{ii} = tr(F^TLF)   其中 F= \begin{pmatrix} f_1\\f_2 \\ f_3 \\ ... \\ f_k \end{pmatrix}    。也就是现在问题等价于  W(A_1,A_2,A_3....A_k) =\frac{1}{2} \sum_{i=1}^{k}W(A_i,\overset{-}{A_i})=tr(F^TLF)     。    我们来看看 L矩阵的特征值和特征向量。LH = \lambda H (其中H是其特征向量,\lambda是其特征值)。对这个式子变一下型  H^TLH = H^T\lambda H   。我们发现 f_i^Tf_i=\frac{1}{\left | A_i \right |}  对F进行标准化后(f=f*\left | A_i \right |

f就是L的一个特征向量。\lambda是对应的一个特征值 。现在问题就有变得简单了许多。也就是求解目标函数等价于找到L的前k个最小的特征值。找到了特征值后,我们就能找到与之对应的特征向量。前面说过了 f是特征向量。而且每一个f代表一个簇。\left\{\begin{matrix} f_{ij}=0\: \:\: \: \: f_{ij}\: \: !\epsilon \: \: A_i\\ f_{ij}=\frac{1}{\sqrt{\left | A_i \right |}}\: \:\: \: \: \: \: \: f_{ij}\: \: \epsilon\: \: \: A_i \end{matrix}\right.  根据f向量中的值我们可以判定簇中有哪些点。从而实现聚类。但是我们只选了前k个特征向量。在这k个特征向量中并没有包含所有的样本点。所以在得到了k个簇后。还需要在这k个簇的基础上进性一次k-means算法把没有包含的点聚类到已知簇中

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值