Сила анализа независимых компонентов (НК) на прикладных реальных задачах — пример ЭЭГ
Анализ независимых компонентов мощный инструмент для решения практических задач, на примере ЭЭГ
Independent component analysis (ICA) – это мощный инструмент для обработки данных, способный разделять линейные составляющие в данных
Введение
Independent component analysis (ICA) обычно связывают с задачами снижения размерности. Однако, наиболее известное применение этой техники – разделение линейных составляющих данных для поиска статистически независимых компонентов. Например, ICA широко используется для разделения музыкальных дорожек в аудиозаписях. Целью этой статьи является представление и мотивация ICA на примере известной задачи “Коктейльная вечеринка”, а также краткое введение в то, как ICA извлекает независимые компоненты с использованием основ вероятности и теории информации. Затем мы исследуем практический пример идентификации и удаления движения моргания глаз из электроэнцефалограммы (ЭЭГ) данных.
Разделение вкладов сигнала и ICA
Для лучшего понимания разделения линейных вкладов в данных, стандартным примером является “Коктейльная вечеринка”. В этом сценарии два человека беседуют на оживленной вечеринке, представленные красным (Y1) и синим (Y2) говорящими в комнате. Для захвата их голосов двумя микрофонами, обозначеными зеленым (X1) и желтым (X2), микрофоны стратегически располагаются рядом. Громкость этих голосов варьируется в зависимости от близости говорящих к каждому микрофону.

Вызов состоит в том, чтобы эффективно разделить эти два различных голоса из каждого смешанного аудиофайла, чтобы получить изолированные аудиозаписи каждого говорящего. Эту загадку можно разрешить с помощью грамотного применения Independent Component Analysis (ICA). При правильных предположениях о данных (которые мы рассмотрим в следующем разделе), каждая независимая компонента будет звуком синего и красного говорящих.

Основной механизм ICA
Independent Components Analysis (ICA) стремится представить данные X с использованием координатной системы S, в которой компоненты Si являются независимыми. Такие независимые координатные системы аргументируются как естественное представление данных.
- 10 основных тем для овладения Магистратурой права (LLMs) и генеративным искусственным интеллектом
- ToolFormer Руководство моделями искусственного интеллекта по использованию внешних инструментов
- От данных к инсайтам действующая AI/ML на основе Kubernetes
Самая важная часть здесь заключается в том, что ICA предполагает статистически независимую компоненту, а не некоррелированную (как, например, PCA) [1].

Метод главных компонент (PCA) предполагает, что данные и компоненты имеют нормальное распределение, и при выполнении этого требования компоненты PCA статистически независимы. Однако в общем случае, когда распределение данных является негауссовым, ICA является сильным методом для поиска независимых компонентов Y (источники), представляющих данные X (сигнал).
Преобразование ICA задается выражением Y = AX, где элементы A являются коэффициентами, определяющими компоненты. Таким образом, это все еще линейный метод, поскольку он предполагает линейную комбинацию между источником и сигналами.
Мы также можем взять обратное преобразование, что означает запись данных в соответствии с компонентами ICA
Поскольку мы ищем статистически независимые компоненты, мы хотим минимизировать информацию, которой они делятся друг с другом.
Таким образом, теория информации является естественным кандидатом, который может помочь нам решить эту проблему. Существует мера информации, которой две случайные переменные X и Y делятся, она называется взаимной информацией
Таким образом, мы хотим минимизировать информацию, которой делятся компоненты,
Это означает нахождение A, которая минимизирует I[Y] = I[ AˆT X ]. Таким образом, полученные ортогональные векторы приводят к наиболее независимым компонентам.
После того, как мы понимаем мотивацию и базовый механизм за ICA, давайте применим его на практике.
Приложение в реальном мире: Удаление движения моргания глаз из данных ЭЭГ
Данные электроэнцефалографии (ЭЭГ) зачастую загрязнены различными артефактами движения, которые возникают вследствие добровольного или непроизвольного движения пациента во время получения изображений. Один из таких артефактов – это движение моргания глаз. Таким образом, инструменты, такие как ICA, широко используются для удаления такого рода шума [2]. Как уже обсуждалось, ICA является способом разделения независимых составляющих сигнала. Поэтому мы интуитивно должны ожидать важного вклада движения моргания глаз в каналах, близких к глазам.
ЭЭГ измеряет потенциальные различия в кортикальных точках во времени. Таким образом, в эксперименте по ЭЭГ у нас будет несколько временных рядов из разных частей коры мозга, содержащих разную информацию о нейронных цепочках.


