在训练好的机器学习模型的预测中搜索最佳参数

时间:2021-02-22 01:37:47

标签: python machine-learning optimization

我从以下电路创建了一个 ML 模型

enter image description here

作为输入,我只使用了我正在更改范围的 R3 和 R5 的值:

R3:1 到 5 R5:10 到 150,步长为 10

我的目标值是用 R5 消耗的功率与 V1 提供的功率来衡量的电路效率

一旦我训练了模型,我就对更大范围的值进行了预测,并得到了在 Z 轴上具有效率的曲面:

enter image description here

我的问题是,给定一个集合,例如:

X1=1 X2=3

这导致输出预测效率为 50%

如何自动化推荐更好价值的过程,例如:

X1=1 X2=1

产生 57% 的效率

我想在一些限制条件下执行此操作:仅在 X1 上移动 2 个步骤,在 X2 上移动 3 个步骤

1 个答案:

答案 0 :(得分:1)

这听起来像是梯度下降等优化器的工作(如果您可以在 PyTorch 或 TensorFlow 等具有自动微分功能的框架中实现您的 ML 模型,则建议这样做)。

如果基于梯度的优化器不适合您的特定功能,我建议使用 Evolutionary Algorithms。根据您问题中的描述,我建议以下选项:

所有这些算法都适用于离散搜索空间,如果它们没有提供方便的 API 来约束搜索空间,您可以通过包装模型来解决这个问题:

让你的机器学习模型成为一个函数:

f(x1: float, x2:float) -> float

你可以写一个包装函数 f_constrained 如下:

def f_constrained(x1: float, x1: float, 
                  x1_min: float, x1_max: float, 
                  x2_min: float, x2_max: float) -> float:
    if x1_min <= x1 <= x1_max and x2_min <= x2 <= x2_max:
        return f(x1, x2)
    # this assumes the objective function is maximizing the values,
    # when minimizing, return float("inf") instead
    return float("-inf")