You are on page 1of 4

LIBSVM -- A Library for Support Vector Machines

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

LIBSVM -- A Library for Support Vector Machines Chih-Chung Chang and Chih-Jen Lin
Version 3.17 released on April Fools' day, 2013. We slightly adjust the way class labels are handled internally. By default labels are ordered by their first occurrence in the training set. Hence for a set with -1/+1 labels, if -1 appears first, then internally -1 becomes +1. This has caused confusion. Now for data with -1/+1 labels, we specifically ensure that internally the binary SVM has positive data corresponding to the +1 instances. For developers, see changes in the subrouting svm_group_classes of svm.cpp. We now have a nice page LIBSVM data sets providing problems in LIBSVM format. A practical guide to SVM classification is available now! (mainly written for beginners) LIBSVM tools available now! We now have an easy script (easy.py) for users who know NOTHING about svm. It makes everything automatic--from data scaling to parameter selection. The parameter selection tool grid.py generates the following contour of cross-validation accuracy. To use this tool, you also need to install python and gnuplot.

To see the importance of parameter selection, please see our guide for beginners. Using libsvm, our group is the winner of IJCNN 2001 Challenge (two of the three competieions), EUNITE world wide competition on electricity load prediction, NIPS 2003 feature selection challenge (third place), WCCI 2008 Causation and Prediction challenge (one of the two winners), and Active Learning Challenge 2010 (2nd place).

Introduction
LIBSVM is an integrated software for support vector classification, (C-SVC, nu-SVC), regression (epsilon-SVR, nu-SVR) and distribution estimation (one-class SVM). It supports multi-class classification. Since version 2.8, it implements an SMO-type algorithm proposed in this paper: R.-E. Fan, P.-H. Chen, and C.-J. Lin. Working set selection using second order information for training SVM. Journal of Machine Learning Research 6, 1889-1918, 2005. You can also find a pseudo code there. (how to cite LIBSVM) Our goal is to help users from other fields to easily use SVM as a tool. LIBSVM provides a simple interface where users can easily link it with their own programs. Main features of LIBSVM include

1 of 4

5/30/2013 10:54 AM

LIBSVM -- A Library for Support Vector Machines

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Different SVM formulations Efficient multi-class classification Cross validation for model selection Probability estimates Various kernels (including precomputed kernel matrix) Weighted SVM for unbalanced data Both C++ and Java sources GUI demonstrating SVM classification and regression Python, R, MATLAB, Perl, Ruby, Weka, Common LISP, CLISP, Haskell, OCaml, LabVIEW, and PHP interfaces. C# .NET code and CUDA extension is available. It's also included in some data mining environments: RapidMiner, PCP, and LIONsolver. Automatic model selection which can generate contour of cross valiation accuracy.

Download LIBSVM
The current release (Version 3.17, April 2013) of LIBSVM can be obtained by downloading the zip file or tar.gz file. Please e-mail us if you have problems to download the file. The package includes the source code of the library in C++ and Java, and a simple program for scaling training data. A README file with detailed explanation is provided. For MS Windows users, there is a subdirectory in the zip file containing binary executable files. Precompiled Java class archive is also included. Please read the COPYRIGHT notice before using LIBSVM.

Graphic Interface
Here is a simple applet demonstrating SVM classification and regression. Click on the drawing area and use ``Change'' to change class of data. Then use ``Run'' to see the results.

Examples of options: -s 0 -c 10 -t 1 -g 1 -r 1 -d 3 Classify a binary data with polynomial kernel (u'v+1)^3 and C = 10
options: -s svm_type : set type of SVM (default 0) 0 -- C-SVC 1 -- nu-SVC 2 -- one-class SVM 3 -- epsilon-SVR 4 -- nu-SVR -t kernel_type : set type of kernel function (default 2) 0 -- linear: u'*v 1 -- polynomial: (gamma*u'*v + coef0)^degree

2 of 4

5/30/2013 10:54 AM

LIBSVM -- A Library for Support Vector Machines

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

