چارچوب انجام یک پروژه تشخیص آریتمی قلبی با سیگنال  ECG؛ از داده تا ارزیابی مدل


تشخیص خودکار آریتمی قلبی یکی از کاربردهای مهم پردازش سیگنال ECG و هوش مصنوعی در پزشکی است. در سال‌های اخیر، روش‌های مختلفی بر پایه یادگیری ماشین و یادگیری عمیق برای تشخیص و طبقه‌بندی آریتمی‌های قلبی ارائه شده‌اند. با این حال، در بسیاری از پروژه‌ها تمرکز اصلی روی طراحی یک مدل پیچیده و رسیدن به یک عدد Accuracy بالا قرار می‌گیرد، در حالی که یکی از مهم‌ترین بخش‌های یک پژوهش معتبر، نحوه طراحی آزمایش و ارزیابی مدل است. در این مطلب قصد دارم چارچوبی را که در یک پروژه تحقیقاتی تشخیص آریتمی قلبی با ECG دنبال کردم توضیح دهم؛ چارچوبی که می‌تواند برای پروژه‌های تحقیقاتی، پایان‌نامه‌ها و حتی توسعه سیستم‌های بالینی مورد استفاده قرار گیرد.

نکته: هدف این مطلب آموزش الگوریتم‌های پردازش سیگنال، یادگیری ماشین یا یادگیری عمیق نیست. تمرکز این مطلب بر این است که وقتی یک مدل تشخیص آریتمی طراحی کردیم، چگونه باید آزمایش‌ها را طراحی کنیم و چطور میزان واقعی عملکرد و قابلیت تعمیم مدل را ارزیابی کنیم.

در یک دوره جدا، به صورت تخصصی چهارچوب پردازش سیگنال قلبی (ECG) به صورت گام به گام و پروژه محور آموزش داده شده است.

ویدیو آموزشی: چارچوب انجام پروژه تحقیقاتی تشخیص آریتمی با ECG 

اگر در حال انجام پایان‌نامه، پروژه تحقیقاتی یا مقاله در زمینه پردازش سیگنال ECG، تشخیص آریتمی، یادگیری ماشین یا یادگیری عمیق پزشکی هستید، پیشنهاد می‌کنم قبل از انتخاب مدل، ابتدا نحوه ارزیابی و طراحی آزمایش‌های خود را مشخص کنید. بسیاری از مشکلات یک پروژه نه در مرحله طراحی شبکه، بلکه در مرحله data splitting، validation و evaluation ایجاد می‌شوند.

نکته: ویدیو در YouTube بارگزاری شده است.


تشخیص آریتمی قلبی از روی سیگنال ECG

از آنجا که هدف اصلی این مطلب بررسی روش صحیح ارزیابی مدل‌های تشخیص آریتمی است، در این بخش تنها مروری کوتاه بر فرایند تشخیص آریتمی قلبی از روی سیگنال ECG خواهیم داشت. جزئیات مربوط به پردازش سیگنال، استخراج ویژگی و طبقه‌بندی آریتمی قلبی به‌صورت پروژه‌محور در دوره پردازش سیگنال ECG آموزش داده شده است.

برای تشخیص آریتمی قلبی، ابتدا سیگنال ECG افراد ثبت می‌شود. سپس سیگنال تحت مراحل مختلف پیش‌پردازش (Preprocessing) قرار می‌گیرد تا نویزها و عوامل نامطلوب کاهش پیدا کنند. در ادامه، با استفاده از موقعیت پیکهای R-peak، ضربان‌های قلبی از سیگنال ECG جدا می‌شوند که به این مرحله Heartbeat Segmentation گفته می‌شود.

چارچوب انجام یک پروژه تشخیص آریتمی قلبی با سیگنال ECG؛ از داده تا ارزیابی مدل

