如何找到适合给定数据集的函数?

时间:2016-03-10 18:12:35

标签: breadth-first-search

搜索算法是广度优先搜索。我不确定如何将术语和方程式存储到打开的列表中。函数f(x)具有ax ^ e1 + bx ^ e2 + cx ^ e3 + k的形式,其中a,b,c是系数; k是不变的。所有指数,系数和常数都是0到5之间的整数。

初始状态:问题解决过程应该是来自ax ^ e1,bx ^ e2,cX ^ e3,k的任何术语。

该算法逐渐扩展列表中每个级别的术语数。 不确定如何将术语从打开的队列添加到等式中。就是那个问题。

1 个答案:

答案 0 :(得分:0)

您正在处理的一般问题属于回归分析区域,并且有几种技术可用于查找适合给定数据集的函数,包括用于查找行的常用最小二乘方法给出一个数据集的最佳拟合(一个简短的起点是related page on wikipedia,但如果你想深化这个主题,你应该看看那里的研究论文。)

如果你想坚持使用广度优先搜索算法,虽然这种方法对于这样的问题并不常见,但首先,你需要为搜索问题定义所有元素,即(参见更多信息)斯图尔特和罗素的书第3章,Artificial Intelligence: A Modern Approach):

  • 初始状态:不同术语的一些初始值。
  • 操作:在您的情况下,它应该是不同术语的变化。请注意,您应该对值的更改进行离散化。
  • 过渡功能:在给定状态和动作的情况下确定新状态的功能。
  • 目标测试:检查以确认状态是否为目标状态,以便终止搜索。在回归问题中有不同的方法来定义此测试。一种方法是设置平方误差总和的阈值。
  • 步骤费用:操作的费用。在这样一个抽象的问题中,你可以考虑在搜索图上与初始状态的未加权距离。

请注意,您应该仔细考虑这些元素,例如,它们会确定您的搜索效率,或者您是否在搜索图中有周期。

在为搜索问题定义了所有元素之后,您基本上必须实现:

  • 节点,包含有关父级,状态和当前成本的信息;
  • 扩展返回后继节点的给定节点的功能(根据转换功能,操作和步骤成本);
  • 目标测试;
  • 实际的搜索算法。在开头的队列中,您将拥有包含初始状态的节点。之后,它将使用后继节点进行更新。