Reputation: 31
I try to make clustering with using SVM. I have social networks graph data. In my data nodes connect to each others. I want to use graph adjacency matrix as SVM input data. My SVM input data is below. My main problem is community detection in graph data.
Is it possible to cluster graph data with using SVM. Could you offer me some methods to do this. I am a beginner at 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
Upvotes: 2
Views: 2495
Reputation: 5286
There were couple of papers that talked about Support Vector Clustering; here is one that I am trying to evaluate: http://jmlr.org/papers/volume2/horn01a/rev1/horn01ar1.pdf
Also, found an R package here: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.190.9809
Upvotes: 0
Reputation: 1499
You can do the following:
Apply as many clustering algorithms as you want to your data.
Decide how many clusters you need to have (or use a number of clusters from any of the generated clusters).
Optimize the output produced so that output from the clustering algorithms matches the desired numbers of clusters (and those exact clusters). This is a tricky part!
Feed the SVM the data produced by the clusters such as centroids, mean-values etc.
Finally, use the trained SVM to generate the clusters based on your originally inputted data.
Therefore, the idea is to develop a general clustering model with SVMs, based on other clustering models... that way, you can have the unsupervised SVM clustering. A thing to note is that you would need as many clustering data-rows as possible to make SVMs work (otherwise, SVMs would output the single number for each input you give).
Source: Currently working on this approach.
Edited: grammar, etc.
Upvotes: 0
Reputation: 66775
In general SVM is for classification, as many have pointed out. Although there exists SVM based clustering algorithm, which, similarly to the oridinal SVM, can use the kernel trick, which allows you to work on various types of data, including graphs (graph kernels). Adjcacency matrix is rather bad representation of graph similarity (unless you are actually interested in very simple phenomena, but then using SVM based approach seems like a bit too much. Believe in the Ockham's razor - the simplest approaches are the best ones, I would suggest looking/using simplier clustering methods, and if they will be unsufficient, then consider switching to the SVM clustering.
I strongly suggest reading papers on this topic, as it is not as easy as it could seem, yet it is wellresearched topic:
For the implementation itself, matlab library (already mentioned) is located here: https://sites.google.com/site/daewonlee/research/svctoolbox
Upvotes: 1
Reputation: 11
SVM cannot do clustering, you can find multiclass SVM and other variation. On the other hand, Support Vector Clustering exists it is a slightly different approach than SVM but close. I don't know any package providing this algorithm, it is not very famous so far.
Upvotes: 1