萝卜酒博客,师父:LIBSVM 1-- A Library for Support Vector Machin...

来源:百度文库 编辑:九乡新闻网 时间:2024/05/01 17:04:53

LIBSVM -- A Library for Support Vector Machines

Chih-Chung Chang and Chih-Jen Lin



Version 2.84 released on April Fools‘ day, 2007. We improve the shrinking implementation. The code now better supports 64-bit machines. We also polish the program to be consistent with our documents.
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 EUNITE world wide competition on electricity load prediction , December 2001. The technique used is the support vector regression.
Using libsvm, our group is the winner of IJCNN Challenge (two of the three competieions).

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

  • Different SVM formulations
  • Efficient multi-class classification
  • Cross validation for model selection
  • Probability estimates
  • Weighted SVM for unbalanced data
  • Both C++ and Java sources
  • GUI demonstrating SVM classification and regression
  • Python, R (also Splus), MATLAB, Perl, Ruby, Weka, CLISP and LabVIEW interfaces. C# .NET code is available.
    It‘s also included in some learning environments: YALE and PCP.
  • Automatic model selection which can generate contour of cross valiation accuracy.

Download LIBSVM

The current release (Version 2.84, April 2007) 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-SVC1 -- nu-SVC2 -- one-class SVM3 -- epsilon-SVR4 -- nu-SVR-t kernel_type : set type of kernel function (default 2)0 -- linear: u‘*v1 -- polynomial: (gamma*u‘*v + coef0)^degree2 -- 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/k)-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.option -v randomly splits the data into n parts and calculates crossvalidation accuracy/mean squared error on them.

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)

References of LIBSVM:

  • A guide for beginners:
    C.-W. Hsu, C.-C. Chang, C.-J. Lin. A practical guide to support vector classification
  • For implementation details of LIBSVM, please see the document
    LIBSVM : a library for support vector machines.
    pdf, ps.gz.
    or
    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. Schölkopf, A. Smola, R. Williamson, and P. L. Bartlett. New support vector algorithms. Neural Computation, 12, 2000, 1207-1245.
  • B. Schölkopf, 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 to LIBSVM

Language Description Maintainers and Their Affiliation Supported LIBSVM version Link MATLAB A simple MATLAB interface LIBSVM authors at National Taiwan University. 2.84 Zip MATLAB An old version (no longer available) Junshui Ma and Stanley Ahalt at Ohio State University 2.33 Dead Link MATLAB Another version. (libsvm 2.8 used, but multiclass and sparse input not supported yet) Michael Vogt from Darmstadt University of Technology, Germany 2.8 (partial) WWW R Please install by typing install.packages(‘e1071‘) at R command line prompt. (document and examples). David Meyer at the Wirtschaftsuniversität Wien (Vienna University of Economics and Business Administration) 2.81 WWW Python A python interface of LIBSVM has been included since version 2.33. Initiated by Carl Staelin at HP Labs. Updated/maintained by LIBSVM authors. The latest Included in LIBSVM pacakge Python and C# Interfaces provided in the framework pcSVM Uwe Schmitt from Germany 2.71 pcSVM Perl   Matthew Laird at Simon Fraser University, Canada 2.8 CPAN Ruby   Rudi Cilibrasi at Centrum voor Wiskunde en Informatica (Dutch National Research Institute for Mathematics and Computer Science). 2.84 Ruby SVM Weka   Yasser EL-Manzalawy and Vasant Honavar at Iowa State University. 2.8 WLSVM CLISP   Sam Steingold 2.82 CLISP LibSVM module .NET .NET conversion of LIBSVM Matthew Johnson 2.6 SVM.NET Labview Please download the llb file. A image demonstrating its use is here. Probability estimates are not supported. Kiwoong Kim at Korea Research Institute of Standards and Science. 2.71 llb C# C# code converted from libsvm java version Andrew Poh from Australia 2.6 zip


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