【问题标题】:How do I define a fitness function?如何定义适应度函数?
【发布时间】:2011-11-11 22:11:24
【问题描述】:

我正在开展一个项目,该项目将具有一组选定的数据,并且每个数据将具有不同的属性。我将需要使用适应度函数来使用属性选择与我选择的场景最匹配的数据。

但是,我真的找不到任何解释如何定义我自己的适应度函数的网站。我所拥有的只是它是遗传算法的一部分,这就是我所拥有的。那么,这里可以指点一下吗?

【问题讨论】:

标签: artificial-intelligence genetic-algorithm evolutionary-algorithm fitness


【解决方案1】:

这是 GA 的难点(嗯,那个和数据表示),实际上你只能通过经验学习。

很明显,函数必须是衡量结果有多好的东西。特别是,它必须在广泛的数据中保持平滑 - 无论数据是什么,您的适应度函数都必须显示正确的改进方法。

因此,例如,除非答案正确,否则为零的适应度函数是不好的,因为它无法帮助您在开始时接近正确答案。

随着情况的好转而增加但不能确定最佳解决方案的适应度函数也不是很好,因为您的人口将提高到某个点然后卡住。

所以你需要坐下来,写出一些你数据的例子,然后想想你可以使用什么样的函数。您想要一些为坏数据提供低值和为好数据提供高值的东西。这在两者之间可以很好地调整。

首先尝试任何你能想到的疯狂想法,然后看看你如何将它转化为一个很好的数学形式。只需集思广益,不断尝试和迭代……您可能会发现您的第一选择并不是那么好,一旦您运行 GA,您将能够更详细地查看正在发生的事情并对其进行改进。

【讨论】:

    【解决方案2】:

    你确定你需要的实际上是一个适应度函数吗?

    正如您所说,健身功能是遗传算法中使用的东西。它用于算法的每次迭代,以评估当前人群中针对您的问题提出的所有解决方案的质量。适应度函数评估群体中单个解决方案的好坏程度,例如如果您试图通过遗传算法找出函数的 y 最小值的 x 值,则单位的适应度函数可能只是负 y 值(适应度函数值越小越高)。

    我基本上想说的是,适应度函数并没有太多地处理属性,只是评估结果。

    如果您想选择最有代表性的包含属性的数据样本,也许您还应该研究分类或聚类方法?您没有提供太多信息以何种方式表示所选场景,但也许您可以对数据进行聚类(您可以尝试 k-means 聚类算法并尝试增加聚类的数量,直到分类错误不再显着下降?)和比一旦你有场景要求就选择一个有代表性的数据集群?

    如果您提供了有关如何根据数据表示方式表示查询的更多详细信息,您可能会从某人那里得到不同(或更好)的答案。

    再一次,如果您的唯一目标是学习遗传算法或人工智能/机器学习领域的任何其他部分,您应该完全按照 phs 的建议去做,并寻找一本书、音频讲座、为此注册课程或类似的东西。

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 2015-05-01
      相关资源
      最近更新 更多