algorithm - 从函数自动构建决策树
问题描述
(对不起,如果这个问题感觉有点头脑风暴)
我有一个F
带有参数a_1, a_2...
和b
输出的函数x
。该函数还由一系列p_1, p_2...
参数定义,这些参数在我的工作过程中可能会发生变化。
F(a_1, a_2... , b) = x
鉴于a_1, a_2...
我想构建一个决策树算法来找到x
函数的最小化 b F
。我想自动化这个决策树构建器,以适应F
(通过p_1, p_2...
)的变化。
自动化过程非常重要,因为实际上它a_x
可以是任何东西(整数、连续数、离散参数)并且F
是高度非线性的。
我本能的想法之一是构建假样本并在数据集上学习决策树,这将为我提供所需的决策树。然而,这似乎过于复杂,因为我可以访问产生这个问题的函数。
如果有人有任何想法或向我指出任何可以帮助我解决问题的方向,我们将不胜感激。
编辑 :
我正在改变我的问题范围:
假设从最初的问题你得到F'
映射a_1, a_2...
到b
(b
是离散的) 的函数。是否会有一种算法试图通过具有as 节点F'
的决策树来“简化”。a_1, a_2...
例如一个决策树会说if a_2 = "type2" and a_1 < 6 -> 3
等等。我不是在寻找一个精确的分区,一个体面的估计就足够了。
我正在考虑使用 ML 算法使用F'
. 这有意义吗?
解决方案
你的想法是有道理的,如果你想要快速和贪婪的近似F'
,但你应该注意正确地实现它:
1)当您声明您的变量可能是分类和数字时,您应该考虑对变量进行分级的方式。对于高度非线性函数,广泛接受的线性分箱将不是最佳的。
2)由于决策树难以处理相关变量,一些预处理可能有助于提升问题。尝试从 PCA 开始。
至于使用真实数据或从原始函数生成它,我认为应该没有显着差异。如果您发现在某些“区域”中您的数据代表性不足,您可能希望在这里和那里增加初始训练数据集。
推荐阅读
- reactjs - 如何在 Draftjs 编辑器中修改样式?
- android - 我的 ScrollView 没有滚动 - 如何解决?
- itext - 如何将 PDFObject/PDFDictionary 转换为 PDFArray
- javascript - 第二次和第三次拖动在javascript中不起作用
- stylelint - 是否有防止块开头出现空行的规则?
- python - 在 Python 2 中获取不必要的引号
- odoo - 如何在 odoo 10.0 中重新评估已完成的库存
- angularjs - 角度选择选项类表达式
- ruby-on-rails - Rails alias_attribute 在 RSPEC 中不起作用
- sql - 将 OUTER APPLY 转换为 Redshift