2 -- radial basis function: exp(-gamma*|u-v|^2) 3 -- sigmoid: tanh(gamma*u'*v + coef0) -d degree : set degree in kernel function (default 3) -g gamma : set gamma in kernel function (default 1/num_features) -r coef0 : set coef0 in kernel function (default 0) -c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1) -n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5) -p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1) -m cachesize : set cache memory size in MB (default 100) -e epsilon : set tolerance of termination criterion (default 0.001) -h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1) -b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0) -wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1) The k in the -g option means the number of attributes in the input data.

To install this tool, please read the README file in the package. There are Windows, X, and Java versions in the package.

Additional Information (how to cite LIBSVM)


Frequently Asked Questions (FAQ) and Change log References of LIBSVM: Official implementation document: C.-C. Chang and C.-J. Lin. LIBSVM : a library for support vector machines. ACM Transactions on Intelligent Systems and Technology, 2:27:1--27:27, 2011. pdf, ps.gz, ACM digital lib. Instructions for using LIBSVM are in the README files in the main directory and some sub-directories. A guide for beginners: C.-W. Hsu, C.-C. Chang, C.-J. Lin. A practical guide to support vector classification An introductory video for windows users. Other implementation documents: R.-E. Fan, P.-H. Chen, and C.-J. Lin. Working set selection using the second order information for training SVM. Journal of Machine Learning Research 6, 1889-1918, 2005. You can also find a pseudo code there. Other documents written by users. (including some non-English documents) For more information about nu-SVM and one-class SVM , please see B. Schlkopf, A. Smola, R. Williamson, and P. L. Bartlett. New support vector algorithms. Neural Computation, 12, 2000, 1207-1245. B. Schlkopf, J. Platt, J. Shawe-Taylor, A. J. Smola, and R. C. Williamson. Estimating the support of a high-dimensional distribution. Neural Computation, 13, 2001, 1443-1471.

Interfaces and extensions to LIBSVM


Language Description Maintainers and Their Affiliation LIBSVM authors at National Taiwan University. David Soergel at University of California, Berkeley. LIBSVM authors at National Taiwan University. Supported LIBSVM version The latest 2.88 The latest 2.33 2.88 Link Included in LIBSVM pacakge jlibsvm Included in LIBSVM pacakge Dead Link WWW

Java Java MATLAB and OCTAVE MATLAB R

Java code close to LIBSVM C code. Refactored Java code for faster training/testing. A simple MATLAB and OCTAVE interface An old version (no longer available)

Junshui Ma and Stanley Ahalt at Ohio State University Please install by typing David Meyer at the install.packages('e1071') at R command Wirtschaftsuniversitt Wien (Vienna

3 of 4

5/30/2013 10:54 AM

LIBSVM -- A Library for Support Vector Machines

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

line prompt. (document and examples). Python Python and C# Perl Ruby Ruby Weka Scilab Common LISP CLISP Haskell OCaml .NET .NET .NET CUDA Cell Labview C# PHP Common Lisp wrapper of LIBSVM An FFI-based interface distributed with CLISP A Haskell binding to LIBSVM A OCaml binding to LIBSVM LIBSVM for .NET .NET conversion of LIBSVM .NET wrapper of LIBSVM (prediction only) LIBSVM Accelerated with GPU using the CUDA Framework A Ruby interface via SWIG Ruby language bindings for LIBSVM A python interface has been included in LIBSVM since version 2.33. Interfaces provided in the framework pcSVM

University of Economics and Business Administration) Initiated by Carl Staelin at HP Labs. Updated/maintained by LIBSVM The latest authors. Uwe Schmitt from Germany Matthew Laird at Simon Fraser University, Canada Tom Zeng C. Florian Ebeling and Rimas Silkaitis Yasser EL-Manzalawy and Vasant Honavar at Iowa State University. Holger Nahrstaedt from the Technical University of Berlin Gbor Melis Sam Steingold Paulo Tanimoto Oliver Gu Nicolas Panel Matthew Johnson Jie Zou A. Athanasopoulos, A. Dimou, V. Mezaris, and I. Kompatsiaris at CERTH-ITI Moreno Marzolla at University of Bologna, Italy 2.71 2.85 2.9 3.13 2.8 3.11 2.88 2.9 3.1 3.16 3.16 2.89 3.0 3.0 2.89 2.71 2.6

Included in LIBSVM pacakge pcSVM CPAN libsvmruby-swig rb-libsvm WLSVM Scilab interface Common LISP wrapper CLISP LibSVM module Haskell binding OCaml binding libsvm-net SVM.NET .NET wrapper MKLAB libsvm_CBE llb zip

LIBSVM Accelerated using Cell Processors Please download the llb file. A image Kiwoong Kim at Korea Research demonstrating its use is here. Probability Institute of Standards and Science. estimates are not supported. C# code converted from libsvm java Andrew Poh from Australia version LIBSVM binding for PHP Ian Barber

The latest (LIBSVM must PHP binding be installed first)

Acknowledgments: This work was supported in part by the National Science Council of Taiwan via the grant NSC 89-2213E-002-106. The authors thank their group members and users for helpful discussion and comments. Please send comments and suggestions to Chih-Jen Lin.

4 of 4

5/30/2013 10:54 AM