ML 101
M3 · تجربة
تجربة عملية
قِس عدم نقاء العقدة، ثم اقسِمها

قيِّم عقدةً بطريقتين، وزِن انقسامًا، ثم راقب البحث الجشِع يفشل في المِنصّة، وتوقَّع — قبل أن تقرأ من لوحتَي عدم النقاء والبحث — Gini وentropy لعقدة محدّدة، وinformation gain لانقسام نظيف، ولماذا تعجِز شجرةٌ عمقها واحد عن فصل XOR إطلاقًا.

مقياسان لعدم النقاء
G = 1 - \sum_k p_k^2 \qquad H = -\sum_k p_k \log_2 p_k

تنمو شجرة القرار بأن تسأل، عند كل عقدة، أيُّ قطعٍ ثنائيٍّ واحد (نعم/لا) يُنقّي الجانبين أكثر. ولتفعل ذلك تحتاج رقمًا لمدى اختلاط العقدة: Gini وentropy مقياسان لعدم النقاء، كلاهما صفرٌ على العقدة النقية وأكبرُ ما يكون على عقدة 50/50. وinformation gain لانقسامٍ هو مقدار هبوط عدم النقاء الذي يشتريه، موزونًا بحجم الأبناء — ولأنّ البحث لا يُبقي إلّا أفضل قطعٍ واحد في كل خطوة فهو جشِع، وهذا بالضبط سبب هزيمة XOR له.

1 / 8
ML 101
M3 · تجربة
جهّز التجربة
لوحتان

افتح المِنصّة. الخطوات الثلاث الأولى حساباتٌ يدوية تتحقّق منها في لوحتَي عدم النقاء والبحث — اترك مجموعة البيانات على blobs لها. أمّا الخطوة الأخيرة فتضبط مجموعة البيانات على XOR والعمق على 1 لترى البحث الجشِع يعود خاوي الوفاض. استخدم معيار Gini طوال الوقت.

اضبط هذه القيم
Criterion -> Gini Dataset -> blobs (XOR for the last step) Max depth -> 4 Min samples -> 2 Seed -> 7

تُظهر لوحة عدم النقاء G = 1 - ∑ p_k² وH = -∑ p_k log₂ p_k لكل عقدة؛ وتَرسم لوحة البحث information gain لكل قطعٍ مُرشَّح وتُعلِّم القمّة التي تختارها الشجرة.

2 / 8
ML 101
M3 · تجربة
الخطوة 1 من 4
Gini لعقدة 3 إلى 1

خذ عقدةً تضمّ 3 نقاط من فئة و1 من الأخرى. عدم نقاء Gini هو 1 - ∑ p_k²، وهنا p = (3/4, 1/4). توقَّع Gini، ثم تأكّد منه في لوحة عدم النقاء.

المتوقّع

Gini = 1 - ((3/4)² + (1/4)²) = 1 - (9/16 + 1/16) = 0.375. وهي دون سقف 0.5 لعقدة 50/50، لأنّ عقدة 3:1 تميل أصلًا نحو فئة واحدة.

3 / 8
ML 101
M3 · تجربة
الخطوة 2 من 4
entropy للعقدة نفسها

الآن قيِّم عقدة 3 إلى 1 نفسها بـentropy، -∑ p_k log₂ p_k — المقياس الآخر لعدم النقاء، بالبِت. بدِّل المعيار إلى entropy واقرأ لوحة عدم النقاء. توقَّع القيمة أولًا، ثم اقرأها.

المتوقّع

entropy = -(3/4)log₂(3/4) - (1/4)log₂(1/4) = 0.8113 بِت. لاحِظ أنّها أعلى بكثير من قيمة Gini البالغة 0.375: فـentropy أحدُّ قمّةً، ولذا يتّفق المقياسان على أيّ انقسام هو الأفضل أكثرَ بكثير من اتّفاقهما على رقم عدم النقاء نفسه.

4 / 8
ML 101
M3 · تجربة
الخطوة 3 من 4
information gain لانقسام نظيف

تأمّل عقدةً أبًا 50/50 [4, 4] يقسمها قطعٌ واحد قسمةً تامّة إلى ابنَين نقيَّين، [4, 0] و[0, 4]. الكسب هو عدم نقاء الأب ناقص عدم نقاء الأبناء موزونًا بالحجم. بـGini يكون الأب 0.5 وكلا الابنَين 0. توقَّع gain، ثم اقرأ قمّة لوحة البحث.

المتوقّع

gain = 0.5 - (1/2)(0) - (1/2)(0) = 0.5 — يُزال كامل عدم نقاء الأب، وهو أكبر كسبٍ ممكن هنا. هذه هي القمّة التي يتسلّقها البحث الجشِع والقطع الذي يُبقيه.

5 / 8
ML 101
M3 · تجربة
الخطوة 4 من 4
فخّ الجشع: XOR عند العمق 1

اضبط مجموعة البيانات على XOR وMax depth على 1، وراقب لوحة البحث. في XOR ذي الأركان الأربعة، تتشارك الأركان المتقابلة الفئة نفسها، فلا يفصل أيُّ قطعٍ محاذٍ للمحاور شيئًا — وكسبُ كل مُرشَّح يساوي 0 عمليًّا. توقَّع دقة تدريب شجرةٍ عمقها 1، ثم اقرأها.

المتوقّع

لا تُجري الشجرة أيّ انقسام (ورقةٌ واحدة) وتتنبّأ بالأغلبية، فتكون دقة التدريب 0.5 بالضبط — أي خط أساس رمي العملة. البحث الجشِع، إذ ينظر خطوةً واحدة فقط إلى الأمام، لا يرى أبدًا أنّ قطعَين اثنين يحلّانها. ذلك هو فخّ الجشع؛ ومزيدٌ من العمق على XOR أنعم هو ما يُفلِت منه.

6 / 8
ML 101
M3 · تجربة
دورك الآن
افتح المِنصّة

كل ما سبق ينتظرك في المِنصّة. أنمِ الشجرة مستوًى تلو الآخر وراقب Gini وentropy لكل عقدة يهبطان، ومرِّر لوحة البحث لترى أيّ قطعٍ يفوز بأكبر كسب، وبدِّل مجموعات البيانات لتجد أين يتعثّر البحث الجشِع المحاذي للمحاور.

7 / 8
ML 101
M3 · تجربة
خلاصة
ما أنجزتَه
  • قيَّمتَ عقدة 3 إلى 1 بـGini = 0.375
  • قيَّمتَ العقدة نفسها بـentropy = 0.8113 بِت — أحدُّ قمّةً من Gini
  • وجدتَ information gain = 0.5 لانقسام نظيف، إذ يُزال كامل عدم نقاء الأب
  • رأيتَ شجرةً عمقها 1 عالقةً عند دقة 0.5 على XOR — فخّ الجشع
  • كل قيمة توقّعتها هي حساب عدم النقاء والكسب الخاص بالعرض نفسه، لا صورة تقريبية
8 / 8