تعریف ICA و نحوه ی اعمال آن در پکیج MNE-Python
- دسته:اخبار علمی
- هما کاشفی
روش تحلیل مولفههای مستقل (Independent Components Analysis (ICA)) تکنیکی برای برآورد سیگنالهای منابع مستقل از مجموعهای از ضبطهاست که در آن سیگنالهای منبع در نسبتهای ناشناخته با هم ترکیب شدهاند. در این مقاله با ICA آشنا می شویم و اینکه چطور می توان با استفاده از پکیج MNE-Python با آن کار کرد.
روش تحلیل مولفههای مستقل (Independent Components Analysis (ICA)) تکنیکی برای برآورد سیگنالهای منابع مستقل از مجموعهای از ضبطهاست که در آن سیگنالهای منبع در نسبتهای ناشناخته با هم ترکیب شدهاند.
یک مثال رایج از این مسئله، blind source separation است: با سه دستگاه موسیقی که در یک اتاق مینوازند و سه میکروفون که اجراها را ضبط میکنند، آیا میتوان صدای هر دستگاه موسیقی را جدا کرد؟ آیا میتوانید سیگنالهای ضبط شده توسط سه میکروفون را از هم جدا کنید و «ضبط» جداگانهای برای هر ساز داشته باشید؟
حال این مثال را میتوان برای تحلیل سیگنال EEG به کار برد:
«میکروفونها» (کانالهای حسگر)ی وجود دارند که به طور همزمان، صدای ابزارهای موسیقی مختلف (پلک زدن، ضربان قلب، فعالیت در نواحی مختلف مغز، فعالیت ناشی از فشردن فک یا بلعیدن و …) را ضبط میکنند.
تا زمانی که این سیگنالهای منابع مختلف از نظر آماری مستقل و غیرگاوسی باشند، میتوان منابع را با استفاده از ICA جدا کرد و سپس سیگنالهای حسگر را پس از حذف منابع ناخواسته، بازسازی کرد.
فرض کنید که n ترکیب از n مولفهی مستقل داریم:
معادله را می توان به صورت بردار-ماتریس نوشت:
که در رابطه فوق
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)
- با استفاده از تابع plot_overlay() میتوان یک همپوشانی از سیگنال اصلی در برابر سیگنال بازسازی شده رسم کنیم و ICهای موردنظر را حذف کنیم.
Python
ICA.plot_overlay(raw, exclude=[0])
دیدگاه ها