2015-12-10 2 views
4

Можно ли определить тип дерева деревьев при использовании sci-kit?Scikit-Learn Custom Decision Tree Типы листьев

Я хотел бы обучать случайные леса, используя более сложные листья, такие как листья, содержащие линейные регрессоры или гауссианы. Это, вероятно, потребует определения пользовательского типа листа и реализации нового критерия разделения. Это возможно?

спасибо.

ответ

1

Это можно сделать, но не очень разумно.

Дерево принятия решений в sklearn написано в Cython (гибрид C++ и Python) и использует предопределенный список критериев разделения Cython. Это делает sklearn деревья очень быстрыми, но не легко настраиваемыми.

Если вы пишете свои собственные листья и сплиттер в чистом Python, вам придется интегрировать их с кодом Sklearn Cython. Это возможно, но может быть долгим и тяжелым. И, в конце концов, у вас будет медленный код, потому что он вызовет Python из C++ на каждом узле. Таким образом, вам было бы дешевле написать алгоритм построения дерева с нуля.

Если вы очень серьезно относитесь к своим усилиям, вы можете написать листья и сплиттер в Cython, чтобы сделать его легко интегрируемым с scikit-learn и столь же быстрым. Но это решение не будет таким обычным, потому что вы не сможете добавить еще одну модель листа из Python.

Если вы хотите быстро попробовать такую ​​модель, вы можете использовать алгоритм M5 в Weka.

И если вы спросите мое мнение, я почти не понимаю, почему вы можете добавить более сложные модели в каждый лист случайного леса - он уже достаточно сложный.

Смежные вопросы