我有一个特定于数据集的问题,需要使用gini_index以外的拆分函数。这要求我从头开始重写一个决策树。我有一个工作模式,但效率很低。
为了进行拆分,我目前对每个特性进行迭代,然后遍历该数据集中的每个节点的每个唯一数据点(节点总数x特性x唯一级别gini计算)。因为我的DT在300 k X 145数据集上已经运行了2天。
我如何减少分裂评估的数量,或加快程序。我在Sklean的代码中读过Fisher Yates算法,但我不理解逻辑。任何帮助都将不胜感激。
发布于 2018-10-29 17:28:54
通常,为了减少通过See4.5 (C4.5)算法运行数据集所需的时间,您需要减少树中需要处理的节点数。
这可以通过剪枝,优化操作符的选择,并结合一个启发式到您的决策树搜索。
α-β剪枝、双向搜索和Minmax算子选择算法是减少决策树时间的一个很好的选择。
我不打算在这里写一整本书,不过,我要研究人工智能,看看他们到目前为止取得了什么成就。然而,如果你看到任何一本书说双向搜索在任何方面都是非最佳的,那就忽略这一点,因为这是研究人员无法很好地编码的内在原因。
Gini算法在实际应用中的一个良好的实现是通过Ross的网站实现的。如果您查看并理解C5.0源代码,您应该处于决策树研究级别,因为据我所知,在网上没有明确的解释,详细介绍了新算法的新增内容。
https://datascience.stackexchange.com/questions/40387
复制相似问题