Для обработки данных ЭЭГ и правильного применения ICA мы будем использовать MNE (библиотека для обработки и анализа данных ЭЭГ). Также мы будем использовать данные, собранные профессором Жоао Сато в Федеральном университете ABC, доступные на GitHub.
import pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltimport numpy as npimport mne as mnesns.set_palette('pastel')eeg = np.loadtxt('/Users/rodrigo/Post-Grad/Disciplines/Neural Signaling Processing/Aula_3/restEEG/OlhosAbertos.txt')canais = pd.read_csv('/Users/rodrigo/Post-Grad/Disciplines/Neural Signaling Processing/Aula_3/restEEG/NOMEScanais.txt', dtype='str', header=None)# Sampling frequency 250Hz: Hz = 250eeg = pd.DataFrame(eeg, columns=canais.iloc[:,0].values)eeg['Time(s)'] = np.arange(0, (1/Hz)*len(eeg), 1/Hz)
Создание объекта MNE EEG.
# Создание объекта MNE
mne_info = mne.create_info(
list(eeg.columns[:-1]),
Hz,
ch_types=['eeg'] * len(eeg.columns[:-1])
)
mne_raw = mne.io.RawArray(eeg.iloc[:, :-1].values.T, mne_info)
# Определение архитектуры электродов
standard_1020 = mne.channels.make_standard_montage('standard_1020')
mne_raw.set_montage(standard_1020)
Для извлечения только важных функций необходимо отфильтровать временные ряды, исключив высокие (> 120 Гц) и низкие (< 4 Гц) частоты, связанные с артефактами и шумом, а также вклад 60 Гц от сети энергопитания окружающей среды.
# Установка параметров фильтрации
lowCut = 4 # Гц
highCut = 120 # Гц
freqNotch = 60 # Гц (электрическое вмешательство окружающей среды)
# Применение полосового фильтра и фильтра Нотч
mne_raw.filter(lowCut, highCut, fir_design='firwin')
mne_raw.notch_filter(freqNotch, fir_design='firwin')
Теперь данные готовы для прохождения через ICA.
ica_obj = mne.preprocessing.ICA(
n_components=0.95,
method='infomax',
max_iter="auto",
random_state=1,
fit_params=dict(extended=True)
).fit(mne_raw)
ica = ica_obj.get_sources(mne_raw).get_data()
ica_obj.plot_components(picks=None, show=True, inst=mne_raw)
Коэффициенты ICA используются в качестве прокси, чтобы идентифицировать пространственный вклад в компоненты сигнала.

Следовательно, для каждой компоненты можно создать тепловые карты.

Первая компонента – это вклад движения века в сигнал. Как и ожидалось, вклад больше в электродах, близких к глазам. Также можно подробнее рассмотреть информацию о времени/частоте компонента.

Теперь для удаления артефакта движения века из данных мы просто восстанавливаем сигнал без этой конкретной компоненты. Это означает восстановление временного ряда без шаблонов, связанных с артефактом.
Заключение
В заключение, независимый компонентный анализ (ICA) – это мощный инструмент на основе данных, который предполагает негауссовские данные и линейные отношения между источником и сигналами для поиска статистически независимых компонентов. ICA позволяет разделить различные вклады в данные, что делает его особенно полезным в случаях, когда необходимо выделить шум или нежелательные сигналы. В случае данных EEG, ICA может идентифицировать и удалять артефакты движения, такие как движения век, которые могут загрязнять нейральный сигнал.
Замечания
Важно отметить, что ICA – это мощный инструмент, который следует использовать с осторожностью. Методы, основанные на данных, не предполагают каких-либо предварительных знаний о системе. Поэтому путаница и ложные выводы встречаются часто, поэтому необходимо проверять требования и внимательно оценивать результаты.
Благодарности
Этот проект был вдохновлен профессором Жоау Рикарду Сато.
Здесь доступна записная книжка для этой статьи.
Ссылки
[1] Hastie T, Tibshirani R, Friedman J, Hastie T, Tibshirani R, и др.. (2009) Расширения основ и регуляризации. В: Элементы статистического обучения, Нью-Йорк, NY: Springer New York, Springer Series in Statistics.
[2] Меннес М, Ваутерс Х, Ванрумсте Б, Лагае Л, Стиерс П. (2010). Валидация ICA в качестве инструмента для удаления артефактов глазных движений из ЭЭГ/ЭРП. Психофизиология. 2010;47(6):1142-1150. doi:10.1111/j.1469–8986.2010.01015.x