假设我有一组训练示例,其中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来说宽度不够。