Rémi Flamary

Professional website

Large Margin Filtering


This code is an implementation of the large margin filtering method for both 1D sequence labeling and 2D pixel classification in images. It is the code that has been used in the paper :

R. Flamary, D. Tuia, B. Labbé, G. Camps-Valls, A. Rakotomamonjy, Large Margin Filtering, IEEE Transactions Signal Processing, Vol. 60, N. 2, pp 648-659, 2012.
Abstract: Many signal processing problems are tackled by filtering the signal for subsequent feature classification or regression. Both steps are critical and need to be designed carefully to deal with the particular statistical characteristics of both signal and noise. Optimal design of the filter and the classifier are typically aborded in a separated way, thus leading to suboptimal classification schemes. This paper proposes an efficient methodology to learn an optimal signal filter and a support vector machine (SVM) classifier jointly. In particular, we derive algorithms to solve the optimization problem, prove its theoretical convergence, and discuss different filter regularizers for automated scaling and selection of the feature channels. The latter gives rise to different formulations with the appealing properties of sparseness and noise-robustness. We illustrate the performance of the method in several problems. First, linear and nonlinear toy classification examples, under the presence of both Gaussian and convolutional noise, show the robustness of the proposed methods. The approach is then evaluated on two challenging real life datasets: BCI time series classification and multispectral image segmentation. In all the examples, large margin filtering shows competitive classification performances while offering the advantage of interpretability of the filtered channels retrieved.
author = { Flamary, R. and Tuia, D. and Labbé, B. and Camps-Valls, G. and Rakotomamonjy, A.},
title = {Large Margin Filtering},
journal = { IEEE Transactions Signal Processing},
volume = {60},
number = {2},
pages = {648-659},
editor = {},
year = {2012}

In addition the package contains an updated version of the Toolbox SVM-KM (with classifiers defined as a structure and not a bunch of matrices), and general function for validation/cross validation.

This package contains:

  • SVM-KM : SVM and kernel methods toolbox (see here)
  • Wrappers function svmclass2 that permits to learn different SVM
  • Solvers (libsvm, monqp, svqp2, ...)
  • Other methods: GMM (using netlabs)


Current version : 0.9

Download : FilterSVM.zip


Quick version:

  • Add all the paths and subpath to matlab.
  • Execute make.m to compile the mex file (to use libsvm/svqp2)
  • Entry file : Dataset_Toy/Test_FilterSVM.m


Source code hierarchy

  • 'costs/' : functions to compute SVM costs
  • 'gradients/' : functions returning SVM gradients (for filtersvm)
  • 'netlab/' : netlab toolbox + gmmclass/gmmval functions
  • 'optim/' : optimisation functions (gradient descent, solvers)
  • 'probasolvers/' : proba functions, platt svm to proba transform
  • 'svmsolvers/' : several SVM/MKL toolboxes and wrappers: svmclass2
  • 'utils/' : several utils functions
  • 'validation/' : validation/cross-validation loops functions
  • 'visu/' : visualization functions

  • 'Dataset_*' : test functions on different datasets for filtersvm