प्रत्येक सुविधा के लिए लाभ की गणना करता है और प्रत्येक नोड के लिए सर्वोत्तम संभव विभाजन जानकारी लौटाता है। हालाँकि, यदि कोई विभाजन नहीं मिलता है, तो उस नोड के लिए कोई विभाजन जानकारी वापस नहीं की जाती है।
विभाजित जानकारी प्रत्येक सुविधा के लिए सर्वोत्तम सीमा (बकेट आईडी), लाभ और प्रति नोड बाएं/दाएं नोड योगदान है।
यह संभव है कि सभी नोड्स को प्रत्येक सुविधा पर विभाजित नहीं किया जा सके। इसलिए, संभावित नोड्स की सूची सुविधाओं के बीच भिन्न हो सकती है। इसलिए, हम प्रत्येक सुविधा के लिए `node_ids_list` लौटाते हैं, जिसमें उन नोड्स की सूची होती है जिन्हें विभाजित करने के लिए इस सुविधा का उपयोग किया जा सकता है।
इस तरीके से, आउटपुट प्रति फीचर और प्रति नोड सबसे अच्छा विभाजन है, ताकि प्रत्येक नोड (सभी संभावित सुविधाओं के बीच) के लिए सबसे अच्छा विभाजन उत्पन्न करने के लिए इसे बाद में संयोजित करने की आवश्यकता हो।
आउटपुट आकार इस तरह से संगत हैं कि सभी टेंसरों का पहला आयाम समान है और प्रत्येक सुविधा के लिए संभावित विभाजन नोड्स की संख्या के बराबर है।
सार्वजनिक तरीके
स्टेटिक बूस्टेडट्रीज़कैलकुलेटबेस्टफ़ीचरस्प्लिट V2 | बनाएं ( स्कोप स्कोप, ऑपरेंड <इंटेगर> नोडआईडीरेंज, इटरेबल < ऑपरेंड <फ्लोट>> आँकड़े सारांश सूची, ऑपरेंड <स्ट्रिंग> स्प्लिटटाइप्स, ऑपरेंड <इंटेगर> कैंडिडेटफीचरआईडी, ऑपरेंड <फ्लोट> एल1, ऑपरेंड <फ्लोट> एल2, ऑपरेंड <फ्लोट> ट्रीकॉम्प्लेक्सिटी, ऑपरेंड <फ्लोट> minNodeWeight, लंबे लॉगडिमेंशन) एक नए BoostedTreescalculateBestFeatureSplitV2 ऑपरेशन को लपेटकर एक क्लास बनाने की फ़ैक्टरी विधि। |
आउटपुट <पूर्णांक> | फीचर आयाम () यदि सुविधा बहु-आयाम है तो रैंक 1 टेंसर प्रत्येक सुविधा को कुछ नोड्स के लिए विभाजित करने के लिए सर्वोत्तम सुविधा आयाम का संकेत देता है। |
आउटपुट <पूर्णांक> | फीचर आईडी () एक रैंक 1 टेंसर प्रत्येक नोड के लिए सर्वोत्तम फीचर आईडी का संकेत देता है। |
आउटपुट <फ्लोट> | लाभ () एक रैंक 1 टेंसर प्रत्येक फीचर को कुछ नोड्स के लिए विभाजित करने के लिए सर्वोत्तम लाभ का संकेत देता है। |
आउटपुट <फ्लोट> | बायाँ नोड योगदान () एक रैंक 2 टेंसर प्रत्येक सुविधा के लिए दी गई सीमा के अनुसार मूल नोड्स (आउटपुट नोड_आईड्स_लिस्ट में टेंसर तत्व द्वारा दिए गए) से बाईं दिशा में शाखा करते समय बाएं नोड्स के योगदान को दर्शाता है। |
आउटपुट <पूर्णांक> | नोडआईडी () प्रत्येक सुविधा के लिए संभावित स्प्लिट नोड आईडी का संकेत देने वाला रैंक 1 टेंसर। |
आउटपुट <फ्लोट> | दाएँ नोड योगदान () रैंक 2 टेंसर, बाएँ_नोड_कॉन्ट्रिब्स_लिस्ट के समान आकार/शर्तों के साथ, लेकिन केवल यह कि मान दाएँ नोड के लिए है। |
आउटपुट <स्ट्रिंग> | स्प्लिटविथडिफॉल्टडायरेक्शन () रैंक 1 टेंसर यह दर्शाता है कि डेटा गायब होने पर किस दिशा में जाना है। |
आउटपुट <पूर्णांक> | दहलीज () प्रत्येक नोड में विभाजन के लिए (सीमा के रूप में) तुलना करने के लिए बकेट आईडी को इंगित करने वाला रैंक 1 टेंसर। |
विरासत में मिली विधियाँ
सार्वजनिक तरीके
सार्वजनिक स्थैतिक बूस्टेडट्रीज़कैलकुलेटबेस्टफ़ीचरस्प्लिटवी 2 बनाएं ( स्कोप स्कोप, ऑपरेंड <इंटेगर> नोडआईडीरेंज, इटरेबल< ऑपरेंड <फ्लोट>> आँकड़े सारांश सूची, ऑपरेंड <स्ट्रिंग> स्प्लिटटाइप्स, ऑपरेंड <इंटेगर> कैंडिडेटफ़ीचरआईडी, ऑपरेंड <फ्लोट> एल1, ऑपरेंड <फ्लोट> एल2, ऑपरेंड <फ्लोट > ट्रीकॉम्प्लेक्सिटी, ऑपरेंड <फ्लोट> मिननोडवेट, लॉन्ग लॉगिट्सडिमेंशन)
एक नए BoostedTreescalculateBestFeatureSplitV2 ऑपरेशन को लपेटकर एक क्लास बनाने की फ़ैक्टरी विधि।
पैरामीटर
दायरा | वर्तमान दायरा |
---|---|
नोडआईडीरेंज | `stats_summary_list` के भीतर संसाधित करने के लिए नोड आईडी की सीमा [पहली, आखिरी) निर्दिष्ट करने के लिए एक रैंक 1 टेंसर (आकार = [2])। नोड्स को टेंसर द्वारा निर्दिष्ट दो नोड्स के बीच पुनरावृत्त किया जाता है, जैसे `for node_id inrange(node_id_range[0], node_id_range[1])` (ध्यान दें कि अंतिम सूचकांक नोड_id_range[1] अनन्य है)। |
आँकड़े सारांश सूची | प्रत्येक सुविधा के लिए प्रति नोड, प्रति आयाम, प्रति बाल्टी संचित आँकड़े सारांश (ग्रेडिएंट/हेस्सियन) के लिए रैंक 4 टेंसर (#shape=[max_splits, फीचर_डिम्स, बकेट, स्टैट्स_डिम्स]) की एक सूची। टेंसर का पहला आयाम विभाजन की अधिकतम संख्या है, और इस प्रकार इसके सभी तत्वों का उपयोग नहीं किया जाएगा, बल्कि केवल नोड_आईडी द्वारा निर्दिष्ट अनुक्रमित का उपयोग किया जाएगा। |
विभाजन प्रकार | एक रैंक 1 टेंसर यह दर्शाता है कि क्या इस ओप को प्रति फीचर असमानता विभाजन या समानता विभाजन करना चाहिए। |
उम्मीदवार फ़ीचर आईडी | प्रत्येक सुविधा के लिए आईडी के साथ रैंक 1 टेंसर। यह फीचर की असली आईडी है. |
एल1 | प्रति उदाहरण के आधार पर, पत्ती के वजन पर एल1 नियमितीकरण कारक। |
एल2 | प्रति उदाहरण के आधार पर, पत्ती के वजन पर एल2 नियमितीकरण कारक। |
वृक्ष जटिलता | प्रति पत्ती के आधार पर लाभ का समायोजन। |
minNodeWeight | नोड को विभाजित करने पर विचार करने के लिए आवश्यक होने से पहले एक नोड में हेसियन का न्यूनतम औसत। |
logitsआयाम | लॉगिट का आयाम, यानी, वर्गों की संख्या। |
रिटर्न
- BoostedTreescalculateBestFeatureSplitV2 का एक नया उदाहरण
सार्वजनिक आउटपुट <पूर्णांक> सुविधा आयाम ()
यदि सुविधा बहु-आयाम है तो रैंक 1 टेंसर प्रत्येक सुविधा को कुछ नोड्स के लिए विभाजित करने के लिए सर्वोत्तम सुविधा आयाम का संकेत देता है। आकार और साइज जैसे विवरण के लिए ऊपर देखें।
सार्वजनिक आउटपुट <पूर्णांक> फीचर आईडी ()
एक रैंक 1 टेंसर प्रत्येक नोड के लिए सर्वोत्तम फीचर आईडी का संकेत देता है। आकार और साइज जैसे विवरण के लिए ऊपर देखें।
सार्वजनिक आउटपुट <फ्लोट> लाभ ()
एक रैंक 1 टेंसर प्रत्येक फीचर को कुछ नोड्स के लिए विभाजित करने के लिए सर्वोत्तम लाभ का संकेत देता है। आकार और साइज जैसे विवरण के लिए ऊपर देखें।
सार्वजनिक आउटपुट <फ्लोट> लेफ्टनोडकॉन्ट्रिब्स ()
एक रैंक 2 टेंसर प्रत्येक सुविधा के लिए दी गई सीमा के अनुसार मूल नोड्स (आउटपुट नोड_आईड्स_लिस्ट में टेंसर तत्व द्वारा दिए गए) से बाईं दिशा में शाखा करते समय बाएं नोड्स के योगदान को दर्शाता है। इस मान का उपयोग मूल नोड मान में जोड़कर बाएँ नोड मान बनाने के लिए किया जाएगा। 1-आयामी लॉग के लिए दूसरे आयाम का आकार 1 है, लेकिन बहु-वर्ग समस्याओं के लिए यह बड़ा होगा। आकार और साइज जैसे विवरण के लिए ऊपर देखें।
सार्वजनिक आउटपुट <पूर्णांक> नोडआईडी ()
प्रत्येक सुविधा के लिए संभावित स्प्लिट नोड आईडी का संकेत देने वाला रैंक 1 टेंसर। सूची की लंबाई num_features है, लेकिन प्रत्येक टेंसर का आकार अलग-अलग होता है क्योंकि प्रत्येक सुविधा अलग-अलग संभावित नोड प्रदान करती है। आकार और साइज जैसे विवरण के लिए ऊपर देखें।
सार्वजनिक आउटपुट <फ्लोट> राइटनोडकॉन्ट्रिब्स ()
रैंक 2 टेंसर, बाएँ_नोड_कॉन्ट्रिब्स_लिस्ट के समान आकार/शर्तों के साथ, लेकिन केवल यह कि मान दाएँ नोड के लिए है।
सार्वजनिक आउटपुट <स्ट्रिंग> स्प्लिटविथडिफॉल्टडायरेक्शन ()
रैंक 1 टेंसर यह दर्शाता है कि डेटा गुम होने पर किस दिशा में जाना है। आकार और साइज जैसे विवरण के लिए ऊपर देखें। डिफ़ॉल्ट बाएँ रिटर्न के साथ असमानता 0, डिफ़ॉल्ट दाएँ रिटर्न के साथ असमानता 1, डिफ़ॉल्ट दाएँ रिटर्न के साथ समानता 2।
सार्वजनिक आउटपुट <पूर्णांक> सीमाएँ ()
प्रत्येक नोड में विभाजन के लिए (सीमा के रूप में) तुलना करने के लिए बकेट आईडी को इंगित करने वाला रैंक 1 टेंसर। आकार और साइज जैसे विवरण के लिए ऊपर देखें।