रैंडम फ़ॉरेस्ट

रैंडम फ़ॉरेस्ट (RF), डिसिज़न ट्री का एक ग्रुप होता है. इसमें हर डिसिज़न ट्री को किसी खास रैंडम नॉइज़ के साथ ट्रेन किया जाता है. रैंडम फ़ॉरेस्ट, डिसिज़न ट्री एन्सेम्बल का सबसे लोकप्रिय फ़ॉर्म है. इस यूनिट में, अलग-अलग डिसिज़न ट्री बनाने की कई तकनीकों के बारे में बताया गया है. इससे, असरदार रैंडम फ़ॉरेस्ट बनाने की संभावनाएं बढ़ती हैं.

बैगिंग

बैगिंग (bootstrap aggregating) का मतलब है कि ट्रेनिंग सेट में मौजूद उदाहरणों के किसी रैंडम सबसेट पर हर डिसीज़न ट्री को ट्रेनिंग देना. दूसरे शब्दों में, रैंडम फ़ॉरेस्ट में मौजूद हर डिसिज़न ट्री को उदाहरणों के अलग-अलग सबसेट पर ट्रेन किया जाता है.

बैगिंग एक खास तरह की प्रोसेस है. हर डिसिज़न ट्री को उतने ही उदाहरणों पर ट्रेन किया जाता है जितने उदाहरणों पर ओरिजनल ट्रेनिंग सेट को ट्रेन किया गया है. उदाहरण के लिए, अगर ओरिजनल ट्रेनिंग सेट में 60 उदाहरण हैं, तो हर डिसीज़न ट्री को 60 उदाहरणों पर ट्रेन किया जाता है. हालांकि, बैगिंग की मदद से हर डेसिज़न ट्री को सिर्फ़ उन उदाहरणों के सबसेट (आम तौर पर, 67%) पर ट्रेन किया जाता है. इसलिए, किसी दिए गए डिसीज़न ट्री को ट्रेन करते समय, सबसेट में मौजूद उन 40 उदाहरणों का फिर से इस्तेमाल करना होगा. डेटा का फिर से इस्तेमाल करने की इस प्रोसेस को "डेटा बदलकर" ट्रेनिंग देना कहा जाता है.

उदाहरण के लिए, टेबल 6 में दिखाया गया है कि बैगिंग की मदद से, तीन डिसीज़न ट्री में छह उदाहरण कैसे बांटें जा सकते हैं. इन बातों पर ध्यान दें:

  • हर डिसिज़न ट्री, कुल छह उदाहरणों पर ट्रेनिंग लेता है.
  • हर डिसीज़न ट्री, उदाहरणों के अलग-अलग सेट पर ट्रेनिंग करता है.
  • हर डिसीज़न ट्री में कुछ उदाहरणों का फिर से इस्तेमाल किया जाता है. उदाहरण के लिए, उदाहरण #4 का इस्तेमाल, डिसीज़न ट्री 1 को ट्रेनिंग देने के लिए दो बार किया जाता है. इसलिए, डिसीज़न ट्री 1 में उदाहरण #4 का लर्न किया गया वेट, दोगुना हो जाता है.

