بايثون-31: تحليل البيانات بلغة بايثون المشروع الاول-4


السلام عليكم ورحمة الله وبركاته

وصلنا معكم الى المرحلة الاخيرة من مراحل تحليل البيانات والتي تتمثل في بناء نموذج التنبؤ (building a predictive model) بلغة بايثون بعد ان قمنا بتهيأة البيانات في الدروس السابقة.

المكتبة الاكثر استخداماً في بناء نماذج التخمين او التنبوء هي مكتبة (skicit-learn) او ما تسمى (sklearn) والتي يمكن الاطلاع على تفاصيلها من الرابط التالي

انقر هنا لزيارة رابط شرح مكتبة (sklearn)

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

1

وكما نرى هنا فأن كل الحقول مليئة لأن الايعاز اعلاه يعرض عدد الحقول الفارغة لكل متغير وهي في هذه الحالة كلها اصفار.

من الامور المهمة التي يجب ملاحظتها ان هذه المكتبة تتعامل مع الجداول الرقمية فقط وبالتالي يجب تحويل اي بيانات غير رقمية (categorical data) الى بيانات رقمية وذلك بأستخدام الكود التالي:

2

نلاحظ هنا ان كل الحقول التي قمنا بمعالجتها قد تحول نوعها البياني الى قيم رقمية (int64, float64).

الان نقوم بأستيراد المكتبات الخاصة بالتحليل والتصنيف والتي تقوم بقبول الجدول الخاص ببيانات التدريب (training data) وتستخرج لنا نموذج التخمين مع حساب الدقة والتدقيق المتقاطع (cross validation).

ملاحظة: في هذا المشروع سنقوم بأستيراد وشرح امثلة بسيطة عن خوارزميات التصنيف وتعليم الماكنة ولمعرفة تفاصيل اكثر عن بقية الاصناف يمكن زيارة الرابط التالي

نقر هنا).

الان نقوم بأنشاء دالة التصنيف (وهي ثابتة لأغلب المشاريع) والذي يتغير بأستمرار هو فقط خوارزمية التصنيف وكما سنرى بعد قليل.

3

الكود اعلاه يمثل (function) عامة مهمتها القيام بتطبيق خوارزميات التصنيف على بيانات التدريب (training data) ثم انتاج نموذج التخمين لتطبيقه في المستقبل على بيانات الاختبار (testing data).

والان لنبدأ بأول خوارزمية تصنيف:

تحليل الانحدار اللوجستي (Logistic Regression):

الان سنبدأ بأنشاء اول نموذج تحليل انحدار لوجستي:

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

وبدلاً من ادخال كل البيانات الى النموذج نستطيع القيام بعدة تخمينات مدروسة لمعرفة اي البيانات اكثر تأثيراً في تطبيقنا:

نحن لدينا جدول يبين بيانات العملاء الذين قاموا بأخذ قروض من مصرف او شركة ما ونعرف (في بيانات التدريب) كم منهم قام بأرجاع القرض بدون مشاكل وكم منهم لم يقم بذلك ولأننا نريد ان نجد علاقة (نموذج) يربط بين معلومات المقترضين وبين احتمالية ارجاع القروض في المستقبل فمن الطبيعي ان نربط بين:

  • فرصة ارجاع القرض تكون اكبر بالنسبة للمتقدمين الذين لديهم تاريخ رصيد (credit history) وهذا ما لاحظناه في تحليلنا السابق.

  • احتمالية ارجاع القرض تكون اكبر ايضاَ للمقترضين الذين يمتلكون شخص اخر معهم في القرض (co-applicant) ممن يعيشون معهم ولديهم دخل ثابت ايضاً.

  • احتمالية ارجاع القرض تزيد ايضاً كلما كانت نسبة التعليم اعلى (تم استنتاج ذلك في الدروس السابقة).

  • طلب الاقتراض من قبل سكان المدن التي تشهد نمو اقتصادي اضمن من المقترضين في الاماكن الاقل نمواً اقتصاديا (الريف مثلاً).

والان لنقم بأستدعاء الدالة اعلاه لنموذج التحليل اللوجستي وكما في الكود ادناه:

4

