هل سبق أن قمت بالتعامل مع البيانات ووجدت بعضها مفقوداً؟
هل أصابتك الحيرة لاختيار الطريقة الأمثل للتعامل مع المشكلة؟
إن تحسين جودة البيانات ليست خطوة تكميلية في علم البيانات، بل تعد أساسية. البيانات المفقودة هي واحدة من أكثر المشاكل شيوعًا التي تواجه جودة البيانات. هناك العديد من الطرق والأساليب التي يتم استخدامها للتعامل مع البيانات المفقودة، ومن الصعب تقديم حل عام، حيث طريقة الحل المقترحة تعتمد على نوعية المشكلة. سيتم التطرق في هذا المقال إلى المحاور التالية:
- ماذا نعني بالبيانات المفقودة؟
- الأساليب المستخدمة للتعامل مع البيانات المفقودة
- مثال تطبيقي باستخدام لغة بايثون
ماذا نعني بالبيانات المفقودة (Missing Data)؟
هي القيم المفقودة من متغير واحد او أكثر في مجموعة البيانات، والتي تحدث -غالباً- نتيجة جمع البيانات بطريقة غير صحيحة أو أخطاء عند إدخال البيانات. مما يؤثر سلباً على الخطوات التالية في المشروع والذي ويؤدي في النهاية إلى بناء استنتاجات غير صحيحة. تندرج خطوة التعامل مع البيانات المفقودة تحت الخطوة الثالثة في دورة حياة علم البيانات وهي تنظيف البيانات، كما تم ايضاحها في المقال السابق (علم البيانات وتحليل البيانات. ما هو الفرق بينهما؟).
بدايةً قبل الشروع بتطبيق الحلول الممكنة للبيانات المفقودة، يجب عليك الإجابة على سؤال: هل هذه القيم مفقودة لأنها لم يتم تسجيلها أو لأنها لم تكن موجودة من الاساس؟
على سبيل المثال، قيمة أقصى ارتفاع للتحليق للمركبة إذا لم تكن سيارة (تصلح فقط للمركبات الطائرة)، فتعتبر القيمة مفقودة لأن ليس لها أساس وليس من المنطقي محاولة تخمين ما قد تكون. من ناحية أخرى، إذا كانت هناك قيمة مفقودة لأنها لم يتم تسجـيلها، فيمكنك محاولة تخمين ما قد يكون بناءً على القيم الأخرى في هذا العمود أو الصف كما سيتم توضيحها في المحور التالي.
ماهي الأساليب المستخدمة للتعامل مع البيانات المفقودة؟
-
حذف الصفوف والأعمدة
تعتبر هذه الطريقة الأكثر شيوعاً للتعامل مع القيم المفقودة. يتم حذف الصف أو العمود في حال كان يحتوي على سبيل المثال نسبة 70-75٪ من القيم المفقودة. ينصح بهذه الطريقة فقط عند وجود عدد ضخم من البيانات، فهي تعتبر خيار غير جيد إذا كانت النسبة المئوية للقيم المفقودة عالية، على سبيل المثال 30٪ مقارنةً بمجموعة البيانات بأكملها.
-
المتوسط الحسابي، المنوال، والوسيط
هذه الطريقة مبنية على النهج الإحصائي للتعامل مع البيانات الرقمية فقط مثل رسوم التسجيل وعمر الشخص. يتم حساب المتوسط أو الوسيط أو المنوال للمتغير الواحد واستبداله بالقيم المفقودة والتي تعتبر تقدير تقريبي يمكن أن يضيف تباينًا إلى مجموعة البيانات. هذه الطريقة تعطي نتائج أفضل مقارنةً بإزالة الصفوف والأعمدة ويفضل استخدامها مع حجم صغير من مجموعة البيانات لمنع التحيز.
-
توقع القيم المفقودة
هذه الطريقة مبنية على خوارزميات تعلم الآلة حيث يتم التنبؤ بالقيم المفقودة. تؤدي هذه الطريقة إلى دقة أفضل في حال لم يكن هناك تباين عالي. على سبيل المثال، يتم استخدام الانحدار الخطي لاستبدال القيم المفقودة في متغير العمر. بالإضافة أنه لا يمكن الالتزام بخوارزمية واحدة، فيجب تجربة خوارزميات مختلفة والتحقق مما يعطي نتائج أفضل بدقة عالية ويُشاد بخوارزمية الغابة العشوائية (Random Forest) لدعمها البيانات الخطية والفئوية. خورازمية أقرب الجيران (k-nn) يمكن استخدامها مع البيانات المفقودة، فهي تعمل على تقدير القيم المفقودة بشكل تلقائي، ولكن مكتبة SciKit Learn لخوارزمية K-Nearest Neighbor في Python لاتدعم هذه الخاصية.
-
البيانات الفئوية
هذه الطريقة مخصصة للتعامل مع البيانات الفئوية فقط مثل المستوى التعليمي وجنس الشخص. يتم استبدال القيم المفقودة بقيمة المنوال (القيمة الأكثر تكرارًا) أو يتم تحديد فئة جديدة وتسميتها (NA) ويتم التعامل معها كفئة مستقلة.
مثال تطبيقي باستخدام لغة بايثون
الأكثر شيوعاً بلغة بايثون يتم التعبير عن البيانات المفقودة بكلمة (NaN) وتعني (Not a Number) أو قيمة خالية (Empty). من ناحية أخرى، بعض الرموز مثل (.., __, — , missing, na, @,??,***, etc. ) يتم استخدامها ايضاً. الصورة التالية توضح الحالات المذكورة:
الخطوات التالية تم تطبيقها على محرر Google Collab، في البداية يتم تحميل مجموعة البيانات Dataset للعمل عليها:
النظر بعمق لمجموعة البيانات لمعرفة هل توجد بيانات مفقودة؟ وكم عددها في حال وجودها.
نلاحظ أنه لا يتم التعرف إلا على الصيغة التالية NaN بينما الصيغ الغير شائعة لم يتم اعتبرها ضمن البيانات المفقودة:
لمعرفة نسبة البيانات المفقودة بالنسبة لجميع البيانات الموجودة:
تطبيق الحل الأول وهو حذف البيانات التي تحتوي على أي قيمة مفقودة ونلاحظ الفقدان الكبير للبيانات. ايضاً بالإمكان بالتحكم بنسبة الحذف عنم طريق thresh:
تطبيق الحل الثاني باستخدام المنهج الاحصائي وذلك بأخذ المتوسط الحسابي لدرجات الطلاب بمادة الفيزياء:
تطبيق الحل الرابع باستخدام المنوال وتطبيقه على المتغير الرابع بمجموعة البيانات:
في النهاية، يتضمن تنظيف البيانات العديد من الخطوات. في هذا المقال تم الحديث فقط عن بعض الطرق لكيفية التعامل مع القيم المفقودة في مجموعة البيانات مع العلم بوجود بعض الطرق الأخرى مثل التعامل مع البيانات الزمنية وغيرها لم يتم التطرق لها في هذا الدرس.
بإمكانك تجربة الأكواد المشروحة في الدرس عن طريق جووجل كولاب من هنا. وتحميل ملف البيانات من هنا.
المراجع
[1]A. Mirzaei, S. Carter, A. Patanwala and C. Schneider, “Missing data in surveys: Key concepts, approaches, and applications”, Research in Social and Administrative Pharmacy, 2021. Available: 10.1016/j.sapharm.2021.03.009.
[2]”Data Cleaning Challenge: Handling missing values”, Kaggle.com, 2021. [Online]. Available: https://www.kaggle.com/rtatman/data-cleaning-challenge-handling-missing-values. [Accessed: 22- Jul- 2021].
[3]W. Aalst and E. Damiani, “Processes Meet Big Data: Connecting Data Science with Process Science”, IEEE Transactions on Services Computing, vol. 8, no. 6, pp. 810-819, 2015. Available: 10.1109/tsc.2015.2493732.
[4]J. Kaiser, “Dealing with Missing Values in Data”, Journal of Systems Integration, pp. 42-51, 2014. Available: 10.20470/jsi.v5i1.178.
[5]L. Chen and G. Guo, “Nearest neighbor classification of categorical data by attributes weighting”, Expert Systems with Applications, vol. 42, no. 6, pp. 3142-3149, 2015. Available: 10.1016/j.eswa.2014.12.002.
شكراً على المشاركة، الشرح واضح وسلس.