mdqyy / linal

Structured learning with SVMs in C++ and Python

Home Page:http://iglesias.github.io/linal/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

linal

Structured SVMs applied to label sequence learning (the so-called HM-SVM) and graph learning (or grid CRFs in particular). I am using this code to carry out some experiments during my final degree project. A lot of inspiration has been drawn from pystruct by Andreas Mueller for the grap learning part. The HM-SVM implementation in Shogun I am using here is based on the matlab code by Gunnar Raetsch and Georg Zeller available at mloss. The code makes use of Shogun's structured learning framework (+ info).

Requirements

You definetely need Shogun and SWIG. Also, you need to compile Shogun with directors enabled and at least target python's modular interface. In addition, with the current state you need to compile Shogun with Mosek support. This dependency should be easy to remove though by using any of the bundle methods for SSVMs present in Shogun.

There are a couple of subgradient methods implemented in the graph directory. Using this, you do not need Mosek any more. I have only tested them in the graph learning task, but in principle they should work fine for label sequence learning as well.

Apart from Shogun dependencies, you need cvxopt for the linear programming relaxation used to solve the argmax in graph learning.

Report

You can get a copy of my final degree project (PFC in Spanish) report here. This version is more appropriate for black & white printing since the cross-links in the document are black. If you just want to read it using a computer or similar, use beter this other version.

Slides in Spanish for the presentation. I plan to prepare something similar in English soon for a workshop taking place in a few weeks. I will upload then the source code as well.

About

Structured learning with SVMs in C++ and Python

http://iglesias.github.io/linal/