JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

Blind Source Separation: ICA and Data-Driven Unmixing

How ICA un-mixes EEG with no labels by chasing non-Gaussianity, where it works, where it silently fails, and how SSD targets a spectral band instead.

From supervised to blind

CSP and xDAWN needed class labels. Independent component analysis (ICA) needs none: it inverts the mixing \mathbf{x}=\mathbf{A}\mathbf{s} using only a statistical assumption about the sources. This is blind source separation — recovering the speakers from the microphones with no idea who is talking.

\mathbf{x} = \mathbf{A}\mathbf{s}, \qquad \hat{\mathbf{s}} = \mathbf{W}\mathbf{x}, \qquad \mathbf{W}\approx\mathbf{A}^{-1}

ICA estimates an unmixing matrix W whose rows are spatial filters that recover independent components.

Independent Component Analysis unmixes the channels with no labels, by assuming the true sources are statistically independent. It learns an unmixing matrix \mathbf{W} whose rows are spatial filters that recover the independent components — great for isolating artifacts like blinks.

\mathbf{x}=\mathbf{A}\mathbf{s}
The forward mixing model.
\mathbf{W}
The unmixing matrix ICA estimates.
\hat{\mathbf{s}}=\mathbf{W}\mathbf{x}
The recovered independent components.
\mathbf{W}\approx\mathbf{A}^{-1}
It approximately inverts the mixing.

Why ICA is possible: non-Gaussianity

PCA only makes components uncorrelated (a second-order property) and cannot pick a unique rotation. ICA demands the stronger property of statistical independence, and the key that unlocks it is non-Gaussianity. By the central limit theorem, a mixture of independent sources is more Gaussian than any single source; so if you rotate the whitened data to make each output maximally non-Gaussian, you have found the sources.

J_{\mathrm{neg}}(y) = H(y_{\mathrm{Gauss}}) - H(y) \;\ge\; 0

Negentropy: the entropy gap between a Gaussian of equal variance and y. Infomax and FastICA maximize surrogates of it (kurtosis, log-cosh).

Why does ICA work? Mixtures of independent signals look more Gaussian than the originals, so making the outputs as non-Gaussian as possible unmixes them. Negentropy measures that non-Gaussianity — the entropy gap from a matched Gaussian.

J_{\mathrm{neg}}(y)
The negentropy of output y — its non-Gaussianity.
H(y_{\mathrm{Gauss}})
Entropy of a Gaussian with the same variance — the maximum possible.
H(y)
The actual entropy of y.
\ge 0
Always non-negative, and zero only when y is Gaussian.
ICA unmixing: a handful of mixed scalp channels decomposed into independent components — an eye-blink, a heartbeat, and genuine brain sources.

ICA in the BCI pipeline

ICA plays two roles. As a cleaner, you identify components that capture eye blinks, ECG or EMG, zero their rows, and back-project the rest to reconstruct artifact-free channels — this ICA-based artifact removal is the field default. As a feature front-end, the unmixing rows are themselves spatial filters that can sharpen sources before decoding.

  1. High-pass and re-reference the continuous data, then fit ICA to obtain W and the component activations.
  2. Flag artifact components by their signature — frontal blink topography, QRS-locked heartbeat, broadband frontotemporal EMG.
  3. Zero the flagged rows and back-project the remaining components through A to reconstruct cleaned channels.

Assumptions and failure modes

The practical implication: ICA rewards high channel counts and long, clean recordings. On a cheap dry headset with eight channels, expect it to under-perform — a limitation worth stating honestly rather than papering over.

Beyond ICA: spectrally targeted filters

When you know the rhythm you care about (say a 10 Hz mu band), you can beat blind ICA with a supervised-by-spectrum filter. Spatio-spectral decomposition (SSD) maximizes power in a signal band relative to its flanking bands, yielding a clean, label-free front-end that boosts SNR before CSP, connectivity or a deep model.

\mathbf{w}_{\mathrm{SSD}} = \arg\max_{\mathbf{w}} \frac{\mathbf{w}^{\top}\Sigma_{\mathrm{signal}}\,\mathbf{w}}{\mathbf{w}^{\top}\Sigma_{\mathrm{flank}}\,\mathbf{w}}

SSD is again a generalized eigenvalue problem — signal-band covariance over flanking-band covariance.

Spatio-Spectral Decomposition finds filters that maximize power in a target frequency band relative to its neighbouring bands — pulling out a clean oscillation. Like CSP, it's a generalized eigenvalue problem, just with signal-band versus flanking-band covariances.

\mathbf{w}_{\mathrm{SSD}}
The SSD spatial filter.
\Sigma_{\mathrm{signal}}
Covariance within the target frequency band.
\Sigma_{\mathrm{flank}}
Covariance in the flanking (neighbouring) bands.
\arg\max
Pick the filter maximizing the ratio to enhance the target rhythm.