التنبؤ بأمراض القلب باستخدام التعلم الآلي | Heart Disease Prediction using Machine Learning

الخميس 30 رجب 1443ھ الخميس 3 مارس 2022م
فيسبوك
تويتر
واتساب
تيليجرام
لينكدإن
المحتوى

مقدمة

يعد التنبؤ بأمراض القلب وتشخيصها أحد التحديات الكبرى في الصناعة الطبية حيث أنه يعتمد على عدة عوامل تشمل الفحص البدني وأعراض وعلامات مختلفة تظهر على المريض.

يُنظر إلى أمراض القلب على أنها أكثر الأمراض فتكًا في العالم بحياة الإنسان وذلك بسبب عدم استطاعة القلب على دفع الكمية المطلوبة من الدم إلى أعضاء الجسم المتبقية لأداء الوظائف المنتظمة في جسم الإنسان.

تشمل العوامل التي تؤثر على أمراض القلب مستويات الكوليسترول في الجسم ، عادات التدخين والسمنة ، التاريخ العائلي للأمراض ، ضغط الدم ، بيئة العمل وغيرها و تلعب خوارزميات التعلم الآلي ML Algorithms اليوم دورًا أساسيًا ودقيقًا في التنبؤ بأمراض القلب و تسمح التطورات المتسارعة في التكنولوجيا للغة الآلة Machine Language بالاندماج مع أدوات البيانات الضخمة Big Data لإدارة البيانات غير المهيكلة Unstructured Data والمتنامية بشكل كبير والتي تشمل البيانات الطبية للمرضى حول العالم.

يمكن التنبؤ بأمراض القلب بناءً على أعراض مختلفة مثل العمر ، الجنس، معدل ضربات القلب وما إلى ذلك و الذي يقلل بدوره من معدل الوفيات لمرضى القلب سنقوم في هذا الدرس التقني باستخدام خوارزميات التعلم الآلي ولغة باثيون لعمل ذلك !

1. التحليل الاستكشافي للبيانات EDA

قبل تدريب نموذج التعلم الآلي الخاص بنا والقادر على التنبؤ بأمراض القلب ، نحتاج إلى فهم البيانات وتحليلها لمعرفة ما سنعمل معه و الهدف هنا هو معرفة المزيد عن البيانات ليصبح من السهل علينا تحديد الميزات Features التي تؤثر بشكل كبير على التنبؤ بأمراض القلب.

يساعدنا التحليل الاستكشافي للبيانات في العثور على إجابات لبعض الأسئلة المهمة مثل: ما هي المشكلة أو الأمر الذي تحاول حله؟ ما نوع البيانات التي لدينا وكيف نتعامل مع الأنواع المختلفة؟ ما هي البيانات المفقودة وكيف تتعامل معها؟ القيم المتطرفة ولماذا يجب أن نتعامل معها؟ كيف يمكنك إضافة ميزات أو تغييرها أو إزالتها لتحقيق أقصى استفادة من بياناتك؟

1.1 استيراد المكتبات

يمكن تحميل مجموعة البيانات و الأكواد المستخدمة في هذا الدرس من خلال الرابط التالي : للتحميل📂

1.1 إطار البيانات الخاص بتوقع أمراض القلب

