EEG feature extraction: choosing features you can defend

A feature is a reduction of a trial to a number. The right ones depend on where the signal lives (time, frequency, space or the links between channels), and the wrong ones multiply until the model overfits.

Updated

Classical EEG decoding is mostly feature engineering. A trial is a channels × time matrix, and a feature summarises part of it: the power in a band at one electrode, the variance after a spatial filter, the phase coupling between two sites. Deep models learn their own features, but on the small datasets typical of EEG, well-chosen features into a simple model are still a strong baseline.

The question is not "which features are best" but "where does my effect live". Motor imagery is spectral and spatial, P300 is temporal, and some cognitive effects show up only in connectivity.

Match the domain to the paradigm

DomainCapturesGood for
TimeAmplitude, shape, complexity: RMS, Hjorth parameters, entropy, fractal dimensionERPs such as P300, EMG activation, signal complexity
FrequencyBand power (absolute, relative, log), spectral entropy, peak frequency, band ratiosRhythms: alpha, mu/beta in motor imagery, SSVEP peaks
Time-frequencyERD/ERS, wavelet sub-band energy, windowed band power, Hilbert envelopeEffects that change during the trial
SpatialCSP, covariance, Riemannian tangent space, region band power, LaplacianMotor imagery and anything lateralised
ConnectivityCoherence, PLV, PLI, wPLI, mutual information, graph metricsNetwork-level differences between conditions

Spatial or temporal layout

The same feature can be laid out two ways. A spatial layout averages over time and gives one value per channel, the classical BCI layout (C3 versus C4 mu power). A temporal layout averages over channels and cuts the trial into windows, keeping when the response happened. Choosing the layout is as important as choosing the feature.

Fewer, named, ranked

Switching everything on is the most common mistake. Seventy-one feature families across 64 channels produces thousands of columns for a few hundred trials, and the model fits noise. BCILattice preselects a working default instead: one strong, cheap family per domain (variance, RMS, waveform length, Hjorth parameters, relative and log band power, spectral entropy, ERD/ERS, CSP and correlation).

Every column is named, so a ranking points at "relative beta power at C3" rather than "feature 412". Ranking reports effect size (Eta², the share of variance explained by class, which does not grow with sample count the way F does) and redundancy, since near-duplicate top features add no information. Like any fitted step, feature selection belongs inside the training folds. See EEG cross-validation.

Questions

What are the most common EEG features?

Band power in standard frequency bands, CSP log-variance for motor imagery, ERP amplitudes for evoked paradigms, Hjorth parameters and entropy for signal complexity, and coherence or phase-based measures for connectivity.

How many features should I extract?

Far fewer than your number of trials. Start with one well-understood family per domain, check which domain carries the effect, and widen from there.

Do deep learning models need feature extraction?

No, they learn features from raw or lightly preprocessed epochs. On small EEG datasets, though, hand-crafted features with a simple classifier are often as good and are easier to interpret.

What are Hjorth parameters?

Three time-domain descriptors of a signal: activity (variance), mobility (an estimate of mean frequency) and complexity (how much the signal's shape deviates from a pure sine wave). They are cheap and widely used.

Read the reference

Related

Run a study end to end, on your own machine

The free plan covers two studies, the full analysis suite, and 118 of the 119 ML blocks.