Problem Set 4 (8.6 - 22.6.08)

In this exercise we want to implement the Slow Feature Analysis (SFA) algorithm (see lecture 3). More information on SFA can for example be found in the paper Slow feature analysis: Unsupervised learning of invariances. (Wiskott, L. and Sejnowski, T.J.).

  1. Implement the linear SFA algorithm. As usual, the algorithm should be encapsulated in an object oriented way (e.g. as an object with a train and an execute method). You can use the steps described in the mentioned paper (pages 8 and 9, note that the non-linear expansion is not required here). Alternatively you can take a look at the implementation in the MDP toolkit (note that here it is solved as a generalized eigenvalue problem).
  2. Write a simple unittest to check that the algorithm runs without raising any exceptions.
  3. Now create a random linear mixture of some slowly varying channels (e.g. sinusoidal signals) and some fast noise channels. Use SFA to extract the original slow signals. Visualize the the channels, the linear mixture and the extracted slow features. Note that one should split the data into a training and a testing part.