0

我最近发现了全科医生,发现它很吸引人。显式学习数学表达式与隐式学习神经网络完全不同!我对 GP 如何与在线学习一起工作很感兴趣,我想因为有一个进化过程,所以在线学习感觉很自然。但是,我不确定我是否完全掌握了所有细节,这让我怀疑我的直觉是否正确。所以,我认为如果一次输入一个数据点,算法应该更新数学表达式,也许一次几个数据点可能会产生更好的结果。我认为 max_samples 参数gplearn允许我指定一次查看的数据点百分比,但是所有数据点都必须可用吗?如果所有数据点都不可用怎么办?下面的循环会做什么?

While data keeps coming:
   est_gp.fit(data[0], data[1])

每次运行 est_gp.fit 时,该方法都会遍历 N 个可能的函数并在每一代期间修改函数。但是,如果它对一个数据点这样做,当引入一个新的数据点时,它是否会从之前的数据点中取出获胜模型并将其投入到新的群体中?

(注意:在GitHub 上提出了相同的问题)。

4

1 回答 1

0

GP非常强大和灵活。

与其他机器学习方法一样,当您拟合模型时,所有数据点都应该可用。适应度函数考虑了模型可用的当前训练集。新的数据点可以添加到您的训练数据中,然后用于继续发展。

您需要将“warm_start”变量设置为 true 以继续从当前进化状态学习:

est_gp.set_params(generations=20, warm_start=True)

如果你只适合一个数据点,那么进化将没有理由让旧模型保持活力。人口将迅速收敛到只关心新数据点的模型。

于 2021-07-01T16:15:09.170 回答