1.2 الشرح الوصفي للبيانات :

  • age : العمر بالسنوات.
  • sex : الجنس.
    • القيمة 1 : ذكر.
    • القيمة 0 : أنثى.
  • cp : نوع ألم الصدر
    • القيمة 0 : بدون أعراض.
    • القيمة 1 : الذبحة الصدرية اللانمطية.
    • القيمة 2 : الألم غير الزاوي.
    • القيمة 3 : الذبحة الصدرية النموذجية.
  • trestbps : ضغط دم الشخص أثناء الراحة عند دخوله المستشفى (بالمليمتر الزئبقي mm Hg ).
  • chol : قياس الكوليسترول لدى الشخص بالملغرام/ديسيلتر mg/dL.
  • fbs : نسبة السكر في دم الشخص أثناء الصيام (نسبة السكر>120 بالملغرام/ديسيلتر 1= صحيح ؛ 0 = خطأ).
  • restecg : نتائج تخطيط القلب أثناء الراحة :
    • القيمة 0 : تضخم البطين الأيسر المحتمل أو المؤكد حسب معايير إستس Estes’ criteria
    • القيمة 1 : الوضع الطبيعي
    • القيمة 2 : وجود شذوذ في موجة ST-T (انقلاب الموجة T و / أو ارتفاع ST أو انخفاض> 0.05 mV)
  • thalach : الحد الأقصى لمعدل ضربات القلب للشخص
  • exang : الذبحة الصدرية الناتجة عن التمرين (1 = نعم ؛ 0 = لا).
  • oldpeak : انحسار ST الناجم عن التمرين المتعلق بالراحة يتعلق “ST” بالمواقع على مخطط ECG.
  • slope : ميل المستقيم لجزء الـ ST من تمرين الذروة
    • القيمة 0 : متصاعد upsloping.
    • القيمة 1 : مسطح flat.
    • القيمة 2 : منحدر downsloping.
  • ca : عدد الأوعية الدموية Vessels (0-3)
  • thal : اضطراب في الدم يسمى الثلاسيميا
    • القيمة 0 : NULL (تم إسقاطها من مجموعة البيانات سابقًا)
    • القيمة 1 : خلل ثابت (عدم تدفق الدم في جزء من القلب)
    • القيمة 2 : تدفق الدم الطبيعي
    • القيمة 3 : عيب قابل للانعكاس (لوحظ تدفق للدم ولكنه ليس طبيعيًا)
  • target : تمثل وجود مرض بالقلب من عدمه وهو المتغير المستهدف الذي نريد التنبؤ به
    • القيمة 0 : قلب سليم.
    • القيمة 1 : وجود مرض بالقلب.

لنبدأ الآن بتحليل البيانات من خلال الرسومات البيانية:

1.3 استخراج المعلومات الإحصائية للبيانات :

1.2 المعلومات الإحصائية للبيانات

من خلال هذا الجدول بإمكاننا استخراج معلومات إحصائية لكل ميزة من الميزات مثل المعدل mean ، الانحراف المعياري std أصغر قيمة min و أكبر قيمة max فعلى سبيل المثال نرى أن عدد الأشخاص في مجموعة البيانات 303 و معدل الأعمار لهم هو 54 سنة و متوسط نسبة الكولسترول mg/dL 246.26 وأعلى قيمة ضغط انقباضي trestbps هي 200 بينما أقل قيمة هي 126.

1.4 استعراض حالة الأشخاص في مجموعة البيانات:

1.3 عدد الأشخاص المصابين بأمراض القلب مقابل الأشخاص الغير مصابين.

لدينا 165 شخصًا يعانون من أمراض القلب و 138 شخصًا سليمًا ، لذا فإن بيانات المتغير المستهدف target الذي نريد توقعه هي بيانات متوازنة.

1.5 التحقق من القيم المفقودة مجموعة البيانات:

1.4 التحقق من وجود قيم مفقودة بكل ميزة

لحسن الحظ لا يوجد أي قيم مفقودة لدينا في أي من الميزات ولذلك لن نضطر إلى إجراء أي تعديلات بالوقت الراهن لتنظيف البيانات

1.6 تحديد نوعية الميزات [فئوية Categorical ، رقمية متصلة Continuous ] و التحقق من قيم كل منها :

1.5 التحقق من القيم الممثلة لكل ميزة وتحديد نوع الميزة

1.7 دراسة علاقة الميزات الفئوية بأمراض القلب:

Categorical Features : ['sex', 'cp', 'fbs', 'restecg', 'exang', 'slope', 'ca', 'thal', 'target']
1.6 تصوير الميزات الفئوية بالنسبة لأمراض القلب

شرح الألوان في التصوير البياني:

  • 544FE5# : سليم
  • #F45F62 : مريض قلب
  • #BB2462 : سليم أو مريض حسب التصوير فعلى سبيل المثال : يشير الرقم 0.0 إلى الإناث في ميزة الجنس ، حوالي 22 منهن لا يعانين من أي أمراض بالقلب و أكثر من 70 هن بالفعل مريضات بالقلب بينما يشير الرقم 1.0 إلى الذكور ويوضح الرسم أن حوالي 90 منهم مرضى بالقلب و أكثر من 110 هم سليمون.
1.7 شرح لكيفية قراءة التصوير البياني

الملاحظات المستخرجة من التصوير البياني :

cp (ألم الصدر): الأشخاص الذين يعانون من آلام في الصدر من نوع : cp : [1 ، 2 ، 3] يميلون للتعرض لأمراض القلب أكثر من الأشخاص الذين لا يعانون من أي آلام في الصدر cp : 0

restecg (نتائج تخطيط القلب أثناء الراحة): الأشخاص ذوو القيمة 1 ( وجود إيقاع غير طبيعي للقلب ، والذي يمكن أن يتراوح من أعراض خفيفة إلى مشاكل شديدة) هم أكثر عرضة للإصابة بأمراض القلب.

exang (الذبحة الصدرية الناتجة عن التمرين): الأشخاص الذين يعانون من ذبحة صدرية ناتجة عن أمر غير التمرين والذين يحملون القيمة 0 هم أكثر عرضة لأمراض القلب من الذين لديهم ذبحة صدرية ناتجة عن التمرين القيمة 1.

slope (ميل المستقيم لجزء الـ ST من تمرين الذروة): الأشخاص الذين لديهم قيمة ميل منحدر downsloping بقيمة 2 لديهم علامات تدل على وجود قلب غير صحي وبالتالي هم أكثر عرضة للإصابة بأمراض القلب من الأشخاص الذين لديهم قيمة ميل متصاعد upsloping بقيمة 0 أو ميل مسطح flat بقيمة 1: الحد الأدنى من التغيير (قلب صحي نموذجي)).

ca (عدد الأوعية الدموية (0-3) ): كلما زادت حركة الدم كلما كان ذلك أفضل ، لذلك فإن الأشخاص الذين لديهم عدد أوعية أقل ca يساوي 0 هم أكثر عرضة للإصابة بأمراض القلب.

thal (اضطراب في الدم يسمى الثلاسيميا) : الأشخاص الذين لديهم قيمة thal = 2 هم أكثر عرضة للإصابة بأمراض القلب.

1.8 دراسة علاقة الميزات الرقمية المتصلة بأمراض القلب:

1.8 تصوير الميزات الرقمية أو المتصلة بالنسبة لأمراض القلب

trestbps : عندما يكون قياس ضغط الدم أعلى من 130-140 mm Hg فذلك يتعبر أمرًا مثيرًا للقلق.

chol : عندما يكون قياس الكولسترول أعلى من 200 mg/dL فهو مؤشر شديد الخطورة كما هو موضح في التصوير البياني أعلاه.

thalach : الأشخاص الذين يزيد معدل ضربات القلب لديهم عن 140 هم أكثر عرضة للإصابة بأمراض القلب.

1.9 مصفوفة الارتباط Correlation Matrix

الهدف من هذه المصفوفة هو إظهار العلاقة بين الميزات وهذا يفيد في تقنيات هندسة الميزات Feature Engineering ولكن ما يهمنا أكثر في هذا الدرس هو العلاقة بين المتغير المستهدف target (معرفة حالة الشخص مصاب بمرض قلبي أم غير مصاب) وبقية الميزات أي أن تركيزنا سيكون على الصف الأخير من المصفوفة.