آریتمی‌های قلبی می‌توانند در اثر اختلال در فعالیت الکتریکی و سیستم هدایت قلب یا در ارتباط با برخی مشکلات ساختاری و فیزیولوژیک قلب ایجاد شوند. این اختلالات می‌توانند الگوی ECG و به‌ ویژه شکل موج و زمان‌بندی بخش‌های مختلف هر ضربان را تغییر دهند. به همین دلیل، ویژگی‌هایی مانند مورفولوژی (Morphology)، فاصله بین ضربان‌ها و سایر ویژگی‌های زمانی می‌توانند اطلاعات مهمی برای تشخیص و طبقه‌بندی آریتمی فراهم کنند.

در یک پروژه تشخیص آریتمی، پس از پیش‌پردازش سیگنال و شناسایی R-peakها، ضربان‌های قلبی از ECG جدا می‌شوند. سپس، بسته به روش مورد استفاده، ویژگی‌های مختلفی از این ضربان‌ها و توالی زمانی آنها استخراج شده و به یک الگوریتم یادگیری ماشین کلاسیک یا یک مدل یادگیری عمیق داده می‌شوند. در نهایت، مدل می‌تواند ضربان را به‌عنوان ضربان نرمال یا یکی از انواع آریتمی‌های موردنظر طبقه‌بندی کند.

چارچوب انجام یک پروژه تشخیص آریتمی قلبی با سیگنال ECG؛ از داده تا ارزیابی مدل

بنابراین، اگرچه انتخاب الگوریتم یادگیری ماشین یا یادگیری عمیق بخش مهمی از یک پروژه تشخیص آریتمی است، نحوه آماده‌سازی داده و مهم‌تر از آن، نحوه ارزیابی مدل نیز نقش بسیار مهمی در اعتبار نتایج دارد. در ادامه، تمرکز اصلی ما بر همین موضوع، یعنی طراحی صحیح روش‌های ارزیابی و بررسی قابلیت تعمیم مدل خواهد بود.

چرا نحوه ارزیابی مدل اهمیت زیادی دارد؟

فرض کنید یک مدل یادگیری عمیق برای تشخیص آریتمی طراحی کرده‌اید و روی داده‌های ECG به Accuracy برابر با 99 درصد رسیده‌اید. آیا می‌توان نتیجه گرفت که این مدل برای تشخیص آریتمی در بیماران جدید نیز عملکرد بسیار خوبی دارد؟

لزوماً نه!

یکی از مشکلات مهم در مطالعات ECG این است که ممکن است نمونه‌هایی از یک بیمار در هر دو مرحله آموزش و تست قرار گرفته باشند. در این حالت، مدل ممکن است بخشی از ویژگی‌های اختصاصی همان بیمار را یاد گرفته باشد. بنابراین، عملکرد بالا الزاماً به معنای توانایی مدل در تشخیص آریتمی در یک بیمار جدید نیست.

به همین دلیل، هنگام مطالعه مقالات تشخیص آریتمی باید فقط به عدد Accuracy توجه نکنید. باید دقیقاً بررسی کنید:

  • داده‌ها چگونه به training و testing تقسیم شده‌اند؟
  • آیا بیمارهای موجود در training و testing یکسان هستند؟
  • آیا داده‌های تست واقعاً از بیمارهای جدید هستند؟
  • آیا داده‌ای از یک بیمار در هر دو بخش قرار گرفته است؟
  • آیا مدل روی یک پایگاه داده مستقل نیز آزمایش شده است؟
  • آیا از cross-validation استفاده شده است؟
  • آیا عدم تعادل بین کلاس‌های آریتمی در نظر گرفته شده است؟

متأسفانه در برخی مطالعات، اصطلاحاتی مانند unseen data استفاده شده‌اند، اما باید دقت کرد که منظور از unseen دقیقاً چیست. یک نمونه ممکن است برای مدل unseen باشد، اما همچنان متعلق به همان بیماری باشد که نمونه‌هایش در training دیده شده‌اند. این موضوع از نظر ارزیابی قابلیت تعمیم مدل تفاوت بسیار مهمی ایجاد می‌کند.

