[R] Classifying Intertwined Spirals

Joshua Gilbert joshuacgilbert at gmail.com
Fri Jan 27 19:25:27 CET 2006

I'm using an SVM as I've seen a paper that reported extremely good
results. I'm not having such luck. I'm also interested in ideas for
other approaches to the problem that can also be applied to general
problems (no assuming that we're looking for spirals).

Here is my code:
raw <- mlbench.spirals(194, 2)
spiral <- data.frame(class=as.factor(raw$classes), xx=raw$x[,1], y=raw$x[,2])
m <- svm(class~., data=spiral)
plot(m, spiral)

You'll note that I have two spirals with 97 points each and I'm using
a kernel with a radial basis: exp(-gamma*|u-v|^2).

You should be able to see a PNG of the resulting plot here:

The problem is that that's not good enough. I want a better fit. I
think I can get one, I just don't know how.

There's a paper on Proximal SVMs that claims a better result. To the
best of my knowledge, PSVMs should not outperform SVMs, they are
merely faster to compute. You can find the paper (with the picture of
their SVM) on citeseer:
@misc{ fung-proximal,
  author = "G. Fung and O. Mangasarian",
  title = "Proximal support vector machine classifiers",
  text = "G. Fung and O. Mangasarian. Proximal support vector machine
    In F. P. D. Lee and R. Srikant, editors, KDD",
  url = "citeseer.ifi.unizh.ch/515368.html" }

I don't have much of a background in SVMs, I'm learning as I go, so
please don't hold back 'simple-minded' suggestions.

I'm also asking the authors, but I'm not expecting a reply from them.

There was a paper by Lang and Whitbrock in 1988 (Learning to Tell Two
Spirals Apart) that solved the problem with a neural network, but they
used a very specialized network architecture. I would say that
discovering such an architecture and then optimizing it would be very

Thank you for any response.


More information about the R-help mailing list