رحلتي مع برنامج علم البيانات
(أكاديمية مسك-يوداسيتي)
بسم الله الرحمن الرحيم
خلال هذه التدوينة سأتحدث عن رحلة الخمسة أشهر التي قضيتها في برنامج علم البيانات (Data Science Nanodegree) مع أكاديمية مسك بالشراكة مع يوداسيتي (Udacity).
بدايةً، الجميل في الالتحاق بالبرنامج مع أكاديمية مسك، أن أكاديمية مسك تتكفل بجزء من مبلغ البرنامج. كذلك فإن محتوى برنامج علم البيانات مع أكاديمية مسك عبارة عن برنامجين منفصلين في منصة يوداسيتي وهما Intro to Machine Learning with PyTorch and Data Science.
كما توفر أكاديمية مسك مرشد أو أكثر لكل برنامج، مهمته الدعم والإرشاد للمشاركين من خلال لقاءات دورية تُقام لمناقشة الدروس و الإرشاد في حال واجهت المشاركين صعوبة في فهم المشاريع المطلوبة.
المتطلبات للالتحاق بالبرنامج
البرنامج يعتمد على معرفة بأساسيات البايثون ومكتباته مثل NumPy, Pandas, matplotlib. ومعرفة بأساسيات تعلم الآلة. والأهم من ذلك القابلية للتعلم الذاتي المستمر.
محتوى البرنامج
ينقسم البرنامج إلى فصلين، الفصل الأول يتعلق بتعلم الآلة وأنواعه والتعلم العميق، أما الفصل الثاني وهو الجزء الأكبر من هذا البرنامج، يتعلق بعلم البيانات. تندرج في كل فصل عدة أقسام، يحتوي القسم على مجموعة من الدروس ومشروع لتطبيق المفاهيم المذكورة فيه. وسأتطرق لكل قسم بالتفصيل:
الفصل الأول
التعلم الموجه Supervised Learning
يتعلق هذا القسم بالمفاهيم الأساسية لتعلم الآلة مثل، Linear Regression, Perceptron Algorithm وبعض خوارزميات تعلم الآلة كـ Support Vector Machine, Naïve Bayes, Decision tree.
وكذلك التعرف على طرق تقييم النماذج كـ Recall, Precision, F-score وغيرها. وآخر موضوع عن أنواع الأخطاء (Errors) المحتمل حدوثها أثناء تدريب النموذج.
المشروع:
الهدف من المشروع هو مساعدة منظمة خيرية في التعرف على الأشخاص المحتملين للتبرع لدعم برامجها التي تُقدم للأشخاص الراغبين في دراسة تعلم الآلة، من خلال تطبيق مجموعة من خوارزميات التعلم الموجه.
التعلم العميق Deep Learning
مقدمة عن Neural Network وطريقة تدريبها وأنواع الأخطاء (Errors). ومقدمة عن مكتبتَي التعلم العميق (Keras, PyTorch) وطريقة تدريب النماذج باستخدامهما.
المشروع:
بناء مُصنِف صور (Image classifier) باستخدام مكتبة PyTorch.
التعلم غير الموجه Unsupervised Learning
يتطرق هذا القسم لمفهوم التجميع (Clustering) وأنواعه. وكذلك يشرح مفهوم تقليص الأبعاد Dimensionally reduction وبعض خوارزمياتها كـ Principal Component Analysis (PCA).
المشروع:
المطلوب في هذا المشروع تحديد شريحة العملاء (Identify costumer segment) المستهدفة لشراء منتجات شركة عن طريق استخدام خوارزميات التعلم غير الموجه Unsupervised learning.
الفصل الثاني
مقدمة في علم البيانات Introduction to data science
تحتوي هذه المقدمة على الخطوات الأساسية لحل العديد من المشاكل الحقيقية في علم البيانات. وبالتحديد إحدى هذه المنهجيات والتي تعرف بـ CRISP-DM Process.
المشروع:
يعتبر هذا المشروع من أبسط وأمتع المشاريع خلال البرنامج. وهو كتابة تدوينة تتبِّع فيها الخطوات المذكورة في الدروس. ولك حرية اختيار نوع البيانات المستخدمة في هذا المشروع. وهنا التدوينة التي شاركتها في هذا المشروع (أتمنى لكم قراءة ممتعة).
هندسة البرمجيات Software Engineering
في هذا الجزء، تتعلم مهارات هندسة البرمجيات التي تحتاجها لتنفذ مشاريع علم البيانات كطريقة كتابة كود نظيف وكتابة توثيق للأكواد (documentation) وعملية الاختبار. ومقدمة عن البرمجة الشيئية (object-oriented programming) وتطوير صفحات الويب باستخدام Flask.
المشروع:
لا يوجد مشروع في هذا القسم ولكن هناك تدريبين غير مطلوبة لإتمام البرنامج. وهي إنشاء حزمة خاصة بك (create your own python package) وتطوير لوحة بيانات (develop data Dashboard).
هندسة البيانات Data Engineering
التعرف على pipelines (وهي مجموعة من العمليات تُنفذ بشكل متسلسل) وبالتحديد ETL (Extract Transform Load) Pipelines, NLP (Natural Language Processing) pipelines, Machine Learning Pipelines.
المشروع:
إنشاء Machine learning pipeline لتصنيف نوع الكوارث بناء على محتوى رسائل البلاغات. ثم ربطه بصفحة ويب لعرض نتائج التصنيف باستخدام Flask.
التصميم التجريبي والتوصيات Experimental Design & Recommendations
يعطي هذا الفصل مقدمة عن التصميم التجريبي وأنظمة التوصيات، كما يشرح اختبار A/B وكيف يمكن استخدامه في عملية التصميم التجريبي.
المشروع:
بناء نظام توصية (Recommendation Engine) لتحليل تفاعلات المستخدمين مع المقالات الموجودة على منصة IBM Watson Studio وتقديم توصيات لمقالات جديدة قد تنال على إعجابه.
التتويج بلقب عالم البيانات Data Scientist Capstone
المرحلة الأخيرة والأجمل في البرنامج...
من المفترض عند وصولك لهذه المرحلة أن تكون ألممت ولو بشكل أساسي بالمفاهيم والقواعد لعلم البيانات. والمطلوب منك بناء مشروع يهدف إلى حل مشكلة حقيقية وتطبيق التقنيات التي تعلمتها في هذا البرنامج أو استخدام تقنيات جديدة. ولإتمام هذه المهام، كان هناك خياران إما الاختيار من بعض المقترحات الموجودة لمشاكل حقيقية أو اختيار موضوع مشروعك الخاص.
ولإني مهتمة بمجال معالجة اللغة الطبيعية، فقد وقع اختياري على البدء بمشروعي الخاص وقبول التحدي. قمت ببناء نموذج تعلم عميق يقوم بالتنبؤ بعلامة الترقيم المفقودة في النصوص العربية. بقدر الصعوبة التي واجهتها ولكن كانت المتعة مصاحبة لكل تفاصيل المشروع. ومع ذلك فقد رُفِض المشروع مرتين و الحمد لله قُبِل في الثالثة =). وهنا تدوينة المشروع لمن يحب قراءتها.
المشاريع المطلوبة تحتاج إلى وقت طويل نوعًا ما لإتمامها. مع أن مدة البرنامج طويلة ولكنه مفيد ويغطي الكثير من مواضيع علم البيانات بالأخص الجانب التطبيقي.
أتمنى يكون ملخص التجربة مفيد لكم ✨