什么叫Spectral Algorithm? 
广义上来说,任何在演算法中用到SVD/特征值分解的,都叫Spectral Algorithm。 从很老很老的PCA/LDA,到比较近的Spectral Embedding/Clustering,都属于这类。

为什么要用SVD/特征值分解?
其实并不是为用而用,而是不得不用。 目前在研究领域碰到的很多基础问题都是NP-hard的,找一个比较好的近似演算法要费很大的精力;就算找到多项式的近似方法,也会出现实际使用上仍然太慢/解陷入局部极小等问题。

比如说用K-means聚类,建模本身已经够简单了,但它是NP-hard的,用传统的EM迭代作近似解会陷入局部极小。

反之,SVD理论上只有唯一解,演算法速度相对又快,并且有大量理论结果及周边性质支持,可以算是一个很理想地能将NP-hard问题“靠”上去 的模型;它的另一个好处是,作为带约束二次规划的一种特殊情况,它对运算式为二次的目标函数的“相容性”比较好,“靠”所要求的数学技巧不高,任何人,任 何方向都能拿来试试。

Spectral Algorithm的几个方向:
传统的如PCA/LDA用来做线性降维,2000年左右的一些Spectral Embedding及Spectral Clustering,还有周边的一些,如Low-rank approximation等等。

为什么先做降维再做K-means,效果会更好呢?
另外,有趣的是K-means可以用PCA来做近似解。 K-means是说找到K个点,使得所有点到这K个点的距离平方和最小;
而SVD是说找到一个子空间,使得所有点到这个子空间的距离平方和最小。 于是这两者就建立了联系,K-means便relax到SVD上去了。

Spectral Clustering/Embedding:

Spectral Clustering可算是Spectral Algorithm的重头戏。
所谓Clustering,就是说聚 类,把一堆东西(合理地)分成两份或者K份。 从数学上来说,聚类的问题就相当于Graph Partition的问题,即给定一个图G = (V, E),如何把它的顶点集划分为不相交的子集,使得这种划分最好。 其难点主要有两个:

1.这个“合理”其实相当难达到,随便设一个目标函数可能达不到希望的结果。 大家可以看了看[1] Ravi Kannan and Adrian Vetta, On clusterings: good, bad and spectral,这里详细地讨论了一下准则的选择问题。
2.即使我们定义了一个相当好的聚类准则,如何优化它又是一个问题。

对于1,在Spectral Clustering这一块,各家有各家的想法。 主要有以下几种:
a)大名鼎鼎的Normalized Cut[2],还有一些变种如Ratio Cut/Minmax cut.
b)和代数图论紧密相联的Minimum conductance[1].
c)没有准则,但有证明的演算法[3]
d)不基于图,而是reformulate原来的聚类方法,使之变成SVD能解的问题[4]。
2则完全被1的选取所决定。

Normalized Cut:
在图上,定义什么样的聚类最好,最简单的方法是圈定K个不相交顶点集之后,希望顶点集之间的边,其权 值的和最小。 (边上的权值代表的是两头的顶点邻近的程度,或者说相似度)这就是所谓MinCut(最小割)问题。 二类分类的最小割不是NP-hard的,但是这不能让人感到开心,因为MinCut这个准则对于聚类不好。

具体来说,Mincut完全可能将离大部队过远的单个顶点与其他顶点分开,形成两类。
事实上,我们不仅仅要让割边的权和最小,而且要让这K个顶点集都差不多大,这样才符合聚类给人的直观感觉。

于是在MinCut的基础上,出现了Normalized Cut.思路很简单,将Cut normalize一下,除以表现顶点集大小的某种量度(如vol A =所有A中顶点集的度之和)。
也就是Normalize Cut(A, B) = Cut(A, B) / volA + cut(A, B) / volB
然而这样一改,NP-hard就来了。 这几乎是所有组合优化问题的恶梦。

怎么办呢? 把组合优化问题连续化,即所谓减少约束,进行适当的relax。 那么为什么会和SVD扯上的呢?

很简单,聚类是东西分成不相交集,也就是有正交的含义在里面;只是分东西必须是0-1式的,这种离散化,就是np-hard的原因。 我们把正交约束保留,但把离散变成连续的,聚类就变成了寻找(列)正交阵的优化问题,那正是SVD的火力所在!

就这样,通过这种巧妙的relax,NP-hard问题有了近似解。 且不说这近似解的质量如何,这种方法是相当令人振奋的。 (关于Normalized Cut近似解的质量,似乎没有什么文章能够给出严格的证明,只是实际效果不错就是了。)

值得一提的是,Normalized Cut还和图上的Markov chain有紧密的关系[5]。 Normalized Cut这个量度,换成Markov chain的语言就是在图上随机游走,子集间相互“串门”的概率大小。 相当有趣。