1.9 مصفوفة الارتباط التي تدرس العلاقة بين الميزات في مجموعة البيانات
1.10 دراسة العلاقة بين المتغير المستهدف وبقية الميزات

كيف يتم دراسة الترابط ؟

  • كلما كانت قيمة الارتباط أقرب إلى الصفر كلما كان الترابط بين الميزة والمتغير المستهدف ضعيفًا.
  • كلما كانت قيمة الارتباط أقرب لـ -1 أو 1 فهذا يدل على قوة العلاقة الترابطية.

ملاحظات الارتباط:

  • fbs و chol هي الميزات الأقل ارتباطًا بالمتغير المستهدف.
  • جميع الميزات الأخرى لها ارتباط كبير مع المتغير المستهدف.

2. التنبؤ بأمراض القلب باستخدام التعلم الآلي

2.1 معالجة البيانات

بعد استكشاف مجموعة البيانات ، يمكننا ملاحظة أننا بحاجة إلى تحويل بعض المتغيرات الفئوية إلى متغيرات رقمية مرتبة dummy values وإعادة تقييس scaling جميع القيم قبل تدريب نماذج التعلم الآلي.

لذلك ، بالنسبة لهذه المهمة ، سأستخدم طريقة get_dummies لإنشاء أعمدة جديدة للمتغيرات الفئوية:

2.1 إطار البيانات الجديد بعد تحويل الميزات الفئوية وإعادة قياس الميزات الرقمية المتصلة.

2.2 تطبيق خوارزمية الانحدار اللوجستي

الآن ، سنقوم بتدريب نموذج التعلم الآلي على التنبؤ بأمراض القلب. وسنستخدم خوارزمية الانحدار اللوجستي للقيام بهذه المهمة.

ولكن قبل تدريب النموذج ، سأحدد أولاً دالة برمجية Function تساعد في طباعة تقرير عن أداء نموذج التصنيف الخاص بنا:

لنقم الآن بتقسيم البيانات إلى مجموعات تدريب واختبار. سنقسم البيانات إلى 70٪ تدريب و 30٪ اختبار:

الآن سنبدأ بتدريب نموذج التعلم الآلي ونطبع تقرير التصنيف لنموذج الانحدار اللوجستي الخاص بنا:

2.2 تقرير يقيس أداء نموذج الانحدار اللوجستي في التنبؤ بأمراض القلب.
  • نلاحظ أن ضبط النموذج Model’s Accuracy يساوي لــ 86.81 %
  • دقة النموذج Model’s Precision تساوي لـ 87 %
  • نتيجة إف F-score تساوي 87%

ملاحظات مصفوفة الدقة (الالتباس) Confusion Matrix

  • TN : 34
  • FP : 07
  • TP : 45
  • FN : 05

مانعتبره نموذج جيد جداً في التصنيف ، بالطبع بالإمكان رفع أداء النموذج بشكل أكبر من خلال إضافة المزيد من البيانات و تحسين جودتها و المقارنة بين عدة نماذج ومعاملات أخرى.

ملاحظة : قمت بشرح هذه المقاييس وكيف يتم قراءتها واستنتاج جودة النموذج عن طريقها من خلال سلسلة من التغريدات قمت بنشرها سابقًا على منصة تويتر بإمكانك الاطلاع عليها من الرابط أدناه:

https://twitter.com/Science10S/status/1493508247638228997?s=20&t=HK8KnwI0Qb0pD64-ddDoZg

2.3 التنبؤ ببيانات جديدة

سنقوم في هذا القسم باختبار بيانات جديدة لثلاثة أشخاص دخلوا حديثًا إلى المستشفى ونريد التحقق من خلال النموذج الذي قمنا بتدريبه للإطمئان على صحة قلوبهم.

2.3 إطار بيانات الأشخاص الذين دخلوا المستشفى حديثًا

