أساسيات تعلم الآلة1996مبتدئ10 دقيقة قراءة

تكييس المتنبِّئات

Bagging Predictors

Breiman, L. — Machine Learning

المشكلة

شجرة القرار المفردة نموذج مرن وقادر على التقاط أنماط معقدة، لكنها في الوقت نفسه هشّة للغاية: يكفي أن تحذف بضع عيّنات من بيانات أو تُدخل قليلاً من الضجيج حتى تحصل على شجرة مختلفة تماماً. هذه الهشاشة تعني أن تباين النموذج مرتفع — فبدلاً من أن يتعلّم النمط الحقيقي في البيانات، يحفظ التفاصيل العارضة لمجموعة التدريب التي صادف أنه رآها. حتى عام 1996 لم تكن هناك طريقة منهجية وعامة لترويض هذا دون التضحية بالقدرة التعبيرية التي تجعل الأشجار أداة قوية من الأساس.

الإسهام

التجميع بالتمهيد (التكييس): اسحب B عيّنة تمهيدية من مجموعة التدريب (كل واحدة بالحجم نفسه، مسحوبة مع الإعادة)، ودرِّب متنبِّئاً مستقلاً على كل واحدة، ثم احسب المتوسط في حالة الانحدار أو أجرِ تصويتاً بالأغلبية في حالة . أثبت بريمان رياضياً أن هذا التجميع يُخفّض دائماً عند التعامل مع متنبِّئات غير مستقرة، وحقّق انخفاضاً يتراوح بين 20% و47% في معدلات التصنيف الخاطئ على مجموعات بيانات حقيقية، كما قدّم تقدير خارج الكيس — وهو درجة تحقّق مجانية لا تحتاج إلى مجموعة اختبار منفصلة.

الأثر

التكييس هو الأب الفكري لـالغابات العشوائية (بريمان، 2001) ويمثّل نصف عُدّة إدارة التوازن بين الانحياز والتباين، بينما يمثّل التعزيز النصف الآخر. أثبتت هذه الورقة أن دمج متعلّمين ضعاف وغير مستقرين يمكن أن ينافس أو يتفوق على نماذج مفردة صُمِّمت بعناية فائقة. واليوم كل تجميعة قائمة على الأشجار — الغابة العشوائية وExtra-Trees وحتى الجولات الأولى من التعزيز التدريجي — تعود في مبدأ تخفيض التباين إلى هذه الورقة.

تخيّل أنك تحاول تخمين عدد حبّات الحلوى في جرّة. تخمين شخص واحد قد يكون بعيداً عن الصواب — ربما أخطأ في تقدير عمق الجرّة أو حجم الحبّات. لكن لو سألت خمسين شخصاً وحسبت المتوسط، ستجد أن الأخطاء — بعضها بالزيادة وبعضها بالنقصان — يُلغي بعضها بعضاً، ويقترب المتوسط من الحقيقة بشكل مُدهش.

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

المشكلة: شجرة واحدة وأشكال محتملة لا تُحصى

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

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

افتح في المختبر
اضغط «إعادة سحب» لتوليد عيّنة تمهيدية جديدة ولاحظ كيف يتغير حدّ القرار في كل مرة. هذا بالتحديد هو عدم الاستقرار الذي يستغله التكييس لصالحه.
تستيقظ التجربة عند وصولك…

التمهيد: كيف نصنع مجموعات بيانات متعددة من مجموعة واحدة

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

في المتوسط، تحتوي كل على نحو 63.2% من العيّنات الأصلية الفريدة، والباقي نُسَخ مكررة. أما الـ36.8% التي لم تُسحب في جولة معيّنة فتُسمّى عيّنات — وسنرى لاحقاً أنها تتحول إلى مجموعة تحقّق مجانية دون أي جهد إضافي.