转载于:https://www.cnblogs.com/phoenixzq/archive/2010/12/01/1893446.html

一个不错的Spectral Clustering方法的总结相关推荐

  1. [转载]一个Spectral Clustering方法的小结

    什么叫SpectralAlgorithm?;广义上来说,任何在演算法中用到SVD/特征值分解的,都叫SpectralAlgorithm.从很老很老的PCA/LDA,到比较近的SpectralEmbed ...

  2. 一个不错的演讲、PPT的演示架构

    在演讲.PPT中,一个不错的演示架构方法,就是SCQA的方法,就是先说情景,然后说冲突,然后说疑问,再说解决方案.

  3. 【论文阅读和实现】On Spectral Clustering: Analysis and an algorithm【Python实现】

    On Spectral Clustering: Analysis and an algorithm https://github.com/Sean16SYSU/MachineLearningImple ...

  4. 谱聚类(Spectral Clustering)算法介绍

    一. 前言 本来想写关于聚类系列算法的介绍,但是聚类系列的其它几个算法原理比较简单,网上有大量的教程可以查阅.这里主要是介绍一下谱聚类算法,做一个学习笔记,同时也希望对想要了解该算法的朋友有一个帮助. ...

  5. Evolutionary Spectral Clustering by Incorporating Temporal Smoothness论文整理

    之前介绍了06年KDD会议上进化聚类的开创性论文,今天要介绍的就是借鉴其思想的优秀算法中的代表之一<结合时间平滑性的进化谱聚类>.作者Yun Chi等人发布在07年的KDD会议上. 论文题 ...

  6. 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut .

    聚类算法是ML中一个重要分支,一般采用unsupervised learning进行学习,本文根据常见聚类算法分类讲解K-Means, K-Medoids, GMM, Spectral cluster ...

  7. 谱聚类算法(Spectral Clustering)优化与扩展

    谱聚类算法(Spectral Clustering)优化与扩展 谱聚类(Spectral Clustering, SC)在前面的博文中已经详述,是一种基于图论的聚类方法,简单形象且理论基础充分,在社交 ...

  8. Spectral clustering 谱聚类讲解及实现

    简述 https://github.com/Sean16SYSU/MachineLearningImplement 这篇是在网上看了wiki之后写出来的代码. 附上一篇看过论文之后根据论文实现的版本: ...

  9. UA MATH567 高维统计III 随机矩阵8 社区发现 Spectral Clustering的理论分析

    UA MATH567 高维统计III 随机矩阵8 社区发现 Spectral Clustering的理论分析 上一讲我们完成了Stochastic Block Model与社区发现问题的建模,并描述了 ...

最新文章

  1. php中的网络接口,php中的接口interface
  2. 安装bigsur卡在12分钟_Big Sur为什么安装不了?macOS Big Sur无法完成安装的解决办法!...
  3. mongodb java 地理位置_Mongodb地理位置索引
  4. php订单系统 帝国cms,帝国CMS商城系统在线支付后,订单邮件提醒
  5. Deploy your UI5 application into SAP Cloud Platform and launch as a tile
  6. QT动态连接库的编写
  7. javascript解析机制——预解析
  8. Sunny Day ijk英语
  9. 路径问题--转发、重定向、表单、超链接
  10. [other] 代码量代码复杂度统计-lizard
  11. leetcode:String to Integer (atoi)
  12. Linux系统下卸载jdk的步骤
  13. mix2线刷开发板救砖_小米MIX2原版固件刷机包下载_小米MIX2线刷官方系统升级包...
  14. 元宇宙游戏控制这几个因素,正确姿势解锁元宇宙游戏开发盈利痛点
  15. Markdown 学习小记--进阶技巧-数学公式篇
  16. 【excel】插入其他文件做工作表
  17. ArcGIS数据编辑操作
  18. Proxy SwitchyOmega 2.5.20
  19. python的self.boardx -= 5 什么意思_python小白求帮助
  20. asp.net基于net的小美果蔬批发网-蔬菜商城系统-计算机毕业设计

热门文章

  1. 【 MATLAB 】使用 filter 函数产生给定线性时不变系统的单位阶跃响应
  2. springclould feign客户端添加全局参数
  3. node+express+MongoDB实现小商城服务端
  4. Git学习系列之Windows上安装Git之后的一些配置(图文详解)
  5. Nginx + Lua + redis (一)(转)
  6. shell里面的参数
  7. 构建百万访问量电子商务网站之LVS负载均衡(前端四层负载均衡器)[连载之电子商务系统架构]...
  8. JBoss Seam 3.0.0.Beta2 发布
  9. Xilinx网站资源导读
  10. ntp服务器响应每秒请求数量,批量、增量接口并发问题和NTP协议