टेबल 6. तीन डिसिज़न ट्री में छह ट्रेनिंग उदाहरणों को बैग किया जा रहा है. हर संख्या से पता चलता है कि किसी डिसिज़न ट्री (1-3) के ट्रेनिंग डेटासेट में, किसी ट्रेनिंग के उदाहरण (#1-6) को कितनी बार दोहराया गया है.

ट्रेनिंग के उदाहरण
#1 #2 #3 #4 #5 #6
ओरिजनल डेटासेट 1 1 1 1 1 1
डिसीज़न ट्री 1 1 1 0 2 1 1
डिसीज़न ट्री 2 3 0 1 0 2 0
डिसीज़न ट्री 3 0 1 3 1 0 1

बैगिंग में, हर डिसिज़न ट्री को मूल ट्रेनिंग सेट में मौजूद उदाहरणों की कुल संख्या के आधार पर ट्रेन किया जाता है. हर डिसीज़न ट्री को ज़्यादा या कम उदाहरणों पर ट्रेनिंग देने से, रैंडम फ़ॉरेस्ट की क्वालिटी खराब हो जाती है.

ओरिजनल रैंडम फ़ॉरेस्ट पेपर में मौजूद नहीं होने के बावजूद, उदाहरणों का सैंपलिंग कभी-कभी "बिना बदलाव किए" किया जाता है. इसका मतलब है कि किसी डिसीज़न ट्री ट्रेनिंग सेट में, ट्रेनिंग का उदाहरण एक से ज़्यादा बार मौजूद नहीं हो सकता. उदाहरण के लिए, ऊपर दी गई टेबल में, सभी वैल्यू 0 या 1 होंगी.

YDF कोड
YDF में दिए गए इस असाइनमेंट की मदद से, बदलाव किए बिना ट्रेनिंग की सुविधा चालू की जा सकती है: bootstrap_training_dataset=False

एट्रिब्यूट सैंपलिंग

एट्रिब्यूट सैंपलिंग का मतलब है कि सभी उपलब्ध सुविधाओं में से सबसे अच्छी स्थिति ढूंढने के बजाय, हर नोड पर सुविधाओं के सिर्फ़ एक रैंडम सबसेट की जांच की जाती है. टेस्ट की गई सुविधाओं के सेट को डिसिज़न ट्री के हर नोड पर रैंडम तरीके से सैंपल किया जाता है.

यहां दिए गए डिसीज़न ट्री में, एट्रिब्यूट / सुविधा के सैंपलिंग के बारे में बताया गया है. यहां एक डिसिज़न ट्री को पांच फ़ीचर (f1-f5) पर ट्रेन किया गया है. नीले नोड, टेस्ट की गई सुविधाओं को दिखाते हैं, जबकि सफ़ेद रंग के नोड, टेस्ट नहीं की गई सुविधाओं को दिखाते हैं. शर्त, सबसे अच्छी तरह से जांची गई सुविधाओं (लाल रंग की आउटलाइन के साथ दिखाई गई) से बनाई गई है.

तीन नोड, जिनमें से हर एक में पांच सुविधाएं दिख रही हैं. रूट नोड और उसके एक चाइल्ड नोड में, पांच में से तीन सुविधाओं की जांच की जाती है. दूसरा चाइल्ड नोड, पांच में से दो सुविधाओं की जांच करता है.

21वीं इमेज. एट्रिब्यूट सैंपलिंग.

 

एट्रिब्यूट सैंपलिंग का अनुपात, रेगुलराइज़ेशन का एक अहम हाइपरपैरामीटर है. पिछले फ़िगर में ~⅗ रेशियो का इस्तेमाल किया गया था. रैंडम फ़ॉरेस्ट लागू करने के कई तरीके, डिफ़ॉल्ट रूप से रेग्रेसन के लिए 1/3 फ़ीचर और क्लासिफ़िकेशन के लिए sqrt(फ़ीचर की संख्या) का इस्तेमाल करते हैं.

TF-DF में, एट्रिब्यूट सैंपलिंग को ये हाइपरपैरामीटर कंट्रोल करते हैं:

  • num_candidate_attributes
  • num_candidate_attributes_ratio

उदाहरण के लिए, अगर num_candidate_attributes_ratio=0.5 है, तो हर नोड पर आधी सुविधाओं की जांच की जाएगी.

डिसीज़न ट्री रेगुलराइज़ेशन की सुविधा बंद करना

रैंडम फ़ॉरेस्ट में मौजूद अलग-अलग डिसिज़न ट्री को बिना छंटाई के ट्रेन किया जाता है. (ओवरफ़िटिंग और प्रूनिंग देखें). इससे, अनुमान की खराब क्वालिटी वाले बहुत जटिल ट्री बनते हैं. अलग-अलग ट्री को रेगुलर करने के बजाय, ट्री को एक साथ जोड़कर ज़्यादा सटीक अनुमान लगाए जाते हैं.

हमें उम्मीद है कि रैंडम फ़ॉरेस्ट के ट्रेनिंग और टेस्ट के नतीजों में अंतर होगा. आम तौर पर, रैंडम फ़ॉरेस्ट की ट्रेनिंग की सटीकता काफ़ी ज़्यादा होती है. कभी-कभी यह 100% तक होती है. हालांकि, रेंडम फ़ॉरेस्ट में ट्रेनिंग की सटीक जानकारी का बहुत ज़्यादा होना सामान्य है. इससे यह नहीं पता चलता कि रेंडम फ़ॉरेस्ट ओवरफ़िट है.

रैंडमनेस के दो सोर्स (बैगिंग और एट्रिब्यूट सैंपलिंग), यह पक्का करते हैं कि डेसिज़न ट्री के बीच कोई संबंध न हो. यह अलग-अलग डिसिज़न ट्री के ओवरफ़िट होने की समस्या को ठीक करता है. इस वजह से, एन्सेम्बल ओवरफ़िट नहीं होता. हम अगली यूनिट में, इस ग़ैर-सहज असर के बारे में बताएंगे.

प्योर रैंडम फ़ॉरेस्ट, हर लीफ़ के लिए ज़्यादा से ज़्यादा डेप्थ या कम से कम ऑब्ज़र्वेशन के बिना ट्रेन होते हैं. आम तौर पर, हर लीफ के लिए, ज़्यादा से ज़्यादा डेप्थ और कम से कम अवलोकन की संख्या को सीमित करना फ़ायदेमंद होता है. डिफ़ॉल्ट रूप से, कई यादृच्छिक फ़ॉरेस्ट इन डिफ़ॉल्ट वैल्यू का इस्तेमाल करते हैं:

  • नेस्ट करने के लेवल की ज़्यादा से ज़्यादा संख्या ~16 होनी चाहिए
  • हर लीफ में कम से कम पांच ऑब्ज़र्वेशन होने चाहिए.

इन हाइपरपैरामीटर को ट्यून किया जा सकता है.

YDF कोड
YDF का ट्यूनर, हाइपरपैरामीटर को ट्यून करने का एक आसान तरीका है. ज़्यादा जानकारी के लिए, YDF का ट्यूनिंग ट्यूटोरियल देखें.

शोर की क्लैरिटी

रैंडम नॉइज़ से रैंडम फ़ॉरेस्ट की क्वालिटी क्यों बेहतर होती है? रैंडम नॉइज़ के फ़ायदों को दिखाने के लिए, इमेज 22 में क्लासिकल (छोटा किया गया) डिसिज़न ट्री और रैंडम फ़ॉरेस्ट के अनुमान दिखाए गए हैं. रैंडम फ़ॉरेस्ट को, दीर्घवृत्त पैटर्न वाली दो-आयामी समस्या के कुछ उदाहरणों पर ट्रेनिंग दी गई है.

ऐलिप्स पैटर्न, ऐक्सिस के अलाइन होने की शर्तों के साथ सीखने के लिए, डिसीज़न ट्री और डिसीज़न फ़ॉरेस्ट एल्गोरिदम के लिए काफ़ी मुश्किल होते हैं. इसलिए, ये एक अच्छा उदाहरण हैं. ध्यान दें कि छंटने वाले डिसीज़न ट्री से, रैंडम फ़ॉरेस्ट की तरह अच्छी क्वालिटी का अनुमान नहीं मिल सकता.

तीन इलस्ट्रेशन. ग्राउंड ट्रूथ लेबल वाली पहली इमेज, एक सही दीर्घवृत्त है. दूसरा इलस्ट्रेशन, जिसे काटा गया डिसीज़न ट्री लेबल किया गया है, एक दीर्घवृत्त और आयताकार के बीच का है. तीसरी इमेज, जिसे रैंडम फ़ॉरेस्ट के तौर पर लेबल किया गया है, पूरी तरह से दीर्घवृत्त नहीं है. हालांकि, यह 'छोटा किया गया डिसीज़न ट्री' के तौर पर लेबल की गई इमेज की तुलना में, दीर्घवृत्त के ज़्यादा करीब है.

22वीं इमेज. असल डेटा बनाम काटे गए एक ही डेसिज़न ट्री से जनरेट किए गए अनुमान और रैंडम फ़ॉरेस्ट से जनरेट किए गए अनुमान.

अगला प्लॉट, रैंडम फ़ॉरेस्ट के पहले तीन बिना छंटाई वाले डिसिज़न ट्री के अनुमान दिखाता है. इसका मतलब है कि सभी डिसिज़न ट्री को इनके कॉम्बिनेशन से ट्रेन किया जाता है:

  • बैगिंग
  • एट्रिब्यूट सैंपलिंग
  • प्रूनिंग की सुविधा बंद करना

ध्यान दें कि इन तीनों फ़ैसले के पेड़ों के अलग-अलग अनुमान, पिछले फ़िगर में दिखाए गए काटे गए फ़ैसले के पेड़ के अनुमान से खराब हैं. हालांकि, अलग-अलग डिसिज़न ट्री की गड़बड़ियां कम ही मिलती-जुलती होती हैं. इसलिए, असरदार अनुमान लगाने के लिए, तीनों डिसिज़न ट्री को एक साथ जोड़ दिया जाता है.

तीन बहुत शोर वाले दीर्घवृत्त.

23वां चित्र. बिना छंटाई वाले तीन डिसिज़न ट्री, जो असरदार एन्सेम्बल बनाएंगे.

रैंडम फ़ॉरेस्ट के डिसिज़न ट्री को काटा नहीं जाता है. इसलिए, रैंडम फ़ॉरेस्ट को ट्रेनिंग देने के लिए, पुष्टि करने वाले डेटासेट की ज़रूरत नहीं होती. आम तौर पर, खास तौर पर छोटे डेटासेट के लिए, मॉडल को उपलब्ध सभी डेटा पर ट्रेन किया जाना चाहिए.

रैंडम फ़ॉरेस्ट को ट्रेनिंग देते समय, ज़्यादा डिसीज़न ट्री जोड़ने पर, गड़बड़ी काफ़ी कम हो जाती है. इसका मतलब है कि मॉडल की क्वालिटी काफ़ी बेहतर हो जाती है. हां, ज़्यादा डिसीज़न ट्री जोड़ने से, रैंडम फ़ॉरेस्ट की गड़बड़ी में कमी आती है. दूसरे शब्दों में, ज़्यादा डिसीज़न ट्री जोड़ने से, रैंडम फ़ॉरेस्ट ओवरफ़िट नहीं हो सकता. किसी समय पर, मॉडल बेहतर होना बंद कर देता है. लियो ब्रेमन ने मशहूर कहा था, "रैंडम फ़ॉरेस्ट, ज़्यादा पेड़ों को जोड़ने की वजह से, ज़्यादा फ़िट नहीं होते".

उदाहरण के लिए, नीचे दिए गए प्लॉट में, रैंडम फ़ॉरेस्ट मॉडल के टेस्ट का आकलन दिखाया गया है. इसमें ज़्यादा डिसीज़न ट्री जोड़े गए हैं. सटीक जानकारी देने की क्षमता तेज़ी से तब तक बढ़ती है, जब तक यह 0.865 के आस-पास नहीं पहुंच जाती. हालांकि, ज़्यादा डिसीज़न ट्री जोड़ने से, सटीक नतीजे मिलने की संभावना कम नहीं होती. दूसरे शब्दों में, मॉडल ओवरफ़िट नहीं होता. यह व्यवहार (ज़्यादातर) हमेशा सही होता है और यह हाइपरपैरामीटर पर निर्भर नहीं करता.

पिछले पैराग्राफ़ में बताए गए, सटीक नतीजे बनाम डिसीज़न ट्री की संख्या का प्लॉट.

24वां चित्र. रेंडम फ़ॉरेस्ट में ज़्यादा डिसीज़न ट्री जोड़ने पर, सटीक नतीजे मिलते रहते हैं.