افتح في المختبر
اضغط «اسحب عيّنة» لتوليد عيّنة تمهيدية. الأخضر = عيّنة مختارة (قد تظهر أكثر من مرة). الرمادي = عيّنة مُستبعَدة (خارج الكيس).
تستيقظ التجربة عند وصولك…

الخوارزمية: مهِّد، درِّب، جمِّع

التكييس بسيط وأنيق — ثلاث خطوات تتكرر BB مرة، ثم خطوة تجميع في النهاية:

الخطوة 1 — التمهيد. اسحب عيّنة L(b)L^{(b)} بحجم NN مع الإعادة من مجموعة التدريب LL.

الخطوة 2 — التدريب. ابنِ متنبِّئاً كاملاً غير مقلَّم φ(x,L(b))\varphi(x, L^{(b)}) على كل عيّنة تمهيدية. لا حاجة لأي — نحن نريد لكل شجرة أن تُفرط في التعلّم حتى يبقى انحياز المجموعة منخفضاً.

الخطوة 3 — التجميع. ادمج المتنبِّئات الـBB: بحساب المتوسط في ، أو بتصويت الأغلبية في التصنيف.

φB(x)=1Bb=1Bφ(x,L(b))\varphi_B(x) = \frac{1}{B} \sum_{b=1}^{B} \varphi(x, L^{(b)})
تنبؤ التكييس (الانحدار) — متوسط B متنبِّئ تمهيديتُنشأ كل مجموعة تدريب باستخدام السحب التمهيدي من البيانات الأصلية، ثم يُدرَّب نموذج مستقل على كل عيّنة تمهيدية. وفي مسائل الانحدار يكون التنبؤ النهائي هو المتوسط الحسابي لتنبؤات جميع النماذج. أما في مسائل التصنيف فيُستبدل هذا المتوسط بتصويت الأغلبية بين النماذج.
افتح في المختبر
تابع خط سير التكييس كاملاً: عيّنات تمهيدية ← أشجار مستقلة ← تنبؤ مُجمَّع. أضف مزيداً من الأشجار ولاحظ كيف يستقر تنبؤ المجموعة تدريجياً.
تستيقظ التجربة عند وصولك…

لماذا ينجح التكييس: حساب المتوسط يخفض التباين

الأساس النظري أنيق. لنتأمّل الحالة المثالية: نفترض أن لدينا عدداً لا نهائياً من مجموعات التدريب المستقلة، كلها مسحوبة من التوزيع الحقيقي PP. نُعرِّف المتنبئ المُجمَّع كالتالي:

φA(x,P)=EL[φ(x,L)]\varphi_A(x, P) = E_L[\varphi(x, L)]
المتنبئ المُجمَّع المثالي — القيمة المتوقعة للنموذج على جميع مجموعات التدريب الممكنةلو استطعنا حساب المتوسط على جميع مجموعات التدريب الممكنة المسحوبة من التوزيع الحقيقي، لحصلنا على هذا المتنبئ. التكييس يُقرّب هذا المثال عملياً باستخدام عيّنات تمهيدية.

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

EL[(Yφ(X,L))2]    (YEL[φ(X,L)])2E_L\bigl[(Y - \varphi(X, L))^2\bigr] \;\geq\; \bigl(Y - E_L[\varphi(X, L)]\bigr)^2
متراجحة يِنسِن — التجميع لا يضرّ أبداًيمثّل الطرف الأيسر خطأ التنبؤ المتوقع لنموذج واحد مُدرَّب على مجموعة تدريب عشوائية. ويمثّل الطرف الأيمن خطأ التنبؤ الناتج عن متوسط تنبؤات النماذج في المجموعة. ويساوي الفرق بينهما تماماً تباين تنبؤات النموذج عبر مجموعات التدريب المختلفة. وكلما كان المتعلّم الأساسي أقل استقراراً، ازداد هذا التباين وازدادت الفائدة التي يحققها التكييس.
افتح في المختبر
حرّك شريط «عدم الاستقرار» وراقب كيف يُؤثر التكييس على الانحياز والتباين. عدم استقرار مرتفع = تخفيض كبير في التباين. عدم استقرار منخفض = لا فائدة تُذكر.
تستيقظ التجربة عند وصولك…

