我正在尝试解决预算分配问题,其中预算需要在 20 种不同的营销产品之间分配。我有一个 xgboost 模型,它接受预算(以及一些预先计算的其他变量)来预测最终的销售额。我需要选择 n (n<=20) products out of 20 in such a way that the overall sales is maximized.
我正在尝试按比例分配预算,例如 10% 的预算分配给产品 1,5% 的预算分配给产品 2 等。有一个函数可以计算为每个产品分配的最大预算比例。
我尝试使用 Gekko,但 xgboost 不支持 Gekko 数据类型,因此会引发错误。由于时间和内存限制,我无法真正创建该空间内所有可能分配和搜索的组合。
我尝试使用 scipy 但它不尊重这方面的界限甚至约束。还有其他方法可以解决这个问题吗?
不幸的是,Gekko 目前不支持 xgboost 或其他基于树的方法。由于后端求解器使用基于梯度下降的方法,因此模型的决策函数需要可微分并可使用 Gekko 变量重写。到目前为止,高斯过程回归、支持向量回归、线性回归和神经网络已集成到 Gekko 中:https://gekko.readthedocs.io/en/latest/ml.html。我建议您如果可能的话,使用其中之一来重塑您的问题,或者使用其他基于启发式的求解器来解决您的优化问题。
这听起来更像是一个优化问题,而不是一个机器学习问题。 我建议使用 optuna 包来解决这个问题。
https://optuna.org/#code_examples
这样您就可以让 optuna 建议您的预算比例来优化您的整体销售额。
祝你好运!