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

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


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

最佳答案

我认为这里的困惑来自这样一个事实,即通常情况下,适应度函数会给您一些标量,有时是离散量,但永远不会是二进制的是/否(或是/否)。从这个意义上讲,这更像是一个用神经网络(或可能的贝叶斯逻辑)解决的“分类”问题。如此说来,您当然可以设计出一种GA来演化任何种类的分类器,并且适应度函数基本上会根据总评估的正确分类来表示。

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

示例(对此进行编码的一种可能方法):

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来说宽度不够。

08-25 05:46