2012-08-02 38 views
1

我尝试使用SVM进行聚类。我有社交网络图形数据。在我的数据节点中彼此连接。我想用图邻接矩阵作为SVM输入数据。我的SVM输入数据如下。我的主要问题是图形数据中的社区检测。使用图形数据的SVM聚类

是否可以使用SVM对图数据进行聚类。你可以给我一些方法来做到这一点。我是SVM的初学者。

1 1:0 2:1 3:1 4:1 5:1 

2 1:1 2:0 3:1 4:1 5:0 

3 1:1 2:1 3:0 4:1 5:0 

4 1:1 2:1 3:1 4:0 5:0 

5 1:1 2:0 3:0 4:0 5:0 

回答

1

SVM不能做聚类,你可以找到多类SVM和其他变体。另一方面,支持向量聚类的存在与SVM稍有不同,但接近。我不知道提供这种算法的任何包,到目前为止它还不是很有名。

0

一般来说SVM是用于分类的,正如很多人指出的那样。虽然存在基于SVM的聚类算法,但它与子系统SVM类似,可以使用kernel trick,它允许您处理各种类型的数据,包括图形(图形内核)。相邻矩阵是图形相似性的较差表示(除非实际上对非常简单的现象感兴趣,但是使用基于支持向量机的方法似乎有点太过分了。相信奥卡姆的剃刀 - 最简单的方法是最好的方法,我会建议查看/使用简单聚类方法,如果它们效率不高,则考虑切换到SVM集群。

我强烈建议阅读关于此主题的论文,因为它不像看起来那么容易,但它很好用话题:

  • Presentation regarding graph mining and graph kernels
  • 米歇尔纽豪斯,霍斯特Bunke:一个随机游走内核明镜来自图形编辑距离。 SSPR/SPR 2006:191-199
  • S.V.N. Vishwanathan,Karsten M. Borgwardt,Nicol N. Schraudolph:Graph Kernels的快速计算。 NIPS 2006:1449-1456

对于实现本身,(已经提到)MATLAB库位于:https://sites.google.com/site/daewonlee/research/svctoolbox

0

可以执行以下操作

  1. 应用尽可能多根据你想要的数据聚类算法。

  2. 决定您需要拥有多少个群集(或使用任何生成的群集中的多个群集)。

  3. 优化生成的输出,使聚类算法的输出与所需数量的聚类(以及那些精确聚类)相匹配。这是一个棘手的部分!

  4. 订阅SVM通过簇产生的数据,例如质心,平均值等

  5. 最后,使用训练的SVM来生成基于你最初输入的数据的集群。

因此,想法是开发与支持向量机的通用集群化模型,基于其他聚类分析模型 ...这样,你可以有监督的SVM集群。 需要注意的一点是,您需要尽可能多的聚类数据行来使SVM工作(否则,SVM将为您输入的每个输入输出单个数字)。

来源:目前正在研究这种方法。

编辑:语法等