Доступ к деревьям и узлам из модели LightGBM - PullRequest
0 голосов
/ 13 ноября 2018

В Sci-Kit Learn можно получить доступ ко всей древовидной структуре, то есть к каждому узлу дерева. Это позволяет исследовать атрибуты, используемые при каждом разбиении дерева, и какие значения используются для теста

The binary tree structure has 5 nodes and has the following tree structure:
node=0 test node: go to node 1 if X[:, 3] <= 0.800000011920929 else to node 2.
    node=1 leaf node.
    node=2 test node: go to node 3 if X[:, 2] <= 4.950000047683716 else to node 4.
            node=3 leaf node.
            node=4 leaf node.

Rules used to predict sample 0:
decision id node 0 : (X_test[0, 3] (= 2.4) > 0.800000011920929)
decision id node 2 : (X_test[0, 2] (= 5.1) > 4.950000047683716)

Для Случайного леса вы можете получить ту же информацию, пройдя по всем деревьям решений

for tree in model.estimators_:
    # extract info from tree

Можно ли извлечь ту же информацию из модели LightGBM? То есть вы можете получить доступ к: а) каждому дереву и б) каждому узлу дерева?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Да, это возможно с

model._Booster.dump_model()["tree_info"]

, который, например, используется в lightgbm.plot_tree().Я должен признать, что сам не использовал его и не знаю подробностей о возвращенной структуре.

0 голосов
/ 16 ноября 2018

LightGBM имеет почти те же функции, что и XGBoost;иногда я даже захожу в документацию XGBoost, чтобы найти функции LightGBM.Вы можете искать, как это делается в XGBoost, или обращаться непосредственно к: https://github.com/Microsoft/LightGBM/issues/845

Кроме того, LightGBM имеет оболочку sklearn, возможно использовать структуру sklearn на модели, которую вы обучаете, в качествекак ты поделился.Вы можете взглянуть на: https://lightgbm.readthedocs.io/en/latest/_modules/lightgbm/sklearn.html

Надеюсь, я смогу помочь, пожалуйста, не стесняйтесь писать, если не решены;Я пойду глубже в деталях.

...