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