ما هو التحليل الاستكشافي للبيانات؟
التحليل الاستكشافي للبيانات Exploratory Data Analysis ومعروف باختصاره EDA وهو عمليات إحصائية لمعرفة شكل البيانات ووصفها وعرضها بشكل بياني واكتشاف العلاقات بين القيم.
“التحليل الاستكشافي للبيانات هو بمثابة القلب لأي نموذج تعلم آلي ناجح”
آبيكوي كنزلي، مهندس تعلم آلة
لماذا نستخدم التحليل الاستكشافي للبيانات؟
التحليل الاستكشافي مهم لأسباب متعددة مثل إيجاد حل لمشكلة معينة أو تحسين خدمة معينة أو لإظهار البيانات بشكل إبداعي.
المجالات التي تحتاج التحليل الاستكشافي للبيانات
المجالات التي تحتاج التحليل الاستكشافي للبيانات كثيرة، ولكن من أشهرها
- ريادة الأعمال، تحتاج الشركات لزيادة الأرباح ومعرفة أسباب الخسارة وتفادي الأخطاء
- نماذج التنبؤ في الذكاء الاصطناعي، قبل البدء بأي نموذج تنبؤي يجب دراسة البيانات وتحليلها لإيجاد طريقة مثلى للتنبؤ
- مجال الصحة والطب، تدرس البيانات من أجل توضيح المشاكل الطبية وحلها من خلال الطرق الإحصائية.
ما هي مجموعة البيانات؟
كي نفهم أهمية التحليل الاستكشافي يجب أن نعرف ما هو تعريف مجموعة البيانات.
مجموعة البيانات هي مجموعة من معلومات متشابهة تم جمعها بشكل منظم غالبا مثل ملف يحتوي على صور لأشخاص أو مثل بيانات الأرباح والخسائر لشركة تجارية أو مثل مجموعة كبيرة من ملفات الصوت. وعادة ما تصنف البيانات من حيث التنظيم إلى بيانات خام وبيانات مرتبة (نظيفة). وسنأخذ على سبيل المثال مجموعة البيانات في مشروع تنبؤ بمرض القلب.
شكل البيانات
البيانات المجدولة والمصنفة غالبًا ما تخزن في ملفات الجدولة مثل CSV, JSON, SQL. والبيانات النصية هي نصوص سواء كانت مجدولة أ على شكل نصوص طويلة وتخزن في الملفات ذاتها بالإضافة إلى ملفات تخزين النصوص مثل txt وdocs. هي التي يتم تطبيق التحليل الاستكشافي عليها.
سنركز في هذا المقال على البيانات المنظمة على شكل جداول
منهجية التحليل الاستكشافي للبيانات (EDA)
منهجية التحليل الاستكشافي هي خطوات عملية متبعة لإجراء تحليل جيد واستخلاص نتائج مفيدة، هذه المنهجية معدة من المصدر (كنزلي، ميديوم).
أولًا: استيراد البيانات
في الخطوة الألى نستورد أو نستدعي البيانات عن طريق مكتبة Pandas إلى بيئة العمل البرمجية من أجل تحضيرها لمعالجتها برمجيا
ثانيًا: فهم الشكل العام
في الخطوة الثانية ننظر إلى الصورة العامة للبيانات، أي ننظر إلى البيانات وأنواع القيم والمتغيرات الموجودة وما هي المشكلة وما هو الهدف المطلوب أو الممكن من مجموعة البيانات هذه لكن دون الدخول في التفاصيل أو التعديل على أي متغير.
ويفضل في هذه المرحلة تسجيل الملاحظات مثل:
المتغير: اسم المتغير
نوع المتغير: هو نوع أو صيغة المتغير (تصنيفي، رقمي، نصي، ترتيبي، نسبي(
توقع قوة الروابط والفائدة منها: قياس نوع الترابط والأهمية للمتغير تبعًا للهدف أو المشكلة المراد حلها. وهذه أهم نقطة في مرحلة الملاحظة وفهم الشكل العام، فهي ما تجعل محلل البيانات مميزًا عن غيره لأنها تعتمد على الحاسة السادسة والإبداع.
أدوات برمجية مفيدة في وصف البيانات
أدوات من مكتبة pandas:
.head() : أداة هيد (رأس) تظهر عدة صفوف عشوائية من البيانات وتفيد في رؤية عينة من البيانات دون تعقيد أو تحميلها كاملة.
.shape: عندما نطبق دالة شيب (شكل) على مجموعة البيانات، تقوم الدالة بحساب أبعاد مجموعة البيانات مثل كما يظهر بالصورة، ومعناها أن ملف البيانات يحتوي على 14 عمود و178 صف. 14 عمود تشير إلى عدد المتغيرات أو الصفات، و178 صف يشير إلى عدد الاستبانات.
()describe.: دالة ديسكرايب (شرح)، تقوم بتقديم معلومات عن مجموعة البيانات المستوردة. هذه المعلومات تشمل القيم الإحصائية للبيانات ومنها النزعة المركزية (Central Tendency) للمتغيرات. وتكون قيم إحصائية كثيرة.
()info.: تقدم دالة انفو (معلومة) ملخص عن مجموعة البيانات مثل نوع البيانات، عدد البيانات المفقودة، حجم البيانات وسعة التخزين.
()isnull.: أداة اسنال هي اختصار ل is null? وتعني هل هذا العمود يحتوي على خلايا فارغة أو غير معرفة؟
في الصورة التالية تم استخدام دالتي isnull لايجاد القيم غير المعرفة والفارغة و sum لإيجاد مجموع القيم غير المعرفة في كل متغير (عمود).
ثالثًا: التحضير
في هذه المرحلة تكون عملية تنظيف البيانات، ويجب علينا أن نسأل عدة أسئلة ونجيب عنها مثل:
هل يوجد متغيرات (أعمدة) عديمة الفائدة؟
هل يوجد أعمدة مكررة؟
هل يوجد احتياج لأعمدة بيانات جديدة؟
تنظيف البيانات
تنظيف البيانات هي عملية تعديل البيانات من البيانات الأصلية، وتسمى البيانات الخام (Row Data)، لملاءمة معايير مخصصة حسب هدف معين.
البيانات الخام (Row Data)
البيانات الخام (Row Data) هي البيانات التي لم يتم أي إجراء عليها بعد جمعها وغالبا ما تحتوي على نقص في بعض الخلايا أو عرض رديء للبيانات.
في أي مرحلة يتم تطبيق التحليل الاستكشافي؟
هل مرحلة يتم تطبيق التحليل الاستكشافي قبل تنظيف مجموعة البيانات أم بعد تنظيفها؟
بشكل عام لا يوجد قانون أو منهجية إلزامية لهذا الإجراء، فهو يعتمد على حسب تعقيد وترابط وهدف ونوع البيانات.
يوجد حالتين، حالة البيانات النصية وحالة البيانات الرقمية
في حالة البيانات النصية
يجب تنظيف البيانات أولًا حيث أنه لا يوجد فائدة من تحليل بيانات غير مفهومة وغير مترابطة للحاسوب!
المثال في مجموعة البيانات في الصورة يوضح ذلك في خانة جنس الموظف، حيث أنه يوجد عدة طرق للتعبير عن ذكر وأنثى بالنسبة للبشر.
“عندما تكون المنهجية التحليلية جيدة، تتيح فائدة كبيرة إضافية للعديد من مجالات الأعمال، خصوصًا عندما يواجه كل من المدير والعميل صعوبات في التعامل مع البيانات”
اندريه داجستينو، عالم بيانات
طرق لتنظيف البيانات
الحذف: نستطيع حذف أعمدة غير مهمة في عملية التحليل. ودالة الحذف .drop() لحذف القيم، ولحذف الأعمدة باختصار نستطيع تجاهلها بأن ننشئ إطار بياني جديد لا يحتوي على العمود غير اللازم.
الاستبدال: نستطيع استبدال القيم غير المعرفة أو الفارغة باستخدام دالة ()replace. ويوضح المثال التالي استبدال القيم الفارغة في متغير chol إلى الوسيط للقيم في ذات المتغير (العمود).
رابعًا: دراسة العلاقات والروابط بين المتغيرات
دراسة العلاقات هي مرحلة تحليل وتفكير إبداعي من المحلل ذاته. وهي مرحلة مهمة جدًا في عمليى التحليل الاستكشافي. أفضل طريقة لذلك هي أدوات ودوال Plot وهي أدوات توفر طريقة واضحة وبسيطة لعرض البيانات على شكل رسوم بيانية ملونة تتيح للقارئ فهم العلاقات بصورة أسرع وأوضح وأدق.
وفي هذه المرحلة تظهر نتائج التحليل الاستكشافي ويكون انتقاء طريقة العرض تبعًا لمدى فائدتها لدى العميل، كلما كانت إبداعية ومبسطة أكثر كلما كانت مفيدة أكثر.
لاكتشاف العلاقات يمكننا البدء بمكتبات Seaborn and pairplot
رسم Pairplot
والتي توفر عن طريق مكتبة seaborn وتعني بلوت مزدوج أو رسم مدمج برسمين. مثل الرسم التالي والذي يوضح نوع الانتشار لقيمتي الهدف (Target) 0 و1 وأيضًا يوضح الرسم النقطي (scatter) بنفس الرسم ونفس الأمر.
رسم ScatterPlot
مكتبة Matplotlib توفر عدة رسوم بيانية مثل Scatter Plot كالشكل التالي وهو عبارة عن رسم نقطي بياني يوضح مكان تواجد القيمة تبعا لمتغير x ومتغير y. واللون يعبر عن قيمة متغير الهدف. مثلا، لدينا متغيرين العمر والكليسترول، وتم توضيح المتغيرين مع وجود متغير الهدف ( إذا كان المريض مريض قلب أم لا) فإذا كان اللون أصفر يكون مريض وإذا كان بنفسجي يكون سليم.
وأيضًا يمكننا إضافة متغير رابع يوضح الحجم أو السعة أو الكمية. ويوضح ذلك من خلال حجم النقطة، وذلك لا يناسب مجموعة البيانات التي تم التمثيل عليها سابقًا في هذا المقال، لأن المتغيرات لا تحتوي على نسبة أو معدل يزيد وينقص.
ويوجد أمثلة أخرى مثل histogram plot ويعني رسم بياني يحتوي على أعمدة توضح نسبة شيء ما لكل قيمة من متغير ما لقراءة المزيد في الموقع الرسمي matpltlib.
وتستخدم أدوات عرض EDA حسب نوع البيانات الموجودة لدينا، وتختلف باختلافها.
خامسًا: العصف الذهني
العصف الذهني ( Brainstorming) بعد بناء الفرضيات وإظهار العلاقات بين المتغيرات في مجموعة البيانات. مثلا، نستنتج أنه كلما ارتفعت نسبة الكوليسترول زادت أمراض القلب. وأيضًا كلما زاد العمر ازدادت احتمالية ظهور أمراض القلب. وعلى محلل البيانات أن يسأل نفسه الكثير من الأسئلة في هذه المرحلة من أجل أفضل النتائج. السؤال الصحيح هو الخط الفاصل بين محلل بيانات جيد ومحلل عادي. حتى مع وجود خبرة في أكواد وأدوات الرسوم البيانية، تبقى عديمة الفائدة في حال عدم القدرة على التفكير الإبداعي وإيجاد العلاقات وبناء الفرضيات والعصف الذهني!
سادسًا: مرحلة النتائج
التقارير
بعد الانتهاء من عملية التحليل الاستكشافي للبيانات نوفر نسخة تحليلية لإظهار النسب الإحصائية وجودة البيانات للعميل وإيفائه بالاقتراحات المناسبة.
النمذجة (Modelling)
الآن البيانات تكون جاهزة لمعالجتها قبل تغذيتها للنموذج. ومن هنا يمكنكم قراءة الكود عن بعض النماذج التصنيفية لمجموعة بيانات أمراض القلب. ومن هنا يمكنكم التعلم أكثر عن أنواع الخوارزميات في تعلم الآلة ومن هنا خوارزميات التصنيف.
الملخص
- تعريف مجموعات البيانات وأنواعها وطرق تنظيمها.
- تعريف التحليل الاستكشافي للبيانات وأهميته ومجالاته.
- خطوات منهجية التحليل الاستكشافي.
- البيانات الخام والبيانات المرتبة وطرق تنظيف البيانات من خلال بايثون.
- العصف الذهني ودراسة العلاقات بين المتغيرات وطرقها من خلال بايثون.
المصادر
- مشروع التنبؤ بأمراض القلب https://github.com/Noor161/HeartDiseaseClassi
- أدوات للتحليل الاستكشافي، ميديوم https://medium.com/machine-learning-mastery/4-tools-for-automatic-exploratory-data-analysis-eda-in-python-4d62e87898c5
- كينزلي، التحليل الاستكشافي للبيانات بايثون، ميديوم https://medium.com/towards-data-science/exploratory-data-analysis-in-python-a-step-by-step-process-d0dfa6bf94ee
- متى يتم تحليل EDA? https://www.kaggle.com/questions-and-answers/103089
Author
-
مبرمجة وباحثة في تعلم الآلة. حاصلة على بكالوريوس تقنية معلومات من الجامعة العربية المفتوحة، وماستر علم البيانات والذكاء الاصطناعي من جامعة اسطنبول آيدن. مهتمة بالرؤية الحاسوبية، ومعالجة اللغات الطبيعية، وأتمتة الروبوت.
View all posts