A Decoupled Approach to Exemplar-based Unsupervised Learning


This page contains Matlab source code and data sets related to the International Conference on Machine Learning 2008 publication A Decoupled Approach to Exemplar-based Unsupervised Learning. The materials are made available under an open-source license in order to foster the discussion and adoption of this and related approaches.

Abstract. A recent trend in exemplar based unsupervised learning is to formulate the learning problem as a convex optimization problem. Convexity is achieved by restricting the set of possible prototypes to training exemplars. In particular, this has been done for clustering, vector quantization and mixture model density estimation. In this paper we propose a novel algorithm that is theoretically and practically superior to these convex formulations. This is possible by posing the unsupervised learning problem as a single convex master problem with non-convex subproblems. We show that for the above learning tasks the subproblems are extremely well-behaved and can be solved efficiently.

Features and Demo

The distributed source code can perform the following functions:

All of the code is written in Matlab but uses the IpOpt solver Matlab interface.


Distribution: source code, precompiled binary and demo file

License: The infex software is licensed under the GNU General Public License, version 2. A copy of the license document is included in the distribution.

Installation: for your convenience, the distribution includes statically compiled binaries of COIN-OR IpOpt for x86-32 and x86-64 Linux, linked with the linear solver MUMPS. However, to obtain the results in the paper a more robust linear solver such as PARDISO or HSL is required. In the paper HSL MA27 has been used. Unfortunately, I am not allowed to redistribute binaries linked against these libraries, so if you want to the best possible performance, you need to manually recompile IpOpt using either PARDISO or HSL, please refer to the IpOpt documentation for instructions.

If you have the frequently encountered problem complaining about GLIBC_3.4.9 or GCC_3.3 not being found when you run the mex functions, please refer to this discussion at the Mathworks forums. The easiest solution is to simply delete the Mathworks-included libstdc++ library in the sys/os/glnx86/ folder.

Also, if Matlab crashes upon running the included ipopt function, please recompile Ipopt for your system. Sorry for the inconvenience.

Demo The distribution includes some demos, simply try to run demo_infex1 or demo_kvq_vs_infex.



If you have comments or questions, please feel free to contact me. Thanks!