انتقل إلى المحتوى الرئيسي

الدرس 4 — scikit-learn

إذا كانت بياناتك في جدول، فهذه هي المكتبة التي تستخدمها. scikit-learn يغطّي تعلّم الآلة الكلاسيكي كلّه — الانحدار، التصنيف، التجميع، تقليل الأبعاد، التقييم — بواجهة واحدة متماسكة إلى حدّ لافت.

الفكرة الواحدة: واجهة موحّدة

قوّة المكتبة ليست في خوارزمية بعينها، بل في أنّ كلّ الخوارزميات تتصرّف بالطريقة نفسها:

  • fit(X, y) — تدرّب النموذج على البيانات والأجوبة.
  • predict(X) — تعيد تنبّؤات على بيانات جديدة.
  • predict_proba(X) — تعيد احتمالات، حين يكون ذلك ذا معنى.
  • score(X, y) — تعطي مقياساً سريعاً للأداء.

النتيجة العملية مهمّة: تبديل شجرة قرار بانحدار لوجستي أو بغابة عشوائية يقتضي تغيير سطر واحد. وهذا يجعل المقارنة بين النماذج رخيصة، وهي في الواقع الطريقة السليمة للعمل: جرّب خمسة نماذج بسيطة قبل أن تستثمر في نموذج واحد معقّد.

العائلةأمثلةاستعمالها النمطي
خطّيةالانحدار الخطّي، اللوجستيخطّ أساس (baseline)، قابلية تفسير عالية
أشجارشجرة قرار، غابة عشوائية، Gradient Boostingبيانات جدولية، غالباً أفضل نتيجة
قائمة على المسافةk-NN، SVMمجموعات صغيرة، حدود غير خطّية
تجميعk-means، DBSCANتقسيم بلا وسوم
تقليل أبعادPCA، t-SNE، UMAPتصوير بياني، ضغط السمات
ابدأ دائماً بخطّ أساس

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

خطّ المعالجة (pipeline): أهمّ أداة في المكتبة

المعالجة قبل النموذج ضرورية: تعويض القيم الناقصة، تقييس الأرقام، ترميز الفئات. والمشكلة أنّ كلّ خطوة من هذه تتعلّم شيئاً من البيانات (المتوسّط، الانحراف، قائمة الفئات).

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

خطّ المعالجة يحلّ المشكلة بنيوياً: تسلسل خطوات المعالجة مع النموذج في كائن واحد. عند fit، تتعلّم كلّ خطوة من بيانات التدريب فقط. وعند predict، تُطبَّق القيم المتعلَّمة نفسها على البيانات الجديدة. لا مكان للتسريب.

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

التقييم: أدوات المكتبة التي يجب استخدامها

المكتبة تقدّم ما يمنعك من الاطمئنان الزائف:

  • التقسيم: تقسيم عشوائي إلى تدريب واختبار، مع خيار الحفاظ على نسب الفئات.
  • التحقّق المتقاطع (cross-validation): يقسّم البيانات إلى عدّة أجزاء ويكرّر التدريب والتقييم، فيعطي تقديراً أكثر استقراراً من تقسيم واحد. لا غنى عنه على المجموعات الصغيرة.
  • البحث عن المعاملات الفائقة: بحث شبكي أو عشوائي على إعدادات النموذج، بالتحقّق المتقاطع، بلا مساس بمجموعة الاختبار.
  • المقاييس: الدقّة (accuracy)، والإحكام (precision)، والاستدعاء (recall)، وF1، وAUC، ومصفوفة الالتباس. والدرس عن تقييم النماذج يشرح متى يكون كلٌّ منها مضلِّلاً.
الدقّة وحدها تخدع

في مجموعة يكون 1 % منها احتيالاً، نموذج يقول «ليس احتيالاً» دائماً يحقّق دقّة 99 % وقيمة صفر. على البيانات غير المتوازنة، انظر إلى الإحكام والاستدعاء ومصفوفة الالتباس، لا إلى الدقّة.

أين تنتهي حدود المكتبة

scikit-learn ممتاز في مجاله، وليس الأداة الصحيحة لكلّ شيء.

  • لا تعلّم عميقاً: لا شبكات تلافيفية، ولا محوّلات، ولا تدريب على معالج رسومي. للصور والنصوص والصوت، انتقل إلى PyTorch.
  • الذاكرة أوّلاً: التصميم يفترض أنّ البيانات تُحمَّل في الذاكرة. للبيانات الأكبر من ذلك تحتاج إلى أدوات أخرى.
  • التعزيز التدرّجي أقوى في مكتبات مخصّصة: XGBoost وLightGBM وCatBoost أسرع وأدقّ عادةً من التنفيذ الداخلي، وتتبع الواجهة نفسها فالانتقال سهل.

هذه الحدود ليست عيوباً. المكتبة تفعل شيئاً واحداً — تعلّم الآلة الكلاسيكي على بيانات تسع في الذاكرة — وتفعله أفضل من أيّ أداة أخرى.

لماذا تبقى الخيار الأول على الجداول

الأمر يستحقّ التكرار لأنّ الضجيج يدفع في الاتّجاه المعاكس: على البيانات الجدولية، مجموعة أشجار مدرَّبة في ثوانٍ تتغلّب عادةً على شبكة عصبية دُرِّبت في ساعات، وتعطيك قائمة بأهمّية السمات تستطيع عرضها على مراجع. ابدأ هنا دائماً، وانتقل إلى التعلّم العميق حين تثبت الحاجة، لا قبل ذلك.


في ثلاث جمل

scikit-learn يوحّد كلّ خوارزميات تعلّم الآلة الكلاسيكي بواجهة fit وpredict، فتصبح المقارنة بين النماذج رخيصة وتُصبح البداية بخطّ أساس بسيطة. وخطّ المعالجة يمنع تسريب البيانات بنيوياً ويشحن المعالجة مع النموذج في كائن واحد. أمّا حدوده فواضحة: لا تعلّم عميقاً ولا بيانات أكبر من الذاكرة، وهذا لا يمنعه من أن يكون الخيار الأول على الجداول.


التاليالدرس 5: الأُطر والبيئات ←