Извлечение признаков из сигнала
Классификатор не понимает «волны» — ему нужны числа. Извлечение признаков превращает кусок сигнала в вектор.
Признак (feature) — число, описывающее свойство сигнала (например, мощность альфа-ритма), подаваемое на вход классификатору.
Какие признаки берут
- Мощность по полосам (δ, θ, α, β, γ) — главный признак для ЭЭГ.
- Дисперсия и амплитуда сигнала на канале.
- Отношения полос (α/β) — устойчивее к общему уровню.
- Для моторного воображения — мощность над левой и правой моторной корой.
Окна
Сигнал режут на короткие окна (например, 1 секунда) и из каждого считают вектор признаков. Чем короче окно — тем быстрее реакция, но грубее оценка частот.
Нормировка
Признаки имеют разный масштаб (мощность альфы — десятки, дисперсия — тысячи). Перед классификацией их нормируют — например, к нулевому среднему и единичному СКО (z-оценка):
$$ z = \frac{x - \mu}{\sigma} $$
Как работает под капотом
Возьмём два окна сигнала, посчитаем дисперсию как признак и нормируем по z-оценке:
import statistics
window_left = [0.2, -0.1, 0.3, -0.4, 0.5, -0.2] # над левой корой
window_right = [1.5, -1.8, 2.0, -1.6, 1.9, -2.1] # над правой корой
f_left = statistics.pvariance(window_left)
f_right = statistics.pvariance(window_right)
print("Признак слева (дисперсия):", round(f_left, 3))
print("Признак справа: ", round(f_right, 3))
feats = [f_left, f_right]
mu = statistics.mean(feats)
sd = statistics.pstdev(feats)
z = [round((x - mu) / sd, 2) for x in feats]
print("После нормировки (z):", z)
Вывод:
Признак слева (дисперсия): 0.096 Признак справа: 3.345 После нормировки (z): [-1.0, 1.0]
Дисперсия справа намного выше — значит, активна правая моторная кора (воображается движение левой руки). После нормировки два признака стали сопоставимы по масштабу.
Частые ошибки
- Подавать классификатору сырой сигнал — почти всегда хуже, чем продуманные признаки.
- Не нормировать признаки разного масштаба — «большой» признак задавит остальные.
- Считать нормировку на тесте по статистике теста: $\mu, \sigma$ берут из обучающей выборки.
Итог
- Признаки — числа, описывающие сигнал (мощность полос, дисперсия, отношения).
- Сигнал режут на окна и из каждого считают вектор признаков.
- Перед классификацией признаки нормируют (z-оценка).
Проверьте себя
1. Зачем извлекать признаки, а не подавать сырой сигнал?
AТак красивее
BЧисловые признаки описывают нужные свойства и обучают классификатор надёжнее
CСырой сигнал запрещён
DЧтобы сэкономить память всегда
2. Что делает z-нормировка x→(x−μ)/σ?
AУдаляет сигнал
BПриводит признаки к нулевому среднему и единичному СКО
CУсиливает шум
DМеняет частоту
3. Откуда берут μ и σ для нормировки тестовых данных?
AИз теста
BИз обучающей выборки
CИз случайных чисел
DИз нуля