Skip to content

lynaghk/Rliblinear

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

                                     _ __  
                                    | '_ \ 
                                    | | | |
  /                             \   |_| |_| 
 /                               \        
 |      +             /          |        
 |       +     +     /           |      
 |                  /   -        |      _____   _  _  _      _  _                           
 |     +    +   +  /  -          |     |  __ \ | |(_)| |    | |(_)                          
 |                /        -     |     | |__) || | _ | |__  | | _  _ __    ___   __ _  _ __ 
 |     +   +     / -   -         |     |  _  / | || || '_ \ | || || '_ \  / _ \ / _` || '__|
 |              /                |     | | \ \ | || || |_) || || || | | ||  __/| (_| || |   
 |    +        /   -    -        |     |_|  \_\|_||_||_.__/ |_||_||_| |_| \___| \__,_||_|   
 |          + /      -           |                                                          
 \           /   -               /                                                          
  \                             /                                                           

This R package is a wrapper around the LIBLINEAR C/C++ library for large linear classification. LIBLINEAR can handle problems with millions of instances and features. Essentially, it is a support vector machine optimized for classes that can be seperated without having to project into some fancy-pants kernel space.

Install the latest version via git:

git clone http://github.com/lynaghk/Rliblinear/
R CMD build Rliblinear
R CMD INSTALL Rliblinear

Note that you will need the Debian/Ubuntu packages: libblas-dev and gfortran.

Ten-fold cross validation:

require(Rliblinear)
data(iris)
liblinear(data = iris[,1:4],
          labels = iris[,5],
          cross = 10,
          type = 'l2l2_svm_dual',
          cost = 1
          )
# => 0.95333

#build a model using two thirds of the iris set
l = nrow(iris)
training_indexes = sample(1:l, (2/3)*l)
model = liblinear(data = iris[training_indexes,1:4],
                  labels = iris[training_indexes,5],
                  type = 'l2l2_svm_dual',
                  cost = 1)

#compute the accuracy on the remaining third of the iris set
predictions = predict(model, iris[-training_indexes, 1:4])
sum( predictions == iris[-training_indexes, 5]) / length(predictions)
# => 0.98

LIBLINEAR

LIBLINEAR solves seven different problems:

  • L2-regularized logistic regression
  • L1-regularized logistic regression
  • L2-regularized L1-loss support vector classification primal
  • L2-regularized L2-loss support vector classification primal
  • L2-regularized L1-loss support vector classification dual
  • L2-regularized L2-loss support vector classification dual
  • L1-regularized L2-loss support vector classification

For more information on LIBLINEAR itself, refer to the website or see

R.-E. Fan, K.-W. Chang, C.-J. Hsieh, X.-R. Wang, and C.-J. Lin. LIBLINEAR: A Library for Large Linear Classification, Journal of Machine Learning Research 9(2008), 1871-1874.

For a more practical introduction, see the beginner's guide by Hsu et al.

Copyright

All of this software is copyrighted by the list of authors in the DESCRIPTION file of the package and subject to the GNU GENERAL PUBLIC LICENSE, Version 2. See the file COPYING for details. The LIBLINEAR C/C++ code is copyright Chih-Chung Chang and Chih-Jen Lin. The original R wrapper (LiblineaR) was written by Thibault Helleputte.

Todo

  • Automatically convert ordered factors into cuts of 0--1
  • Add support for new 1.7 dual form of logistic regression

About

R interface to LIBLINEAR, a linear support vector machine library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published