डिसीजन ट्री रैंडम फॉरेस्ट एल्गोरिदम का मूल निर्माण खंड है। इसे मशीन लर्निंग में सबसे लोकप्रिय एल्गोरिदम में से एक माना जाता है और इसका उपयोग वर्गीकरण उद्देश्यों के लिए किया जाता है। ये बेहद लोकप्रिय हैं क्योंकि इन्हें समझना आसान है।
डिसीजन ट्री द्वारा दिया गया निर्णय यह समझाने के लिए उपयोग किया जा सकता है कि एक निश्चित भविष्यवाणी क्यों की गई थी। इसका मतलब है कि प्रक्रिया के इनपुट और आउटपुट उपयोगकर्ता के लिए स्पष्ट होंगे। ये बैगिंग, रैंडम फॉरेस्ट, और ग्रेडिएंट बूस्टिंग जैसे एन्सेम्बल मेथड्स की नींव भी हैं। इन्हें CART के रूप में भी जाना जाता है, यानी क्लासिफिकेशन एंड रिग्रेशन ट्री। इसे बाइनरी ट्री (डेटा स्ट्रक्चर और एल्गोरिदम में अध्ययन किया गया) के रूप में देखा जा सकता है।
ट्री में प्रत्येक नोड एक इनपुट वेरिएबल को दर्शाता है, और लीफ नोड्स (जिन्हें टर्मिनल नोड्स भी कहा जाता है) में आउटपुट वेरिएबल होता है। इन लीफ नोड्स का उपयोग नोड पर भविष्यवाणी करने के लिए किया जाता है। जब एक डिसीजन ट्री बनाया जा रहा होता है, तो मूल विचार यह है कि दिए गए स्थान को कई खंडों में विभाजित किया जा रहा है। सभी मानों को रखा जाता है और कम लागत और सर्वोत्तम भविष्यवाणी मूल्यों को प्राप्त करने के लिए विभिन्न विभाजन का प्रयास किया जाता है। इन मूल्यों को लालची तरीके से चुना जाता है।
इन नोड्स का विभाजन तब तक चलता है जब तक ट्री की अधिकतम गहराई नहीं पहुंच जाती। डिसीजन ट्री का उपयोग करने के पीछे विचार इनपुट डेटासेट को विशिष्ट फीचर वैल्यू के आधार पर छोटे डेटासेट में विभाजित करना है जब तक कि हर टारगेट वेरिएबल एक ही श्रेणी में न आ जाए। यह विभाजन हर चरण के लिए अधिकतम सूचना लाभ प्राप्त करने के लिए किया जाता है।
हर डिसीजन ट्री एक रूट से शुरू होता है, और यह वह स्थान है जहां पहला विभाजन किया जाता है। यह सुनिश्चित करने के लिए एक कुशल तरीका तैयार किया जाना चाहिए कि नोड्स परिभाषित हों।
यहीं पर जिनी वैल्यू तस्वीर में आती है। जिनी को असमानता को मापने के लिए सबसे अधिक उपयोग किए जाने वाले मापों में से एक माना जाता है। असमानता टारगेट क्लास (आउटपुट) को संदर्भित करती है जिससे एक नोड में प्रत्येक सबसेट संबंधित हो सकता है।
इसलिए, हर विभाजन के बाद जिनी वैल्यू की गणना की जाती है। जिनी वैल्यू/असमानता वैल्यू के आधार पर, सूचना लाभ को परिभाषित किया जा सकता है।
DecisionTreeClassifier का उपयोग बहु-श्रेणी वर्गीकरण करने के लिए किया जाता है।
नीचे उसी का सिंटैक्स है।
class sklearn.tree.DecisionTreeClassifier(*, criterion='gini',...)
निम्नलिखित उदाहरण है -
उदाहरण
from sklearn import tree
from sklearn.model_selection import train_test_split
my_data = [[16,19],[17,32],[13,3],[14,5],[141,28],[13,34],[186,2],[126,25],[176,28],
[131,32],[166,6],[128,32],[79,110],[12,38],[19,91],[71,136],[116,25],[17,200],
[15,25], [14,32],[13,35]]
target_vals =['Man','Woman','Man','Woman', 'Woman','Man','Woman','Woman', 'Woman','Woman','Woman','Man','Man', 'Man','Woman', 'Woman', 'Woman', 'Woman','Man','Woman','Woman']
data_feature_names = ['Feature_1','Feature_2']
X_train, X_test, y_train, y_test = train_test_split(my_data, target_vals, test_size=0.2, random_state=1)
clf = tree.DecisionTreeClassifier()
print("डिसीजन ट्री क्लासिफायर को कॉल किया जा रहा है")
DTclf = clf.fit(my_data, target_vals)
prediction = DTclf.predict([[135,29]])
print("भविष्यवाणी किया गया मान है")
print(prediction)आउटपुट
डिसीजन ट्री क्लासिफायर को कॉल किया जा रहा है भविष्यवाणी किया गया मान है ['Woman']
व्याख्या
- आवश्यक पैकेज वातावरण में आयात किए गए हैं।
- कोड का उपयोग फीचर वैल्यू के आधार पर टारगेट वैल्यू को वर्गीकृत करने के लिए किया जाता है।
- फीचर वेक्टर और टारगेट वैल्यू परिभाषित की गई हैं।
- 'train_test_split' फ़ंक्शन की मदद से डेटा को ट्रेनिंग और टेस्टिंग सेट में विभाजित किया जाता है।
- DecisionTreeClassifier को कॉल किया जाता है और डेटा को मॉडल में फिट किया जाता है।
- फीचर वैल्यू के लिए मानों की भविष्यवाणी करने के लिए 'predict' फ़ंक्शन का उपयोग किया जाता है।
- आउटपुट कंसोल पर प्रदर्शित होता है।