دو پایگاه داده مهم برای پروژه‌های ECG

در پروژه‌های تشخیص آریتمی، استفاده از پایگاه‌های داده استاندارد و معتبر اهمیت زیادی دارد. از جمله پایگاه‌های شناخته‌شده می‌توان به MIT-BIH Arrhythmia Database  و St. Petersburg INCART 12-lead Arrhythmia Database  اشاره کرد.

  • MIT-BIH Arrhythmia Database (link)
  • St Petersburg INCART 12-lead Arrhythmia Database(link)

MIT-BIH  یکی از پرکاربردترین پایگاه‌های داده در تحقیقات مربوط به طبقه‌بندی آریتمی است و به همین دلیل بسیاری از روش‌های موجود روی آن ارزیابی شده‌اند. INCART نیز یک پایگاه داده مستقل ECG است که می‌تواند برای بررسی قابلیت تعمیم مدل در شرایط متفاوت مورد استفاده قرار گیرد.

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

چهارچوب کلی ارزیابی تشخیص آریتمی

چارچوب انجام یک پروژه تشخیص آریتمی قلبی با سیگنال ECG؛ از داده تا ارزیابی مدل

در مطالعات تشخیص آریتمی معمولاً دو رویکرد اصلی برای ارزیابی مطرح هستند:

 روش ارزیابی  Intra-subject evaluation

در این روش، داده‌های مربوط به یک بیمار می‌توانند در training و testing مورد استفاده قرار گیرند، البته نمونه‌های تست نباید در فرآیند آموزش دیده باشند.

این روش برای مقایسه برخی مدل‌ها و بررسی عملکرد اولیه مفید است، اما برای نشان دادن توانایی مدل در مواجهه با بیمار جدید محدودیت جدی دارد.

مشکل این روش ارزیابی: نشتی داده (data leakage) رخ میدهد و همین باعث میشود عملکرد مدل خیلی بهتر باشد، اما در داده های جدید کلا به مشکل بخورد!

روش ارزیابی   Inter-subject evaluation

در این روش، بیماران موجود در بخش training و testing از یکدیگر جدا هستند. یعنی مدل با داده‌های گروهی از بیماران آموزش داده می‌شود و سپس روی بیمارانی آزمایش می‌شود که در فرآیند آموزش حضور نداشته‌اند.

این روش از نظر کاربردهای پزشکی اهمیت بیشتری دارد، زیرا هدف معمولاً این است که مدل بتواند برای بیمارانی که قبلاً در فرآیند آموزش حضور نداشته‌اند نیز عملکرد قابل قبولی داشته باشد.

یک مقاله مروری جامع با عنوان Deep Learning-Based ECG Arrhythmia Classification: A Systematic Review  نیز مطالعات مختلف تشخیص آریتمی را از نظر روش‌ها، پایگاه‌های داده و شیوه ارزیابی بررسی کرده است.

چارچوب انجام یک پروژه تشخیص آریتمی قلبی با سیگنال ECG؛ از داده تا ارزیابی مدل

چارچوب انجام یک پروژه تشخیص آریتمی قلبی با سیگنال ECG؛ از داده تا ارزیابی مدل

بر اساس این مقاله، بخش قابل توجهی از مطالعات از رویکرد intra-patient استفاده کرده‌اند، در حالی که استفاده از رویکرد inter-patient  در سال‌های اخیر افزایش یافته است؛ موضوعی که اهمیت ارزیابی مدل روی بیماران متفاوت را نشان می‌دهد.

از 357 مطالعه، متاسفانه 321 مطالعه حالت intra-subject را برای ارزیابی مدلشون استفاده کرده اند. شاید نشه گفت این مطالعات فاقد ارزش علمی هستند، ولی میتوان گفت که اصلا از روش مناسبی برای ارزیابی روش خود استفاده نکرده اند و نمیشه به نتایج اونها اطمینان داشت.

