تحلیل سیگنال های مغزی – EEG Signal Processing
مقدمه
امروزه پیشرفت های هوش مصنوعی و کاربرد های آن در زمینه های مختلف علمی ، صنعتی ، پژوهشی و … بر کسی پوشیده نیست.
در زمینه های مختلف پزشکی از جمله تشخیص سرطان از روی تصاویر مربوطه یا پیشبینی های کاربردی و … نیز بسیار مفید واقع شده است ، یکی از زمینه هایی که پژوهشگران به پیشرفت و کمک های آن امیدوار اند زمینه پردازش سیگنال های مغزی یا EEG Signal Processing میباشد.
در این پست تلاش میکنیم تا بیشتر با این حوزه آشنا شویم و برای این امر سعی بر پیاده سازی مقاله ای در زبان پایتون میکنیم تا درک خوبی از آن پیدا کنیم.
EEG Signals
واژه EEG مخفف ای از واژه Electroencephalography میباشد که روشی برای ضبط فعالیت های الکتریکی مغزی است.
ضبط این سیگنال ها روش های مختلفی دارد ، یکی از متدوال ترین آن ها ضبط از طریق الکترود هایی است که به پوست سر متصل میشوند و جریان های یونی ای که به واسطه فعالیت های مغزی ایجاد میشوند را به صورت ولتاژ دریافت کرده و ضبط و ذخیره میکنند.
جنس این نوع الکترود ها معمولا از نوع کلرید نقره (AgCl) یا نقره (Ag) میباشد.
چالش های ضبط سیگنال
البته ضبط این سیگنال ها با چالش هایی همراه است ، یکی از آن چالش های مسئله نویز های مختلفی است که در صورتی که حذف نشوند ، نتیجه مطلوب را برای ما به عمل نمی آورند.
یکی از مسائلی که میتوانیم به آن اشاره کنیم مربوط به خود این دستگاه و روش ضبط آن شود ، چسباندن الکترود ها به پوست سر به علت داشتن مو باعث میشود نویز ها و اختلال هایی در ضبط پدید آید ، همچنین به علت چربی پوست سر ، اتصال الکترود ها به صورت مستقیم امکان پذیر نیست و قبل از اتصال حتما باید محل مورد نظر با الکل یا … پاکسازی شود و خود الکترود ها با استفاده از کرم های هادی (که انواع مختلفی دارند) به پوست سر متصل شوند ،همین امر موجب پدیداری نویز های دیگری میشود ، زیرا این کرم ها با گذر زمان به مرور خشک شده و در طی خشک شدن نویز را افزایش میدهند و نیاز به تمدید مجدد دارند.
از دیگر چالش ها میتوان به دشوار بودن مرحله ضبط برای اشخاص مختلف اشاره نمود ، روند اتصال الکترود ها و شیوه قرارگیری آن ها کمی زمان بر است ، همچنین نمونه ها نباید در طول ضبط حرکت کنند و یا حتی اعضای بدنشان را تکان دهند زیرا هر کدام از این موارد نتیجه آزمایش را تحت تاثیر قرار میدهند ، همچنین نور و صدا و دما و شرایط محیطی نیز باید تحت کنترل باشد تا مانع از اختلال در نتایج آزمایش شود ، با توجه به تمام موارد مطرح شده و از آنجایی که مرحله ضبط بین ۱ الی ۲ ساعت زمان میبرد ممکن است خارج حوصله کودکان ، سالمندان ، بیماران و… باشد.
مفاهیم
در این بخش به توضیح برخی مفاهیم میپردازیم تا درک آن موقع پیاده سازی آسان تر شود:
- فرمت فایل ها: فرمت فایل هایی که در این پیاده سازی استفاده کرده ایم ، فایل هایی با فرمت EDF که مخفف European Data Format است. یک قالب ساده و انعطاف پذیر برای تبادل و ذخیره سیگنال های بیولوژیکی و فیزیکی چند کاناله است.
- p-value: به زبان ساده یعنی فرض کنیم از یک جامعه نمونه برداری کنیم. مقدار احتمال (مقدار احتمال) میگوید که این نمونه چه مقدار نماینده جامعه است؛ مثلاً اگر مقدار احتمال از یک مقدار آستانه کمتر شد، باید پذیرفت که نمونه از توزیع جامعه پیروی نمیکند.
- Sample Rate: به تعداد برداشت در یک ثانیه گفته میشود.
- Channels: کانال های سیگنال های eeg منظور تعداد نقاط ضبط شده میباشد. وقتی میگوییم دیتا ما ۲۲ کاناله است ،یعنی از ۲۲ نقطه مغز اطلاعات را ذخیره کرده ایم.
- Shannon Entropy: یک ابزار آماری است که میانگین نرخ تولید اطلاعات را به ما میگوید.
- PSD: در پیاده سازی از مفهومی استفاده کرده ایم به نام psd یا Power Spectral Density که توزیع قدرت سیگنال را بین فرکانس های مختلف به ما میگوید.
psd از طریق یکی از فرمول های پایین قابل محاسبه است.
- Epoch: ایپاک به تقسیم بندی سیگنال به زمان های خاص میگوییم. به عنوان مثال اگر بگوییم ایپاک های ۱۰ دقیقه ای را بر سیگنال اعمال میکنیم ، یعنی کل سیگنال (اگر ۱ ساعت باشد) را به ۶ سیگنال ۱۰ دقیقه ای تبدیل کرده ایم. epoch ها میتواند با همپوشانی یا بدون آن اعمال شود. با اعمال epoch مورد نظر event های مربوطه را خواهیم داشت که تشکیل دهنده سیگنال در آن epoch ها میباشد.
پیاده سازی
پیاده سازی طبق مراحل مقاله صورت گرفته ، شما همچنین میتوانید فایل پیاده سازی شده را در این لینک مشاهده کنید.
هدف پیاده سازی مدلی است که بتواند حملات صرع را ۹ دقیقه قبل از حمله تشخیص دهد. مدل های استفاده شده SVM و KNN است که جزپیات آن هارا میتوانید از مقاله مطالعه کنید ، در صورتی که مایل باشید میتوانید مدل های شبکه عصبی و غیره را پیاده سازی و آزمایش نمایید.
Dataset
دیتاست استفاده شده را میتوانید از طریق این لینک مشاهده و دانلود کنید ، این دیتاست توسط دانشگاه MIT جمع آوری شده و بیماران از سنین و جنسیت های مختلفی است ، همچنین زمان هایی که حمله رخ داده ، در فایل نوشتاری ای داخل دیتاست میتوانید مشاهده کنید ، فایلی نیز وجود دارد که سیگنال های بدون حمله را شامل میشود.
Fetch Data
در این پیاده سازی ما فقط با اطلاعات بیمار سوم کار کردیم ، پس از خواندن اطلاعات ، زمان های رخداد حمله را ۹ دقیقه قبل از شروع تا پایان زمان حمله جدا میکنیم. برای سیگنال های بدون رخداد حمله نیز با زمان یکسان به طور تصادفی انتخاب و جداسازی میکنیم.
نمونه ای از سیگنال هایی که حمله در آن ها رخ داده مشخص است:
نمونه ای از سیگنال های بدون حمله:
Calculating Power Spectral Density
در این مرحله psd را بر روی سیگنال محاسبه خواهیم کرد ، اما مستقیم بر روی سیگنال نخواهیم اعمال کرد ، ابتدا روی سیگنال epoch های ۱۰ دقیقه ای و سپس روی هر کدام ، epoch های ۱۶ ثانیه ای میزنیم و سپس روی نتیجه حاصل شده ، psd را اعمال میکنیم.
در ابتدا باید سیگنال کامل را به بخش (ایپاک) های 10 دقیقه ای (600 ثانیه ای) تقسیم کنیم ، این کار توسط تابع make_fixed_length_epochs از کتابخانه mne صورت میپذیرد.
Calculating Shannon Entropy and Feature Extraction
در این بخش به ازای هر event و برای هر channel پنج کعیار را محاسبه و به عنوان ویژگی های نهایی استفاده میکنیم:
- shannon Entropy را برای psd های محاسبه شده ، محاسبه میکنیم.
- Mean (میانگین) هر epoch.
- standard deviation هر epoch.
- مینیمم را برای هر کانال محاسبه میکنیم.
- اکسیم را برای هر کانال محاسبه میکنیم.
پس از محاسبه ، از آنجا که ۱۰ نمونه داریم ، shape نهایی را به (10,3630) تبدیل میکنیم.
محاسبه p-value
طبق مقاله ، در این مرحله p-value هر feature را محاسبه و آن هایی که کمتر از 0.001 هستند را حذف میکنیم.
پس از این مرحله ، shape نهایی به (10,885) میرسد.
آموزش مدل
در بخش آخر مدل های SVM و KNN را بر روی دیتا آموزش میدهیم و با معیار هایی چون f1-score و confusion matrix و … عملکرد مدل را میسنجیم.
دیدگاهتان را بنویسید