تحقّق مجّاني: تقدير خارج الكيس

كل عيّنة تمهيدية تستبعد نحو 36.8% من عيّنات التدريب. هذه العيّنات المُستبعَدة لم ترها تلك الشجرة قطّ، وبالتالي يمكن استخدامها كمجموعة اختبار غير منحازة لها. الفكرة كالتالي: لكل عيّنة تدريب xix_i، نجمع التنبؤات فقط من الأشجار التي لم تشملها عيّنتها التمهيدية، ثم نحسب متوسطها. ما نحصل عليه هو تقدير خطأ خارج الكيس — تقدير شبه غير منحاز لخطأ الاختبار لا يحتاج منفصلة ولا .

تقدير خارج الكيس من أكثر إسهامات التكييس قيمةً من الناحية العملية. يمنحك تقديراً موثوقاً للخطأ «مجاناً» أثناء التدريب، وهذا يجعل التكييس خياراً مناسباً بشكل خاص حين تكون البيانات المتاحة محدودة.

افتح في المختبر
كل صف يمثّل عيّنة تمهيدية. الخلايا المظلّلة تُوضّح العيّنات التي لم تُسحب. تتبّع عيّنة واحدة عبر الصفوف لترى أي الأشجار تُسهم في تنبُّئها خارج الكيس.
تستيقظ التجربة عند وصولك…

النتائج التجريبية: تخفيض في الخطأ بين 20% و47%

اختبر بريمان التكييس مع أشجار التصنيف على سبع مجموعات بيانات، ومع أشجار الانحدار على خمس مجموعات. وكانت النتائج لافتة: التكييس خفّض معدلات التصنيف الخاطئ بنسبة تتراوح بين 20% و47% في جميع معايير التصنيف، وخفّض متوسط مربع الخطأ بنسبة تتراوح بين 22% و46% في الانحدار. أكبر المكاسب جاءت من مجموعات البيانات التي كانت فيها الأشجار المفردة أشد تقلّباً.

افتح في المختبر
نتائج التصنيف الأصلية من ورقة بريمان. بدِّل بين التصنيف والانحدار لترى مقدار تخفيض الخطأ.
تستيقظ التجربة عند وصولك…

ولعل أبلغ تجربة ضابطة كانت تكييس أقرب k جيران — وهو أسلوب مستقر بطبيعته. وكما تتوقع النظرية تماماً، لم تتغير معدلات التصنيف الخاطئ قبل التكييس ولا بعده. السبب ببساطة أن الخوارزمية لم يكن لديها تباين زائد لتخفّضه.

كم عيّنة تمهيدية نحتاج؟

اختبر بريمان التكييس بـ10 و25 و50 و100 شجرة على مجموعة بيانات الموجة المحاكاة. بعشر أشجار فقط تحقّق الجزء الأكبر من التحسّن (خطأ 21.8% مقابل 29.0% للشجرة المفردة). وعند 25 شجرة انخفض الخطأ إلى 19.5%، ولم تُضف 50 أو 100 شجرة أي تحسّن يُذكر بعد ذلك (19.4%).

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

افتح في المختبر
حرّك الشريط لإضافة أشجار وراقب تقارب خطأ المجموعة. لاحظ كيف يحدث معظم التحسّن خلال أول 10–25 شجرة.
تستيقظ التجربة عند وصولك…

الخوارزمية في شيفرة برمجية

التكييس من الصفر — التصنيف والانحدارpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
from collections import Counter

def bootstrap_sample(X, y, rng):
    """اسحب N عيّنة مع الإعادة من (X, y)."""
    n = len(X)
    indices = rng.choice(n, size=n, replace=True)
    return X[indices], y[indices], indices