ملائمة البيانات لتصبح كبيانات الاختبار تماماً من حيث تحويل البيانات الفئوية إلى رقمية و معايرة البيانات المستمرة كالعمر ومن ثم تعويض الأعمدة المفقودة من خلال عملية Right Join مع بيانات الاختبار حيث أن النموذج يستقبل بيانات بالأبعاد التالية : 1×30 أي يجب أن يكون هنالك 30 ميزة.

2.4 بيانات الأشخاص الجدد بعد ملائمتها مع بيانات الاختبار
array([1, 0, 1], dtype=int64) 

النتائج التي توقعها النموذج:

  • المريض الأول : يعاني من مرض في القلب.
  • المريض الثاني : لا يعاني من أي مرض في القلب.
  • المريض الثالث : يعاني من مرض في القلب

آمل أن يكون هذا الدرس قد نال إعجابكم . لا تترددوا في طرح أسئلتكم القيمة في قسم التعليقات أدناه.

المصادر

نشرة فهم البريدية
لتبقى على اطلاع دائم على كل ما هو جديد مما تقدمه منصة فهم، انضم لنشرتنا البريدية.
استشاري تقني في علم البيانات والذكاء الاصطناعي، مهتم بكل ما يخص البيانات من إدارة، حوكمة، وتنفيذ، حاصل على بكالوريوس في علوم الهندسة الكهربائية، صانع محتوى على منصة فهم، أنشر المعرفة الرقمية على حساباتي في وسائل التواصل الاجتماعي.
  1. سمية سمية

    رائع جدا، الله يعطيك العافية

    • محمد عثمان محمد عثمان

      أهلاً سمية،

      يسرنا أن الدرس قد نال إعجابكِ.

    • فاطمة عبدالله فاطمة عبدالله

      السلام عليكم ورحمة
      عندي بحث تخرج عن بالتنبؤ بامراظ القلب بالتعلم الالي اريد اكتب مشكله البحث ماجاي اكدر اعبر او اكتب المشكله

  2. باسم جمعه باسم جمعه

    بارك الله فيكم
    سوال،. في حالة اعتمادنا على هذا المودل واردنا استخدامه للبيانات المستقبلية ،،طبعا بدون وجود قيمة target,,
    ماهي الآلية في استخدامها للبيانات المستقبلية للتنبؤ بها.؟

    شكرا

    باسم

    • محمد عثمان محمد عثمان

      أهلا باسم ،

      بدايًة يعد هذا النموذج مبسط للغاية فيما يتعلق بمسألة بهذا التعقيد حيث يتم في الواقع استخدام المزيد من البيانات والميزات لتطوير نماذج أكثر دقة وكفاءة .

      تم إضافة فقرة جديدة للتنبؤ بالبيانات الجديدة ، شكراً على مشاركتك المتميزة .

      • باسم باسم

        شكرا جزيلا،،درس ممتاز و جهودكم متميزة صراحه،،بالتوفيق،،
        تم الاطلاع على الفقرة الجديدة وهذا الي كنت محتاجه

        شكرا

  3. باسم باسم

    شكرا لكم

    سوالي ،، كيف سيتم تطبيق هذا المودل في البيانات المستقبلية طبعا بدون وجود target,,
    او ماهي الالية في استخدامها في البيانات الجديدة للتنبؤ ؟

  4. فهد رضا فهد رضا

    يعطيك الف عافية .. جدا استمتعت بقراءة المقال

  5. كندة كندة

    مرحبا أيمكنكم إضافة فقرة اختيار الميزات لرفع نسبة النجاح؟

  6. حسن القصير حسن القصير

    تبارك الرحمن .. شرح رائع وجهود كبيرة ورائعة ومشكورة أستاذنا الفاضل
    ومن لطفك كيف استطيع استخدام برنامج الماتلاب على هذا النموذج ؟
    وماهي مصادر البيانات

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *