我最近发现了全科医生,觉得它很吸引人。显式学习数学表达式与隐式学习神经网络有很大的不同!我对GP如何与在线学习一起工作很感兴趣,我想既然有一个进化的过程,在线学习就会变得很自然。但是,我不确定我是否掌握了所有的细节,这让我怀疑我的直觉是否正确。因此,我认为如果一个人一次输入一个数据点,算法应该更新数学表达式,也许一次几个数据点可能会产生更好的结果。我认为gplearn的max_samples参数允许我指定要一次查看的数据点的百分比,但所有数据点都必须可用吗?如果并非所有数据点都可用,该怎么办?下面的循环会做什么呢?
While data keeps coming:
est_gp.fit(data[0], data[1])每次运行est_gp.fit时,该方法都会遍历N个可能的函数,并在每次生成期间修改函数。但是,如果它对一个数据点执行此操作,当引入新的数据点时,它是否会从以前的数据点中提取获胜的模型,并将其扔到新的群体中?
(注:在GitHub上提出了相同的问题)。
发布于 2021-07-02 00:15:09
GP是相当强大和灵活的。
与其他机器学习方法一样,当您拟合模型时,所有数据点都应该可用。适应度函数说明了模型可用的当前训练集。新的数据点可以添加到您的训练数据中,然后用于继续进化。
您需要将"warm_start“变量设置为true,以继续从当前演化状态中学习:
est_gp.set_params(generations=20,warm_start=True)
如果你只有一个数据点,进化就没有理由让旧的模型继续存在。人口将迅速收敛到只关心新数据点的模型。
https://stackoverflow.com/questions/64688079
复制相似问题