MATLAB File Help: prtClassLibSvm/prtClassLibSvm
prtClassLibSvm/prtClassLibSvm
  prtClassLibSvm  Support vector machine classifier using LibSvm
 
    CLASSIFIER = prtClassLibSvm returns a SVM Classifier using the
    SVM toolbox "LibSvm" which provides a fast interface to training
    and testing support vector machines.
 
    Note: requires libSvm, which should be in nfPrt\util\libsvm-mat-2.91-1
    On linux, you may need to re-build the LibSVM Binaries.  See the
    documentation for LibSvm (link below) for more information.
 
     A prtClassLibSvm object inherits all properties from the abstract class
     prtClass. In addition is has the following properties; complete
     documentation for these properties can be found here:
 
        http://www.csie.ntu.edu.tw/~cjlin/libsvm/
 
          svmType       - Whether to use a C-SVM, nu-SVM, one-class
                         SVM, epsilon-SVR, or nu-SVR
          kernelType    - Kernel type to use - linear (0), polynomial (1),
                          rbf (2, default), sigmoid (3), or
                          user-defined (4) - see below
          degree        - Kernel function parameter (some kernels)
          gamma         - Kernel function parameter (some kernels)
          coef0         - Kernel function parameter (some kernels)
          cost          - Cost parameter
          nu            - nu parameter (nu-SVM's)
          pEpsilon      - Loss function parameter (epsilon-SVMs)
          cachesize     - Memory cache in MB (can affect speed,
                         computer dependent)
          eEpsilon      - Termination tolerance
          shrinking     - Use shrinking heuristic?
          probabilityEstimates - Output probability estimates?
          weight        - Parameter in C-SCM
 
    Default values are:
      svmType = 0;
      kernelType = 2;
      degree = 3;
      gamma = nan;
      coef0 = 0;
      cost = 1;
      nu = .5;
      pEpsilon = .1;
      cachesize = 100;
      eEpsilon = 0.001;
      shrinking = 1;
      probabilityEstimates = 0;
      weight = 1;
 
      userSpecKernel = [];  %only for kernelType = 4, see below
 
    prtClassLibSvm allows the specification of user-defined kernels by
    setting svm.kernelType to 4.  This requires further specification
    of svm.userSpecKernel.  svm.userSpecKernel must be either a
    function handle, fn(x,y) which outputs a matrix of size 
    size(x,1) x size(y,1), or userSpecKernel can be a prtKernel object.
 
    For example:
      svm.kernelType = 4;
      svm.userSpecKernel = @(x,y) (x*y'); % correlation kernel
   
      svm.kernelType = 4;
      svm.userSpecKernel = prtKernelHyperbolicTangent; 
 
 
    Additional options can be specified by modifying the field 
    obj.libSvmOptions using the format found here:
    http://www.csie.ntu.edu.tw/~cjlin/libsvm/
 
    More documentation can be found here:
    http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf
 
    Note: the LibSvm will output estimated percent correct values to
    the screen during processing; because of the way the PRT trains and
    tests, these should be ignored during training and plotting. (To be
    fixed)
 
    %Example usage:
      TestDataSet = prtDataGenUnimodal;       % Create some test and
      TrainingDataSet = prtDataGenUnimodal;   % training data
      classifier = prtClassLibSvm;              % Create a classifier
      classifier = classifier.train(TrainingDataSet);    % Train
      classified = run(classifier, TestDataSet);         % Test
      percentCorr = prtScorePercentCorrect(classified,TestDataSet);
      subplot(2,1,1);
      classifier.plot;
      subplot(2,1,2);
      [pf,pd] = prtScoreRoc(classified,TestDataSet);
      h = plot(pf,pd,'linewidth',3);
      title('ROC'); xlabel('Pf'); ylabel('Pd');