我一直在做一些研究,并试图找到能够克服标准决策树(例如 CART、C5、ID3)中使用的“贪婪搜索算法”的“基于规则”和“基于树”(统计)模型,柴德)。
总结一下:“贪心搜索算法”是指选择“局部最优决策”——这在计算成本和时间方面有一定的好处,但很可能会导致错过“全局最优决策”。这是贪婪搜索的(缺点)示例:
上图显示了一个任务,其中需要一个算法来找到这个树结构中的最大数字(“99”)。“贪心算法”总是在每个可能的决定中选择较大的数字:在中间的图片中,我们看到贪心算法选择“12”而不是“3”(因为 12 > 3),然后选择“6”而不是“5”(因为 6 > 5)——因此,“贪心算法”得出结论,“6”是该树结构中的最大数。然而,我们可以看到这个树形结构中的最大数字实际上是“99”——但是“贪心算法”却漏掉了实际最大的数字。
在统计建模方面,常见的决策树算法(例如 CART、C5、ID3、CHAID、条件推理树等)在构建决策树时都使用“贪心算法”(例如选择优化 Entropy/Gini on本地级别) - 这几乎肯定会导致这些决策树中的任何一个都不是最优的,因为可能存在“更好的决策树”(例如更准确),但由于贪婪搜索而从未考虑过(尽管我没有看到了这个陈述的精确数学证明)。对于具有较少变量和不太复杂模式的较小数据集(例如鸢尾花数据集),“贪婪搜索”算法的使用尚未(据传闻)报道显着阻碍最终决策树的性能 - 然而,
随着更新的机器学习和统计模型的出现,我一直在尝试研究新的基于树和基于规则的模型,它们不会受到“贪婪搜索”的影响:一般来说,“基于树”和“基于规则”当您希望最终的统计模型“易于解释和解释”(同时牺牲预测能力)时,这特别有用。到目前为止,这是我遇到的模型列表:
进化决策树:可以使用遗传/进化算法构建决策树,这可能会导致更全面的搜索(例如https://cran.r-project.org/web/packages/evtree/index.html)
CORELS:可证明的最佳规则列表(https://cran.r-project.org/web/packages/corels/index.html)
PRE:预测集成规则 - 据说有时可以与随机森林相媲美(例如https://www.jstatsoft.org/article/view/v092i12)
基于分类的关联规则:https ://cran.r-project.org/web/packages/arulesCBA/arulesCBA.pdf
NB 规则挖掘:https ://cran.r-project.org/web/packages/arulesNBMiner/index.html
强化学习树:在构建决策树期间使用一种新的变量选择方法来“学习”数据集中的重要和不重要变量(例如https://cran.r-project.org/web/packages/RLT/index.html)。 html - 注意:我认为不可能从这些树中提取决策规则?)
模糊规则挖掘:https ://cran.r-project.org/web/packages/frbs/index.html
进化模糊规则挖掘:https : //cran.r-project.org/web/packages/SDEFSR/index.html,https: //cran.r-project.org/web/packages/SDEFSR/vignettes/SDEFSRpackage.pdf
进化规则:https ://cran.r-project.org/web/packages/fugeR/index.html
子组分析算法: ** https://cran.r-project.org/web/packages/rsubgroup/rsubgroup.pdf
极端规则拟合: https ://cran.r-project.org/web/packages/xrf/index.html
定量规则挖掘: https ://cran.r-project.org/web/packages/qCBA/index.html
递归规则挖掘: https ://cran.r-project.org/web/packages/RecAssoRules/index.html
患者规则归纳(PRIM):https ://cran.r-project.org/web/packages/prim/index.html
这是我能够找到的基于规则和基于树的模型的列表,其中包含 R 编程语言中的可用软件实现。
问题:以前有人用过这些模型吗?目前是否有任何标准的基于规则和基于树的模型用于克服常见决策树中的“贪婪搜索”算法?我特别在寻找提供“可解释和可解释的结果”的现代统计模型——而不是像随机森林和梯度提升这样的“黑盒”模型。就我而言,“示范规则”是最重要的。
有没有人有什么建议?
谢谢
参考:
- https://en.wikipedia.org/wiki/Greedy_algorithm
- https://cran.r-project.org/web/packages/KODAMA/vignettes/KODAMA.pdf
- https://arxiv.org/abs/1904.12847(全局最优树 - 没有可用的 R 包)
- https://link.springer.com/article/10.1007/s10994-017-5633-9(最优分类树 - 没有可用的 R 包)
- 多元决策树:https ://cran.r-project.org/web/packages/ROP/ROP.pdf
- 生存数据的多元决策树:https ://cran.r-project.org/web/packages/MST/index.html
