المعلوماتية > الذكاء الصنعي

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

استمع على ساوندكلاود 🎧

تُعتبر الغابات العشوائية واحدةً من أكثر تقنيات التعلّم الآلي قوةً والمؤتمتةِ بالكامل. فهي تقريباً ليست بحاجة لأي إعدادٍ للبيانات، أو أي خبرات بالنمذجة؛ وتُمكِّنُ المحللين من الحصول على نماذجَ فعّالةٍ بشكلٍ مذهل، وتُعتبر كذلك أداةً تُجسّدُ قوّة أشجار القرار (اقرأ المزيد هنا "رابط مقال أشجار القرار")، بالإضافة إلى العشوائيّة الحكيمة (judicious randomization)، والتعلّم الجمعي (Ensemble Learning) لإنتاج نماذجَ تنبؤيةٍ مدهشةٍ بدقتها، وتصنيفاتٍ ثاقبةٍ لأهمية المتغيرات، وافتراضاتٍ للقيم المفقودة، وتقسيماتٍ جديدة، لفهمِ أعمقِ البيانات.

لَبِنة البناء الأساسية للغابة العشوائية مستوحاةٌ من شجرة القرار (Classification and Regression Trees )، وهي إحدى طرق تعلُّمِ الآلة لبناءِ نماذجَ تنبؤٍ من البيانات، إذ يتمُّ الحصول على النماذج من خلال تقسيمِ البياناتِ وبناءِ نموذجٍ بسيطٍ للتنبُّؤ داخلَ كلِّ قسم. وهنا مثالٌ بسيطٌ عن شجرةِ CART تُصنِّفُ هل يحب الشخص ألعاب الكمبيوتر أم لا، اعتماداً على عمره وجنسه.

وُضِعت الغابات العشوائية في الأصل من قِبَل ليو بريمان Leo Breiman من جامعة كاليفورنيا في بيركلي، في ورقةٍ بحثيةٍ نُشِرت عام 1999، بناءً على عُمْرٍ من المساهمات المؤثّرة، من بينها شجرة القرار CART. إذ عَمِلَ على إتقان الغابات العشوائية لفترةٍ طويلةٍ مع معاوِنَتِه طالبة الدكتوراه أديل كاتلر Adele Cutler لتطويرِ الشّكلِ النّهائيِّ للغابات العشوائية، ويتضمّنُ ذلك الرسوماتِ المتطورة التي تسمحُ بفهمٍ أعمقَ للبيانات.

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

لنتخيل سحبَ عينةٍ عشوائيةٍ من قاعدة البيانات الرئيسية وبناءَ شجرةِ قرارٍ على أساسِ هذهِ العينة العشوائية، ولنفترضْ أنَّ هذه العينة تَستخدِم نصفَ البيانات المتاحة، حتى لو كان من الممكن أن يكون هذا النصف مختلفاً عن قاعدة البيانات الرئيسية. الآن نكرر العملية، نختارُ عينةً عشوائيةً مختلفةً ونبني شجرة القرار الثانية، ستكونُ التّوقُّعاتُ التي تُقدِّمُها شجرةُ القرار الثانية مختلفةً (على الأقل قليلاً) عن الشجرة الأولى. نواصلُ توليدَ المزيد من الأشجار بحيثُ يكونُ كلٌ منها مبنياً على عينةٍ مختلفة قليلاً، وسوف تتولّدُ تنبؤاتٌ مختلفةٌ -على الأقل قليلاً- في كل مرة. يمكن أن تستمرّ هذه العملية إلى ما لا نهاية، لكننا عادةً نكتفي بحوالي 200 إلى 500 شجرة. سوف تولّدُ كلُّ شجرةٍ التوقعاتِ الخاصَّةَ بها لكلِّ سِجِلٍّ في قاعدة البيانات، وللجمع بين كل هذه التنبؤات المنفصلة؛ يُمكننا استخدام إما المتوسط أو التصويت، للتنبؤِ بعنصرٍ مثلَ حجمِ المبيعات، نأخذ متوسط التوقعات التي قدمتها الأشجار، ولتوقع نتائج تصنيف مثل "نعم/لا" يمكننا جمع الأصوات، كم عدد الأشجار التي صوتت "نعم" مقابل عدد الأشجار التي صوتت "لا"، والأصواتُ الأعلى تحدد التنبؤ، وأخيراً لتوقُّعِ نتائجِ تصنيفٍ متعددِ الاحتمالات، يُمكن أن نحسبَ احتمال توقع كلِّ نتيجةٍ ممكنة على أساس الحصة النسبية من الأصوات لكلِّ نتيجة.

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

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

نسبة الخطأ في الغابات تعتمد على أمرين:

1. العلاقةُ بين أي شجرتين في الغابة: زيادة الارتباط يزيد من نسبة الخطأ في الغابات.

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

عند رسم مجموعة التدريب للشجرة الحالية عن طريق أخذ عيناتٍ من البيانات الأصلية، يتم تركُ حوالي ثلث تلك البيانات لاستخدامها للاختبار. تُسمَّى هذه البيانات (Out-Of-Bag ) وتستخدَمُ للحصول على تقديرٍ غيرِ متحيِّزٍ لخطأ التصنيف عند إضافة الأشجار إلى الغابة. كما أنها تُستَخدَمُ للحصول على تقديراتٍ حول أهميّة المتغيرات، أي أنه ليس هناك حاجةٌ للتصديق المتقاطع (cross-validation) ولا لمجموعةِ اختبارٍ منفصلةٍ للحصول على تقديرٍ غير متحيزٍ للخطأ منها. ويُقدَّر الخطأ داخلياً خلال التشغيل، على النحو التالي:

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

الغابات عشوائيةٌ سريعةٌ جداً، يمكن أن تعمل على مجموعة من البيانات تحوي 50000 حالة و100 متغير، وتُنتِج 100 شجرةٍ في 11 دقيقةً على جهازٍ تردده 800 Mhz، وتعملُ بكفاءةٍ على قواعد البيانات الكبيرة، ويُمكنها التَّعامل مع الآلاف من متغيرات الدخل. وهي قادرةٌ على التعامل مع البيانات غير المتوازنة والتي تحوي قيماً مفقودة، وتُحافظ على الدقة عند وجود نسبة كبيرة من البيانات المفقودة.

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

بطبيعة الحال، فإنَّ أفضل اختبارٍ لأيِّ خوارزمية هو تجربةُ عملها بشكلٍ جيد على مجموعة البيانات الخاصة بك.

المصادر:

An Introduction to Random Forests for Beginners

هنا

هنا