【问题标题】:Genetic Programming - Fitness functions遗传编程 - 健身功能
【发布时间】:2011-08-07 06:53:18
【问题描述】:

假设我有一组训练示例,其中A_i 是一个属性,结果是二元的(是或否):

A1,             A2,             A3,             Outcome
red             dark            large           yes
green           dark            small           yes
orange          bright          large           no

我知道我必须定义适应度函数。但是这个问题有什么用呢?在我的实际问题中,有 10 个参数和 100 个训练示例,但这是一个类似的问题。

【问题讨论】:

  • 我给所有了解实际问题的人 5 美元。
  • @SpyrosP,我会把我的贝宝信息发给你;)。我明白他在问什么,虽然我没有答案……但是
  • 将 A1、A2、A3 视为观察变量。观察这些变量,您还会看到它们具有特定的结果。 A1 = 一些人车的颜色,A2 = 天空暗还是亮,A3 = 他开的是大车还是小车。现在假设您的所有数据都来自车祸,您的结果是“这个人是否因为车祸而需要去医院”。使用输入和结果,您尝试构建一个函数(模型)来预测未来是否需要去医院,如果他崩溃了。这很做作,但应该可以帮助您理解
  • @SpyrosP - OP 想要生成一个程序,它接受 i 参数 [A_1 - A_i] 并返回是或否。
  • @SpyrosP 我得到那 5 块钱了吗? ;)

标签: artificial-intelligence machine-learning genetic-algorithm genetic-programming


【解决方案1】:

我认为这里的混乱来自这样一个事实,即通常适应度函数会给你一些标量,有时是离散的规模,但从来没有二进制是/否(或真/假)。从这个意义上说,这看起来更像是一个用神经网络(或者可能是贝叶斯逻辑)来解决的“分类”问题。话虽如此,您当然可以设计一个 GA 来进化任何类型的分类器,并且适应度函数基本上可以表示为对总评估的正确分类。

另一种纯 GA 方法(可能与问题更相关)是将整个分类规则集编码为遗传算法的给定个体。从这个意义上说,适应度函数可以表示为一个标量,表示手头的给定候选解决方案有多少是/否分类正确,等等。类似的方法可以在这篇论文Using Real-Valued Genetic: Algorithms to Evolve R,de Sets for Classification中找到。

示例(一种可能的编码方式):

A1,             A2,             A3,             Outcome
red             dark            large           yes
green           dark            small           yes
orange          bright          large           no

编码:红色 = 000,深色 = 001,大 = 010,绿色 = 011,小 = 100,橙色 = 101,亮 = 111 等。 结果:是 = 1,否 = 0

染色体:

A1,             A2,             A3,             Outcome
000             001             010             1
011             001             100             1
101             111             010             0

以上所有内容都被转换为候选解决方案:

000001010-1/011001100-1/101111010-0

您将生成一组随机的这些,并通过测试整个规则集的适应度(规则集中的正确分类/总分类)以您喜欢的方式进化它们(在此处小心选择您的交叉策略!)。

我还建议您收听binary solo,让您有心情。

注意:我非常怀疑这是否适用于由 3 条规则组成的规则集,对于 GA 来说不够广度。

【讨论】:

  • @JohnIdol 感谢您的回答。如果我选择一个染色体设计,使三个示例分别为 100101010、010100110、001010101(所以第一个示例是 100,因为第一个属性是红色,然后是 10,因为第二个属性是深色,然后是 10,因为第三个属性很大,然后10,因为这是一个“是”的例子)那么你认为你可以想出适用于其中一个例子的适应度函数,以便我能更好地理解你的意思吗?我也会看看这篇论文。为此感谢 +1 :)。
  • 轻微修正:适用于初始化随机假设的适应度函数。我可以编一个:010101010。
  • 我用一个例子编辑了答案。是的,您会生成一堆随机二进制字符串作为开始并将它们提供给 GA。希望这会有所帮助!
  • 我发现二进制独奏非常鼓舞人心:)
  • GA方案或许可以解决vivid的问题。然而,基于所有可能的属性组合查看规则意味着搜索由所有假设组成的假设空间。因此,学习器中唯一的偏差是通过交叉/变异算子引入的,这可能是不自然的并且可能不会导致良好的泛化。为了提供帮助,请根据您对问题的领域知识考虑一组受限(参数化)规则,从而引入更多偏见。例如。由范围/截止值或属性对(差异)组成的规则并演变这些参数
猜你喜欢
  • 2018-04-07
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 2019-11-23
  • 2017-10-25
  • 2016-09-11
  • 1970-01-01
  • 2011-07-09
相关资源
最近更新 更多