قمنا بأدخال متغير واحد فقط لبناء النموذج وهو حالة تاريخ الرصيد (credit history) واما النتيجة التي نريد الوصول لها فهي المتغير الذي يمثل حالة القرض (تم ارجاعه او لا) والتي تسمي في حالتها هذه (Loan_Status).

ونرى ان الدقة (accuracy) اكثر من 80% بقليل والتي تمت بتقنية التدقيق المتقاطع فما هي هذه التقنية؟

Cross Validation التدقيق المتقاطع

النموذج بشكل عام يحتاج ان يرسم استنتاجات من بيانات معينة (training) ويطبقها على بيانات اخرى (testing) ثم يختبر مقدار صحة النتائج وهنا لأننا قمنا بأدخال بيانات التدريب فقط (training) فتقنية التدقيق المتقاطع تقوم بتجزئة البيانات الخاصة بالتدريب الى عدة اجزاء متساوية (تجزئة عشوائية) وهنا في حالتنا اخبرنا النموذج بتجزئة البيانات الى 5 مجاميع متساوية (من الكود الخاص بالدالة العامة اعلاه). والذي حصل هنا ان النموذج قام بتجزئة البيانات الى 5 اجزاء متساوية ثم اخذ واحدة منها وبنى عليه استنتاجه معتبراً اياها هي بيانات التدريب (training data) ثم قام بتطبيق استنتاجه على المجاميع الاربعة المتبقية بصفتها بيانات اختبار (testing data) ثم قام بأختبار دقة الاستنتاج وهكذا اعاد العملية 5 مرات وفي كل مرة يأخذ احد الاخماس المختلفة ويعيد العملية.

يمكننا اعادة العملية لبيانات اخرى (من ضمن جدول بيانات التدريب) وكما في المثال التالي:

5

ونرى ان الدقة نفسها هنا (وقد لا تكون نفسها لأمثلة اخرى).

نموذج شجرة القرار (Decision Tree Model) 

وهي طريقة تحليل وتصنيف اخرى توفر عادة دقة اكبر من الطريقة السابقة ويمكن استدعائها وتطبيقها كما في الامثلة التالية:

6

نلاحظ ان الدقة في الحالة الاولى كانت مساوية للطريقة الاولى رغم كوننا استخدمنا متغيرات مختلفة ولكن في الحالة الثانية زادت الدقة الى ما يقارب 90% وهو شيء جيد طبعاً.

نموذج الغابة العشوائية (Random Forest Model):

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

7

ونرى هنا اننا وصلنا الى دقة 100% وهو افضل ما يمكن ولكنه مخيف نوعاً ما فهو دلالة على وجود حالة (overfitting) وللتخلص من ذلك يمكننا اتباع الطرق التالية:

1- تقليل عدد المتغيرات الداخلة الى هذا النموذج.

2- التلاعب بمعاملات النموذج.

والان دعونا نقوم بكل منهما:

8

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

والان لنقم بأخذ اهم 4 متغيرات (ذات اعلى اوزان ) ونتلاعب بمعاملات النموذج وكما في ادناه:

9

نلاحظ هنا ان الدقة انخفظت الى 82% فقط ولكن الدقة الناتجة من التدقيق المتقاطع اصبحت افضل من السابق وهذه علامة جيدة على التخلص من ال (overfitting) او تقليل تأثيره على الاقل.

بعد معرفة كل هذه الامور تبقى الخطوة الاخيرة وهي تطبيق هذا النموذج على بيانات الاختبار (testing data) وهو شيء سهل جداً فقط نقوم بأستبدال بيانات التدريب ببيانات الاختبار في الامثلة السابقة مع ملاحظة انها تحتاج الى التهيئة والتنظيف ايضاً قبل ادخالها الى نماذج التصنيف والتحليل.

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

في حالة وجود اسئلة او استفسارات حول الدروس المشروحة فيمكنكم دائماً ترك الاسئلة في التعليقات في المدونة هنا ولا ننسى التذكير بالمصدر الاصلي لهذه الدروس الخاصة بعلم البيانات وهو موقع رائع انصح كل المهتمين بهذا المجال بمتابعته والاستفادة منه وهو في الرابط التالي (المصدر الاصلي باللغة الانكليزية).

تحياتي للجميع

اخوكم مصطفى صادق لطيف

 

10 comments

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

    إعجاب

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

شعار وردبرس.كوم

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   /  تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.