def bagging_predict_regression(X_train, y_train, X_test, B=50, seed=42):
    """درِّب B شجرة على عيّنات تمهيدية واحسب متوسط التنبؤات."""
    rng = np.random.default_rng(seed)
    predictions = np.zeros((B, len(X_test)))

    for b in range(B):
        X_boot, y_boot, _ = bootstrap_sample(X_train, y_train, rng)
        tree = DecisionTreeRegressor()
        tree.fit(X_boot, y_boot)
        predictions[b] = tree.predict(X_test)

    return predictions.mean(axis=0)        # المتوسط على B شجرة

def bagging_predict_classification(X_train, y_train, X_test, B=50, seed=42):
    """درِّب B شجرة على عيّنات تمهيدية ثم صوِّت بالأغلبية."""
    rng = np.random.default_rng(seed)
    all_preds = []

    for b in range(B):
        X_boot, y_boot, _ = bootstrap_sample(X_train, y_train, rng)
        tree = DecisionTreeClassifier()
        tree.fit(X_boot, y_boot)
        all_preds.append(tree.predict(X_test))

    # تصويت الأغلبية لكل عيّنة اختبار
    all_preds = np.array(all_preds)         # (B, n_test)
    final = []
    for i in range(len(X_test)):
        votes = Counter(all_preds[:, i])
        final.append(votes.most_common(1)[0][0])
    return np.array(final)

# هذا هو التكييس. الغابة العشوائية تُضيف لمسة واحدة: عند كل انقسام
# لا يُنظر إلا في مجموعة عشوائية من السمات، مما يُفقد الأشجار
# ارتباطها ببعضها ويُتيح تخفيضاً إضافياً للتباين.

ما لا يستطيعه التكييس

التكييس يُخفّض التباين لكنه لا يُخفّض الانحياز. لو أن كل شجرة تُخطئ النمط الحقيقي بالطريقة نفسها بشكل منهجي — مثلاً لأن صنف النموذج بسيط أكثر من اللازم فتقع كل الأشجار في — فإن حساب متوسطها لن يحلّ المشكلة.

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

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

الإرث: من التكييس إلى الغابات

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

  1. 1984

    CART (أشجار التصنيف والانحدار)

    قدّم بريمان وفريدمان وأولشن وستون خوارزمية CART — خوارزمية الأشجار التأسيسية التي سيُروّضها التكييس لاحقاً.

  2. 1996

    تكييس المتنبِّئات

    يقترح بريمان التجميع بالتمهيد. يُثبت تخفيض التباين ويُحقّق تخفيضاً في الخطأ بين 20% و47% على مجموعات بيانات حقيقية، ويُقدّم تقدير خارج الكيس.

  3. 1997

    AdaBoost

    يُقدّم فرويند وشابير AdaBoost — أسلوب التجميع التكميلي الذي يُخفّض الانحياز بالتتابع بدلاً من تخفيض التباين بالتوازي.

  4. 2001

    الغابات العشوائية

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

  5. 2016

    XGBoost يهيمن على Kaggle

    أشجار التعزيز التدريجي — التي تدين بفلسفتها التجميعية للتكييس والتعزيز — تُصبح الخيار الأول في مسابقات البيانات الجدولية.

الغابات العشوائية هي تكييس مع إضافة ذكية: عند كل انقسام لا يُنظر إلا في مجموعة فرعية عشوائية من . هذا بين الأشجار ويعصر تبايناً إضافياً كان التكييس وحده يتركه على الطاولة. AdaBoost سلك الطريق المعاكس — مجموعات تتابعية تُخفّض الانحياز — وقاد إلى عائلة التعزيز التدريجي. هذان الفرعان معاً أعطيانا أقوى الخوارزميات المتاحة اليوم للتعامل مع .

المرجعBreiman, L.. Bagging Predictors. Machine Learning, 1996.

مصطلحات هذه الورقة