#decision-trees — التعلّم المُشرَف
شجرة تنحت المستوى إلى مستطيلات: جيني، الإنتروبيا، العمق، التقليم — وفرط التعلّم الذي تراه بأمّ عينيك.
ما ستُجرّبه
- مرحبًا بك في #decision-trees. على اليسار، المستوى [-2, 2]²: 120 نقطة تدريب (زرقاء ووردية) و60 نقطة تحقّق (أصغر وشبه شفّافة). على اليمين، شجرة اختُزلت إلى جذر وورقتين: طرحت سؤالًا واحدًا —
x ≤ 0.88 ?— وقُطع المستوى إلى مستطيلَين، أحدهما شبه نقيّ والآخر لا يزال مختلطًا. إنّها لعبة العشرين سؤالًا مطبَّقة على سحابة نقاط: اختر متغيّرًا وعتبة، قسِّم، وأعِد على كلّ نصف. تصوِّت كلّ ورقة لفئتها الأغلبيّة، وتُخبرك شفافيّة مستطيلها عن مدى نقائها. - أضِف مستوى:
/split. كلّ ورقة لا تزال غير نقيّة تطرح الآن سؤالها الخاصّ بدورها — سؤالان متسلسلان، أربعة مستطيلات على الأكثر. - مستوى إضافيّ:
/split. عند العمق 3، يمكن للشجرة أن تنمو حتّى ثماني أوراق، لكنّها تتوقّف من تلقاء نفسها حيث تكون الورقة نقيّة أصلًا: لا مكسب يُرتجى. - كيف تختار الشجرة سؤالها؟ تُجرِّب كلّ عتبة ممكنة على x وعلى y وتحتفظ بالتي تُخفِّض عدم النقاء (impurity) في النصفَين أكثر ما يمكن. يوجد مقياسان: مؤشّر جيني (Gini) (الافتراضيّ) والإنتروبيا (entropy). قارِن:
/criterion entropy. - دع الشجرة الآن تنمو كما تشاء:
/depth 8. ستواصل التقسيم حتّى تصير كلّ ورقة نقيّة — ولو تطلَّب ذلك عزل نقطة واحدة. - العلاج التقليديّ: امنَع الأوراق الصغيرة جدًّا.
/min-leaf 8يشترط ثماني نقاط على الأقلّ في كلّ ورقة — نوع من التقليم (pruning) الوقائيّ يُقرَّر قبل التقسيم. - أرضيّة جديدة:
/dataset checkerboard. أربعة أرباع متناوبة، XOR موزَّع: لا خطّ مستقيم يفصل بين هاتين الفئتَين، والانحدار اللوجستيّ يُخفق تمامًا هنا. - القوّة الأخيرة: يمكن قراءة الشجرة. اطرح عليها سؤالًا:
/predict 1 -1. تظهر نقطة الاستعلام بالأصفر على المستوى ويُضاء مسارها من الجذر إلى الورقة في الشجرة، اختبارًا تلو الآخر. - دورك:
/pruneللتراجع مستوى واحدًا،/depth 2لرؤية رقعة الشطرنج تُحَلّ بسؤالَين،/noise 0.4ثمّ/depth 8لفرط تعلُّم مذهل،/seed 7لسحب آخر (الشجرة الجشعة غير مستقرّة — وهذا ما تستغلّه الغابات العشوائيّة (random forests) بحساب متوسّط مئات الأشجار)،/dataset blobsلتراقب السلَّم يقارب قطرًا،/resetللعودة إلى البداية. التالي: #knn الذي يقرِّر دون بناء أيّ نموذج، ثمّ #overfitting لملاقاة الشرك نفسه مع شبكة عصبيّة.
أوامر القناة
/depth <1..8>— يضبط الحدّ الأقصى لعمق الشجرة؛ يُعاد تدريب الشجرة./split— يضيف مستوى واحدًا: العمق الأقصى + 1./prune— يحذف مستوى واحدًا: العمق الأقصى − 1./criterion <gini|entropy>— يختار مقياس عدم النقاء: مؤشّر جيني أو الإنتروبيا./min-leaf <1..20>— الحدّ الأدنى لعدد نقاط التدريب في كلّ ورقة (تقليم مسبق)./dataset <blobs|moons|checkerboard>— يبدّل مجموعة البيانات (يُعاد توليد التدريب والتحقّق)./noise <0..0.5>— تشتُّت النقاط وحصّة الوسوم المقلوبة (يُعاد توليد البيانات)./seed <1..99>— سحب عشوائيّ آخر للنقاط (بالتوزيع نفسه)./predict <x=-2..2> <y=-2..2>— يضع نقطة استعلام ويُبرز مسارها من الجذر إلى الورقة./reset— يعيد الحالة الابتدائيّة: الهلالان، العمق 1، جيني، بلا استعلام.
المسرد
- شجرة القرار
- نموذج يصنّف نقطة بأن يطرح عليها سلسلة من أسئلة
x ≤ عتبة ?، من الجذر إلى ورقة. كلّ سؤال يقسم الفضاء إلى نصفَين: الشجرة تنحت المستوى إلى مستطيلات. - عقدة / ورقة
- العقدة الداخليّة تحمل اختبارًا (متغيّر + عتبة) وطفلَين: نعم إلى اليسار، لا إلى اليمين. الورقة لا تختبر شيئًا: تتنبّأ بالفئة الأغلبيّة لنقاط التدريب التي تحتويها.
- عدم نقاء جيني (Gini)
- يقيس اختلاط الفئات في عقدة:
1 − Σ p². يساوي 0 لعقدة نقيّة و0.5 لخليط 50/50 مع فئتَين. هو المعيار الافتراضيّ في CART وscikit-learn. - الإنتروبيا (entropy)
- مقياس آخر للاختلاط:
−Σ p·log₂ p، بالبِتّات. يساوي 0 لعقدة نقيّة و1 بت لخليط 50/50. عمليًّا، ينتج جيني والإنتروبيا شجرتَين متشابهتَين جدًّا. - مكسب المعلومة (information gain)
- انخفاض عدم النقاء عند التقسيم: عدم نقاء العقدة الأمّ ناقص المتوسّط المرجَّح لعدم نقاء الطفلَين. عند كلّ عقدة، تُجرِّب الخوارزميّة الجشعة كلّ عتبة وتحتفظ بالتي تحقّق أكبر مكسب.
- العمق (depth)
- العدد الأقصى للأسئلة بين الجذر وورقة. كلّما تعمَّقت الشجرة، دقَّت في التقسيم — وزاد احتمال أن تحفظ الضوضاء. هو المعامل الأهمّ في شجرة.
- التقليم (pruning)
- تبسيط شجرة كي تُعمِّم بشكل أفضل: إمّا بمنعها من النموّ (عمق أقصى، حدّ أدنى للنقاط في كلّ ورقة — تقليم مسبق)، وإمّا بحذف فروع لاحقًا لا تُفيد التحقّق (تقليم لاحق).
- فرط التعلّم (overfitting)
- حين يلتصق النموذج بنقاط التدريب بشدّة فيحفظ الاستثناءات: دقّة التدريب قرب 100%، والتحقّق ثابت أو ينخفض. على شجرة، يظهر جليًّا: مستطيلات صغيرة تلتفّ حول نقاط معزولة.
- الغابة العشوائيّة (random forest)
- تجميع لمئات الأشجار، كلّ منها مدرَّبة على إعادة تعيين للبيانات ومجموعة فرعيّة من المتغيّرات، ويُؤخذ متوسّط أصواتها. تُصلح العيب الرئيس لشجرة واحدة: عدم استقرارها.
- القابلية للتفسير (interpretability)
- قدرة النموذج على تفسير تنبّؤاته بلغة إنسانيّة. الشجرة قابلة للتفسير بالبناء: مسار الجذر ← الورقة هو قائمة قواعد يمكن قراءتها («y ≤ −0.3 وx > 0.9 إذًا وردية»).
قنوات أخرى في التعلّم المُشرَف
- #live-training — ستّ خوارزميات تتعلّم أمام عينيك كفيديو: REC، عدّاد زمني، تعليقات توضيحية، مؤشّرات مباشرة. المشاهدة مجانية؛ تعديل النموذج بريميوم.
- #linear-regression — مطابقة خطّ: المربّعات الصغرى، البواقي، MSE، R² والنزول التدرّجي — اللبنة الأولى لكلّ نموذج تعلّم مُوجَّه.
- #logistic-regression — التصنيف إلى فئتين: السيغمويد، حدّ القرار، العتبة والخسارة اللوغاريتمية — ولماذا لا يكفي الخطّ دائمًا.
- #decision-trees — شجرة تنحت المستوى إلى مستطيلات: جيني، الإنتروبيا، العمق، التقليم — وفرط التعلّم الذي تراه بأمّ عينيك.
- #knn — أقرب k جار: صنِّف بالشبه، اختر k، غيّر المسافة — وشاهد الحدّ ينعم أو يتشظّى.
- #svm-margins — آلات متّجهات الدعم: أوسع هامش ممكن، المعامل C، ونواة RBF التي تُقوِّس الحدّ.
- #classification-metrics — الدقّة، الاستدعائيّة، F1، مصفوفة الالتباس، ROC وAUC: قراءة مصنِّف بأمانة، خاصّة عند اختلال توازن الفئات.