The Living Thing / Notebooks :

Kernel approximation

A page where I document whet I don’t know about kernel approximation. A page about what I do know would be empty.

What I mean is: approximating implicit Mercer kernel features with explicit features, that is; Equivalently, approximating the Gram matrix, which is also related to mixture model inference and clustering. I’m especially interested in how it might be done using random linear algebra. I am mostly interested in translation-invariant kernels, so assume I’m talking about those unless I say otherwise.

Not the related but distinct (terminological collision) of approximating functions from mixtures of kernels. Also note that the Fast Gauss Transform and other related fast multipole methods, while commonly used to approximate convolution kernels, can also approximate certain Mercer kernels but it’s not what I mean here - fast multipole methods gives you an approximation to the field generated by all kernels and all the support points In kernel approximation we look for approximations, in some sense, to the component kernels themselves.

Short introduction at scikit-learn kernel approximation page.

DrMa05, YLMJ12, VeZi12, LiIS10, RaRe07, AlMa14, Bach15, Bach13, YLMJ12, VVZJ10 have work here.

The approximations might be random projection, or random sampling based, e.g. the Nyström method, which is reportedly effectively Monte Carlo integration, although I understand there is an optimisation step too?

I need to work out the difference between random Fourier features, random kitchen sinks, Nyström methods and whatever Smola et al (SKSB98) call their special case Gaussian approximation. I think Random Fourier features are the same as random kitchen sinks, (RaRe07) and Nyström is different (WiSe01). When we can exploit (data- or kernel-) structure to do better? (say, LeSS13, VVZJ10) Quasi Monte Carlo can improve on random Monte Carlo? (update: someone already had that idea: YSAM14) Or better matrix factorisations?

Also I guess we need to know trade-offs of computational time/space cost versus approximation bounds, so that we can decide when to bother. When is it enough to reduce computational cost merely with support vectors, or to evaluate the kernels efficiently using, e.g. the Fast Gauss Transform and related methods methods, rather than coming up with alternative kernel bases? (e.g. you don’t want to do the fiddly coding for the Faust Gauss transform)

Does this help? Chris Ding’s Principal Component Analysis and Matrix Factorizations for Learning.


Recently, Maji and Berg and Vedaldi and Zisserman proposed explicit feature maps to approximate the additive kernels (intersection, \(\chi^2\), etc.) by linear ones, thus enabling the use of fast machine learning technique in a non-linear context. An analogous technique was proposed by Rahimi and Recht (RaRe07) for the translation invariant RBF kernels. In this paper, we complete the construction and combine the two techniques to obtain explicit feature maps for the generalized RBF kernels.

Lectures: Fastfood etc



This is the LIBASKIT set of scalable machine learning and data analysis tools. Currently we provide codes for kernel sums, nearest-neighbors, kmeans clustering, kernel regression, and multiclass kernel logistic regression. All codes use OpenMP and MPI for shared memory and distributed memory parallelism.

[…] PNYSTR : (Parallel Nystrom method) Code for kernel summation using the Nystrom method.


MDS and Kernel PCA and mixture models are all related in a way I should try to understand when I have a moment.

For the connection with kernel PCA, see Smola et al ( SKSB98) and Williams for metric multidimensional scaling ( Will01).