|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- -----------------------------------------
- --- MATLAB/OCTAVE interface of LIBSVM ---
- -----------------------------------------
-
- Table of Contents
- =================
-
- - Introduction
- - Installation
- - Usage
- - Returned Model Structure
- - Other Utilities
- - Examples
- - Additional Information
-
-
- Introduction
- ============
-
- This tool provides a simple interface to LIBSVM, a library for support vector
- machines (http://www.csie.ntu.edu.tw/~cjlin/libsvm). It is very easy to use as
- the usage and the way of specifying parameters are the same as that of LIBSVM.
-
- Installation
- ============
-
- On Windows systems, pre-built binary files are already in the
- directory '..\windows', so no need to conduct installation. Now we
- provide binary files only for 64bit MATLAB on Windows. If you would
- like to re-build the package, please rely on the following steps.
-
- We recommend using make.m on both MATLAB and OCTAVE. Just type 'make'
- to build 'libsvmread.mex', 'libsvmwrite.mex', 'svmtrain.mex', and
- 'svmpredict.mex'.
-
- On MATLAB or Octave:
-
- >> make
-
- If make.m does not work on MATLAB (especially for Windows), try 'mex
- -setup' to choose a suitable compiler for mex. Make sure your compiler
- is accessible and workable. Then type 'make' to start the
- installation.
-
- Example:
-
- matlab>> mex -setup
- (ps: MATLAB will show the following messages to setup default compiler.)
- Please choose your compiler for building external interface (MEX) files:
- Would you like mex to locate installed compilers [y]/n? y
- Select a compiler:
- [1] Microsoft Visual C/C++ version 7.1 in C:\Program Files\Microsoft Visual Studio
- [0] None
- Compiler: 1
- Please verify your choices:
- Compiler: Microsoft Visual C/C++ 7.1
- Location: C:\Program Files\Microsoft Visual Studio
- Are these correct?([y]/n): y
-
- matlab>> make
-
- On Unix systems, if neither make.m nor 'mex -setup' works, please use
- Makefile and type 'make' in a command window. Note that we assume
- your MATLAB is installed in '/usr/local/matlab'. If not, please change
- MATLABDIR in Makefile.
-
- Example:
- linux> make
-
- To use octave, type 'make octave':
-
- Example:
- linux> make octave
-
- For a list of supported/compatible compilers for MATLAB, please check
- the following page:
-
- http://www.mathworks.com/support/compilers/current_release/
-
- Usage
- =====
-
- matlab> model = svmtrain(training_label_vector, training_instance_matrix [, 'libsvm_options']);
-
- -training_label_vector:
- An m by 1 vector of training labels (type must be double).
- -training_instance_matrix:
- An m by n matrix of m training instances with n features.
- It can be dense or sparse (type must be double).
- -libsvm_options:
- A string of training options in the same format as that of LIBSVM.
-
- matlab> [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model [, 'libsvm_options']);
- matlab> [predicted_label] = svmpredict(testing_label_vector, testing_instance_matrix, model [, 'libsvm_options']);
-
- -testing_label_vector:
- An m by 1 vector of prediction labels. If labels of test
- data are unknown, simply use any random values. (type must be double)
- -testing_instance_matrix:
- An m by n matrix of m testing instances with n features.
- It can be dense or sparse. (type must be double)
- -model:
- The output of svmtrain.
- -libsvm_options:
- A string of testing options in the same format as that of LIBSVM.
-
- Returned Model Structure
- ========================
-
- The 'svmtrain' function returns a model which can be used for future
- prediction. It is a structure and is organized as [Parameters, nr_class,
- totalSV, rho, Label, ProbA, ProbB, nSV, sv_coef, SVs]:
-
- -Parameters: parameters
- -nr_class: number of classes; = 2 for regression/one-class svm
- -totalSV: total #SV
- -rho: -b of the decision function(s) wx+b
- -Label: label of each class; empty for regression/one-class SVM
- -sv_indices: values in [1,...,num_traning_data] to indicate SVs in the training set
- -ProbA: pairwise probability information; empty if -b 0 or in one-class SVM
- -ProbB: pairwise probability information; empty if -b 0 or in one-class SVM
- -nSV: number of SVs for each class; empty for regression/one-class SVM
- -sv_coef: coefficients for SVs in decision functions
- -SVs: support vectors
-
- If you do not use the option '-b 1', ProbA and ProbB are empty
- matrices. If the '-v' option is specified, cross validation is
- conducted and the returned model is just a scalar: cross-validation
- accuracy for classification and mean-squared error for regression.
-
- More details about this model can be found in LIBSVM FAQ
- (http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html) and LIBSVM
- implementation document
- (http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf).
-
- Result of Prediction
- ====================
-
- The function 'svmpredict' has three outputs. The first one,
- predictd_label, is a vector of predicted labels. The second output,
- accuracy, is a vector including accuracy (for classification), mean
- squared error, and squared correlation coefficient (for regression).
- The third is a matrix containing decision values or probability
- estimates (if '-b 1' is specified). If k is the number of classes
- in training data, for decision values, each row includes results of
- predicting k(k-1)/2 binary-class SVMs. For classification, k = 1 is a
- special case. Decision value +1 is returned for each testing instance,
- instead of an empty vector. For probabilities, each row contains k values
- indicating the probability that the testing instance is in each class.
- Note that the order of classes here is the same as 'Label' field
- in the model structure.
-
- Other Utilities
- ===============
-
- A matlab function libsvmread reads files in LIBSVM format:
-
- [label_vector, instance_matrix] = libsvmread('data.txt');
-
- Two outputs are labels and instances, which can then be used as inputs
- of svmtrain or svmpredict.
-
- A matlab function libsvmwrite writes Matlab matrix to a file in LIBSVM format:
-
- libsvmwrite('data.txt', label_vector, instance_matrix)
-
- The instance_matrix must be a sparse matrix. (type must be double)
- For 32bit and 64bit MATLAB on Windows, pre-built binary files are ready
- in the directory `..\windows', but in future releases, we will only
- include 64bit MATLAB binary files.
-
- These codes are prepared by Rong-En Fan and Kai-Wei Chang from National
- Taiwan University.
-
- Examples
- ========
-
- Train and test on the provided data heart_scale:
-
- matlab> [heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
- matlab> model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
- matlab> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model); % test the training data
-
- For probability estimates, you need '-b 1' for training and testing:
-
- matlab> [heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
- matlab> model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07 -b 1');
- matlab> [heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
- matlab> [predict_label, accuracy, prob_estimates] = svmpredict(heart_scale_label, heart_scale_inst, model, '-b 1');
-
- To use precomputed kernel, you must include sample serial number as
- the first column of the training and testing data (assume your kernel
- matrix is K, # of instances is n):
-
- matlab> K1 = [(1:n)', K]; % include sample serial number as first column
- matlab> model = svmtrain(label_vector, K1, '-t 4');
- matlab> [predict_label, accuracy, dec_values] = svmpredict(label_vector, K1, model); % test the training data
-
- We give the following detailed example by splitting heart_scale into
- 150 training and 120 testing data. Constructing a linear kernel
- matrix and then using the precomputed kernel gives exactly the same
- testing error as using the LIBSVM built-in linear kernel.
-
- matlab> [heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
- matlab>
- matlab> % Split Data
- matlab> train_data = heart_scale_inst(1:150,:);
- matlab> train_label = heart_scale_label(1:150,:);
- matlab> test_data = heart_scale_inst(151:270,:);
- matlab> test_label = heart_scale_label(151:270,:);
- matlab>
- matlab> % Linear Kernel
- matlab> model_linear = svmtrain(train_label, train_data, '-t 0');
- matlab> [predict_label_L, accuracy_L, dec_values_L] = svmpredict(test_label, test_data, model_linear);
- matlab>
- matlab> % Precomputed Kernel
- matlab> model_precomputed = svmtrain(train_label, [(1:150)', train_data*train_data'], '-t 4');
- matlab> [predict_label_P, accuracy_P, dec_values_P] = svmpredict(test_label, [(1:120)', test_data*train_data'], model_precomputed);
- matlab>
- matlab> accuracy_L % Display the accuracy using linear kernel
- matlab> accuracy_P % Display the accuracy using precomputed kernel
-
- Note that for testing, you can put anything in the
- testing_label_vector. For more details of precomputed kernels, please
- read the section ``Precomputed Kernels'' in the README of the LIBSVM
- package.
-
- Additional Information
- ======================
-
- This interface was initially written by Jun-Cheng Chen, Kuan-Jen Peng,
- Chih-Yuan Yang and Chih-Huai Cheng from Department of Computer
- Science, National Taiwan University. The current version was prepared
- by Rong-En Fan and Ting-Fan Wu. If you find this tool useful, please
- cite LIBSVM as follows
-
- Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support
- vector machines. ACM Transactions on Intelligent Systems and
- Technology, 2:27:1--27:27, 2011. Software available at
- http://www.csie.ntu.edu.tw/~cjlin/libsvm
-
- For any question, please contact Chih-Jen Lin <cjlin@csie.ntu.edu.tw>,
- or check the FAQ page:
-
- http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#/Q10:_MATLAB_interface
|