Skip to content
Maria Kesa edited this page Jun 20, 2019 · 19 revisions

Welcome to the EnsemblePursuit wiki!

Thank you so much for checking out this wiki where I talk about the Ensemble Pursuit algorithm and its implementation in code.

Ensemble Pursuit is an algorithm for dimensionality reduction of neural data developed primarily for deconvolved calcium imaging time series data. It is based on matrix factorization. It finds sparse groupings of correlated cells (termed Ensembles) from high-dimensional neural datasets (we tested the algorithm on publicly available data with over 10,000 neurons).

The Ensemble Pursuit Algorithm

Matrix factorization algorithms are used to decompose a matrix into a product of two matrices, U and V with dimensions for matrix multiplication matching in components. The number of components is much smaller than the dimensionality of the data and because of that matrix factorization reduces the dimensionality of the problem. Here we call components ensembles as they represent groups of co-activating cells. In Ensemble Pursuit, each column of U (U is neurons x components for data of shape neurons x timepoints) represents which neurons belong to the ensemble and with what strength they contribute to the time evolution of an ensemble and each row demarcates which ensembles a neuron belongs to and its intensity. V stores the time evolution of an ensemble. It's an average time course of the neurons that belong to that ensemble.

To find these two matrices a cost function is optimized. It has two terms. The first terms measures the discrepancy between X and it's approximation by U@V via the L2 norm. The second term is a regularization term that encourages the sparsity of U components via a L0 penalty that puts a penalty $\lambda$ on each neuron that is added to an ensemble.

\begin{equation} \text{Cost} = || X - U\cdot V||^2 + \lambda ||U||_0
\end{equation}

Clone this wiki locally