21 مقاله از روش inter-subject استفاده کرده اند که البته در سالهای اخیر تعداد این مطالعات خیلی بیشتر هم شده است.

11 مقاله هم دقیقا توضیح ندادند که چطور ارزیابی کردند، که من میگم پیچوندن!!

یه تعدادی هم ترکیب دو حالت رو رفتند…

Inter-subject  را چگونه ارزیابی کنیم؟

برای ارزیابی inter-subject می‌توان از روش‌های مختلفی استفاده کرد. دو روش رایج عبارت‌اند از :

تقسیم داده به DS1 و DS2

چارچوب انجام یک پروژه تشخیص آریتمی قلبی با سیگنال ECG؛ از داده تا ارزیابی مدل

در این روش، بیماران به دو گروه مستقل تقسیم می‌شوند. یک گروه برای training و validation و گروه دیگر به‌صورت کاملاً مستقل برای testing  استفاده می‌شود.

نکته بسیار مهم این است که هیچ بیماری نباید همزمان در training و testing حضور داشته باشد.

Subject-wise K-fold Cross-validation

در این روش، بیماران به چند fold تقسیم می‌شوند و در هر تکرار، تعدادی از foldها برای آموزش و یک fold برای تست استفاده می‌شود.

اما یک نکته بسیار مهم وجود دارد:

تقسیم‌بندی باید در سطح subject انجام شود، نه در سطح heartbeat یا recording.

مزیت دیگر K-fold این است که می‌توان عملکرد مدل را در چندین تکرار مختلف بررسی کرد و از میانگین و انحراف معیار نتایج برای بررسی پایداری (stability) مدل استفاده کرد.

روش ارزیابی Cross-database evaluation

چارچوب انجام یک پروژه تشخیص آریتمی قلبی با سیگنال ECG؛ از داده تا ارزیابی مدل

چارچوب انجام یک پروژه تشخیص آریتمی قلبی با سیگنال ECG؛ از داده تا ارزیابی مدل

اگر واقعاً می‌خواهید قابلیت تعمیم مدل را بررسی کنید، بهتر است فقط به یک پایگاه داده اکتفا نکنید.

در cross-database evaluation، مدل با یک پایگاه داده آموزش داده می‌شود و با یک پایگاه داده مستقل تست می‌شود.

برای مثال:

MIT-BIH → Training/Validation

INCART → Testing

در این حالت، مدل هیچ نمونه‌ای از پایگاه داده INCART را در مرحله آموزش ندیده است. بنابراین این آزمایش می‌تواند اطلاعات ارزشمندی درباره توانایی مدل برای انتقال از یک پایگاه داده به پایگاه داده دیگر ارائه دهد.

البته cross-database evaluation چالش‌برانگیزتر است؛ زیرا دو دیتاست ممکن است از نظر sampling frequency، دامنه سیگنال، شرایط ثبت، تعداد لیدها، ویژگی بیماران و حتی نحوه annotation با یکدیگر تفاوت داشته باشند.

به همین دلیل، صرفاً آموزش مدل روی یک دیتاست و تست روی دیتاست دیگر کافی نیست و باید تفاوت‌های بین دو پایگاه داده نیز به‌درستی مدیریت شوند.

یک نکته مهم در preprocessing: تفاوت دامنه  ECG

یکی از چالش‌هایی که هنگام کار با ECG باید به آن توجه کرد، تفاوت دامنه سیگنال بین لیدهای مختلف و همچنین بین بیماران مختلف است.

اگر دامنه سیگنال یک بیمار بسیار متفاوت از بیمار دیگر باشد، این تفاوت ممکن است به‌جای ویژگی‌های واقعی ECG، به یکی از عوامل مؤثر در تصمیم مدل تبدیل شود.

یکی از روش‌های رایج برای کاهش این مشکل،z-score normalization  است.

برای مثال، می‌توان برای هر لید از هر بیمار، میانگین و انحراف معیار همان سیگنال را به‌صورت مستقل محاسبه کرد و سپس از رابطه زیر استفاده کرد:

Normalized ECG = (ECG − Mean) / Standard Deviation

در نتیجه، سیگنال هر لید به میانگین صفر و انحراف معیار یک تبدیل می‌شود.

روش‌های دیگری مانند Min-Max normalization نیز وجود دارند. انتخاب روش مناسب باید بر اساس نوع داده، معماری مدل و نحوه ارزیابی انجام شود.

بنابراین، normalization  فقط یک مرحله ساده preprocessing نیست؛ در ارزیابی‌های inter-subject و به‌خصوص cross-database  می‌تواند نقش مهمی در کاهش اختلاف بین داده‌ها داشته باشد.

چالش مهم دیگر: عدم تعادل بین کلاس‌های آریتمی

یکی دیگر از مشکلات اساسی در داده‌های ECG، class imbalance  است. معمولاً تعداد heartbeatهای کلاس‌های مختلف برابر نیست و برخی آریتمی‌ها نمونه‌های بسیار کمی دارند. در چنین شرایطی، اگر مدل بدون توجه به این مسئله آموزش داده شود، ممکن است عملکرد بسیار خوبی روی کلاس‌های پرتعداد داشته باشد اما در شناسایی کلاس‌های نادر ضعیف عمل کند.

یکی از روش‌های ساده برای مقابله با این مشکل در شبکه‌های عصبی، استفاده از Weighted Cross-Entropy  است. در این روش، خطاهای مربوط به کلاس‌های کم‌تعداد وزن بیشتری دریافت می‌کنند.

روش دیگر استفاده از sampler  است که احتمال انتخاب نمونه‌های مربوط به کلاس‌های minority را افزایش می‌دهد تا در batchهای آموزشی حضور بیشتری داشته باشند.

البته این روش‌ها تنها راه‌حل‌های موجود نیستند و در پروژه‌های جدی‌تر می‌توان از روش‌های پیشرفته‌تر مانند data augmentation، sample generation  و روش‌های adaptive برای تولید یا انتخاب نمونه‌های اقلیت استفاده کرد.

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

نکته بعدی اینکه علاوه بر اطلاعات morphology اطلاعات temporal هم در بررسی نوع آریتمی مهم هستند و بهتر است در مطالعه خودتون این اطلاعات رو در نظر بگیرید.

یا برخی مطالعات نشان داده که leadهای دیگه هم اطلاعات مفیدی ارائه میدهند، پس این نکته را نیز باید در طراحی سیستم خود در نظر داشته باشید.

جمع‌بندی

اگر بخواهیم یک پروژه تشخیص آریتمی با ECG را به‌صورت اصولی طراحی کنیم، نباید فقط روی انتخاب الگوریتم یا افزایش Accuracy تمرکز کنیم. یک پروژه معتبر باید از ابتدا تا انتها یک چارچوب مشخص داشته باشد:

Dataset → Preprocessing → Segmentation → Feature Extraction → Model Training → Evaluation → Generalization Analysis

و در مرحله ارزیابی بهتر است فقط یک Accuracy گزارش نشود. باید مشخص شود مدل در چه شرایطی ارزیابی شده، آیا بیماران training و testing مستقل بوده‌اند، آیا cross-validation انجام شده است و آیا مدل روی یک پایگاه داده مستقل نیز آزمایش شده است.

به‌خصوص اگر هدف نهایی، استفاده از مدل در کاربردهای پزشکی باشد، generalization  به بیماران جدید و داده‌های مستقل اهمیت بسیار بیشتری از یک Accuracy بسیار بالا روی نمونه‌هایی دارد که شرایط مشابهی با داده‌های training دارند.

در ویدیوی این مطلب، همین چارچوب را با جزئیات بیشتری توضیح داده‌ام و درباره نحوه طراحی آزمایش‌های نهایی در یک پروژه واقعی تشخیص آریتمی صحبت کرده‌ام.


دیدگاه ها

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

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

code