在使用sci-kit learn时,是否可以定义自定义决策树叶类型?
我想使用更复杂的叶子来训练随机森林,比如包含线性回归或高斯的叶子。这可能需要定义一个自定义叶类型并实现一个新的拆分标准。这可能吗?
谢谢。
这是可能的,但不是很明智。
sklearn中的决策树是用Cython(C++和Python的混合体)编写的,并使用Cython拆分标准的预定列表。这使得sklearn树非常快速,但不容易自定义。
如果您用纯Python编写自己的leaf和splitter,则必须将它们与sklearn Cython代码集成。这是可能的,但可能是漫长而艰难的。最后,您将获得较慢的代码,因为它将在每个节点从C++调用Python。因此,从头开始编写树构建算法会更便宜。
如果你在努力中非常认真,你可以用Cython编写叶子和拆分器,使其易于与scikit学习并同样快速地进行集成。但是这个解决方案不会是自定义的,因为您将无法从Python中添加另一个叶模型。
如果你想快速尝试这样的模型,你可以在Weka中使用M5算法。
如果你问我的意见,我很难理解你为什么要在随机森林的每一片叶子中添加更复杂的模型——它已经足够复杂了。