تعریف ICA و نحوه ی اعمال آن در پکیج MNE-Python


روش تحلیل مولفه‌های مستقل (Independent Components Analysis (ICA)) تکنیکی برای برآورد سیگنال‌های منابع مستقل از مجموعه‌ای از ضبط‌هاست که در آن سیگنال‌های منبع در نسبت‌های ناشناخته با هم ترکیب شده‌اند. در این مقاله با ICA آشنا می شویم و اینکه چطور می توان با استفاده از پکیج MNE-Python با آن کار کرد.

روش تحلیل مولفه‌های مستقل (Independent Components Analysis (ICA)) تکنیکی برای برآورد سیگنال‌های منابع مستقل از مجموعه‌ای از ضبط‌هاست که در آن سیگنال‌های منبع در نسبت‌های ناشناخته با هم ترکیب شده‌اند.

یک مثال رایج از این مسئله، blind source separation است: با سه دستگاه موسیقی که در یک اتاق می‌نوازند و سه میکروفون که اجراها را ضبط می‌کنند، آیا می‌توان صدای هر دستگاه موسیقی را جدا کرد؟ آیا می‌توانید سیگنال‌های ضبط شده توسط سه میکروفون را از هم جدا کنید و «ضبط» جداگانه‌ای برای هر ساز داشته باشید؟

Independent component analysis

حال این مثال را می‌توان برای تحلیل سیگنال EEG به کار برد:
«میکروفون‌ها» (کانال‌های حسگر)ی وجود دارند که به طور همزمان، صدای ابزارهای موسیقی مختلف (پلک زدن، ضربان قلب، فعالیت در نواحی مختلف مغز، فعالیت ناشی از فشردن فک یا بلعیدن و …) را ضبط می‌کنند.

تا زمانی که این سیگنال‌های منابع مختلف از نظر آماری مستقل و غیرگاوسی باشند، می‌توان منابع را با استفاده از ICA جدا کرد و سپس سیگنال‌های حسگر را پس از حذف منابع ناخواسته، بازسازی کرد.

 

فرض کنید که n ترکیب   از n مولفه‌ی مستقل داریم:

ICA

معادله را می توان به صورت بردار-ماتریس نوشت:

ICA

که در رابطه فوق

x: متغیر تصادفی که عناصر آن، ترکیباتx1, x2, …xn  هستند.

s: بردار تصادفی که عناصر آن، منابع  s1, s2, …,sn هستند.

a: یک ماتریس ترکیب با عناصر aij

 

  • نقطه شروع برای ICA یک فرض خیلی ساده است که مولفه‌های از نظر آماری مستقل هستند.

 

  • فرض دیگر آن است که مولفه‌های مستقل، توزیع غیرگاوسی دارند.

 

  • پس از برآورد ماتریس A، می‌توانیم معکوس آن (W) را محاسبه کنیم و مولفه‌های مستقل را به صورت زیر بدست آوریم

اعمال ICA در MNE-Python

  • قبل از اعمال ICA، یک مرحله‌ی مهم، فیلتر کردن داده‌ها برای حذف نویز است که می‌تواند بر کیفیت عملکرد ICA تأثیر منفی بگذارد.
  • یک فیلتر بالاگذر با فرکانس قطع 1 هرتز توصیه می‌شود.

Python

import mne
filt_raw = raw.copy()filter(l_filter=1.0, h_freq=None)
  • پس از انجام فیلترینگ‌های مناسب، می‌توانیم از ICA استفاده کنیم.
  • در ابتدای کار به تعداد زیادی مولفه برای جداسازی سیگنال نیاز نیست (در مراحل بعدی می‌توان تعداد مولفه‌ها را اضافه کرد.)

Python

from mne.preprocessing import ICA
ica = ICA(n_components=5, max_iter="auto")
ica.fit(filt_raw)

ICA_MNE

  • با استفاده از تابع plot_overlay() می‌توان یک همپوشانی از سیگنال اصلی در برابر سیگنال بازسازی شده رسم کنیم و ICهای موردنظر را حذف کنیم.

Python

ICA.plot_overlay(raw, exclude=[0])

plot_overlay in MNE


دیدگاه ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

code