Implementing one-class SVM for Novelty Detection

Hi,
I want to implement one-class SVM in Julia(SVM.jl) very similar to scikit-learn in python (here).

I see that SVM.jl is unmaintained and will be removed from the metadata shortly. Is it going to be removed for sure? What would be the alternative to SVM.jl?

Probably the best course of action is to just go for it and create a new package if the topic is something that interests you. There certainly is room for it and I am sure people would find it useful if it is well made

1 Like

@Evizero any reason you didnā€™t mention your
GitHub - Evizero/KSVM.jl: Support Vector Machines (SVM) in pure Julia?

Yes. I donā€™t want to discourage innovation because of the existence of a half finished package. At this state it should not be considered as relevant to anyone who is interested into tackling SVMs themselves.

I started KSVM with a very particular vision of what it should be, but quickly discovered that I need some other building blocks first in order to realize my plan the way I want to. Some parts are almost there (such as LossFunctions.jl), some I still need to flesh out. Basically I am following a bottom up approach that has very little ā€œvisibleā€ progress, so I try to keep quiet unless I have something concrete to report. I only have my spare time available for this, but I will get there eventually.

2 Likes

Hi,
After a little bit of research, I found that scikit-learnā€™s one class SVM is implemented on the top of the famous LibSVM implementation of svm.

I think LIBSVM.jl is the package that I have been looking for. Certainly, native implementation is on my bucket list too :slight_smile:

Just curious, why is SVM.jl no longer maintained? What is the scope of improvement so that we can have it registered again in METADATA?
I would be happy to volunteer for it.

SVM.jl never really worked very well. I wouldnā€™t bother trying to restore it.

1 Like

LIBSVM.jl has now a new release v0.1.0 with added one-class SVM support and several other fixes.

1 Like

Has there been any further activity on this? I have tested the One-Class LIBSVM.jl implementation on simple test examples and it gives wrong answers (see my GitHub post on the LIBSVM.jl page). I have started a new query on Discourse about it because this thread is so old (also, I had missed this thread on my earlier searches).

Hi, Iā€™ve been meaning to look into SVMs, and related, myself. Maybe you can use SciKitLearn through the Julia wrapper or some of these other libraries?

https://github.com/innerlee/LIBLINEAR.jl

https://jump.dev/Convex.jl/v0.13.2/examples/general_examples/svm/

Hi. The last Convex link is very helpful and interesting indeed.
Thank you so much for that.

ScikitLearn apparenly uses LIBSVM and is just an additional interface. However, someone helpfully pointed out that by adjusting the ā€˜nuā€™ parameter away from the default value (a blanket value set mainly for other SV types) one can get good performance.

Regarding the LIBINEAR it looks like it is still in development, but will be interesting as it develops.

Thanks!

Thereā€™s also https://github.com/theogf/AugmentedGaussianProcesses.jl (more general package than BayesianSVM.jl).