LIBLINEAR -- A Library for Large Linear Classification

Machine Learning Group at National Taiwan University
Contributors


Version 2.47 released on July 9, 2023. We fix some minor bugs.

Version 2.43 released on February 25, 2021. Installing the Python interface through PyPI is supported

> pip install -U liblinear-official
The python directory is re-organized so
>>> from liblinear.liblinearutil import *
instead of
>>> from liblinearutil import *
should be used.

Version 2.42 released on November 1, 2020. For dual CD solvers (logistic/l2 losses but not l1 loss), if a maximal number of iterations is reached, LIBLINEAR directly switches to run a primal Newton solver. See the release note

Multi-core LIBLINEAR is now available to significant speedup the training on shared-memory systems.

We are interested in large sparse regression data. Please let use know if you have some. Thank you.

A practical guide to LIBLINEAR is now available in the end of LIBLINEAR paper.

Some extensions of LIBLINEAR are at LIBSVM Tools.

LIBLINEAR is the winner of ICML 2008 large-scale learning challenge (linear SVM track). It is also used for winning KDD Cup 2010.


Introduction

LIBLINEAR is a linear classifier for data with millions of instances and features. It supports

Main features of LIBLINEAR include

Documentation

FAQ is here


When to use LIBLINEAR but not LIBSVM

There are some large data for which with/without nonlinear mappings gives similar performances. Without using kernels, one can quickly train a much larger set via a linear classifier. Document classification is one such application. In the following example (20,242 instances and 47,236 features; available on LIBSVM data sets), the cross-validation time is significantly reduced by using LIBLINEAR:
% time libsvm-2.85/svm-train -c 4 -t 0 -e 0.1 -m 800 -v 5 rcv1_train.binary
Cross Validation Accuracy = 96.8136%
345.569s
% time liblinear-1.21/train -c 4 -e 0.1 -v 5 rcv1_train.binary
Cross Validation Accuracy = 97.0161%
2.944s
Warning:While LIBLINEAR's default solver is very fast for document classification, it may be slow in other situations. See Appendix C of our SVM guide about using other solvers in LIBLINEAR.

Warning:If you are a beginner and your data sets are not large, you should consider LIBSVM first.


Download LIBLINEAR

The current release (Version 2.47, July 2023) of LIBLINEAR can be obtained by downloading the zip file or tar.gz file. You can also check this github directory. Please e-mail us if you have problems to download the file.

The package includes the source code in C/C++. A README file with detailed explanation is provided. For MS Windows users, there is a subdirectory in the zip file containing binary executable files.

Please read the COPYRIGHT notice before using LIBLINEAR.


Documentation and Codes used for experiments in our papers

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.

The appendices of this paper give all implementation details of LIBLINEAR.

In the end of this paper there is a practical guide to LIBLINEAR

See also some examples in Appendix C of the SVM guide.

Code used for experiments in our LIBLINEAR papers can be found here.


Interfaces to LIBLINEAR

Language Description Maintainers and Their Affiliation Supported LIBLINEAR version Link
MATLAB A simple MATLAB interface LIBLINEAR authors at National Taiwan University. The latest Included in LIBLINEAR package
Octave A simple Octave interface LIBLINEAR authors at National Taiwan University. The latest Included in LIBLINEAR package
Java Java version of LIBLINEAR Benedikt Waldvogel 1.95 Java LIBLINEAR
Python A python interface has been included in LIBLINEAR since version 1.6. LIBLINEAR authors at National Taiwan University. The latest Included in LIBLINEAR package
Julia LIBLINEAR bindings for Julia Zhizhong Li 2.47 LIBLINEAR bindings for Julia
Ruby A Ruby interface via SWIG Kei Tsuchiya (extended from the work of Tom Zeng) 1.93 liblinear-ruby-swig
Perl A Perl interface Koichi Satoh The latest perl module
Weka Weka wrapper Benedikt Waldvogel 1.5 Weka LIBLINEAR
R R interface to LIBLINEAR Thibault Helleputte 2.10 R LIBLINEAR
Labview LabView interface to LIBLINEAR. Both Windows/Linux are supported. Oystein Sture 2.10 LabView interface
Common LISP Common Lisp wrapper of LIBLINEAR Gábor Melis 1.92 Common LISP wrapper
Scilab   Holger Nahrstaedt from the Technical University of Berlin 1.8 Scilab interface
PHP Liblinear for PHP Matthieu Beurel The latest Liblinear for PHP


Installing LIBLINEAR via Package Managers

Installer (language) Package name Installation
pip (Python) liblinear-official
$ pip install -U liblinear-official
vcpkg (C++) liblinear port
$ ./vcpkg install liblinear


Please send comments and suggestions to Chih-Jen Lin.