ale*_*ale 8 artificial-intelligence machine-learning genetic-programming genetic-algorithm
假设我有一组训练示例,其中A_i是属性,结果是二进制(是或否):
A1, A2, A3, Outcome
red dark large yes
green dark small yes
orange bright large no
Run Code Online (Sandbox Code Playgroud)
我知道我必须定义适应度函数.但这个问题是什么呢?在我的实际问题中有10个参数和100个训练示例,但这是一个类似的问题.
我认为这里的混乱,是因为我们平时的健身功能,还给你一些标来了,有时一个离散的规模,但从来没有一个二进制是/否(或真/假).从这个意义上说,这看起来更像是一个用神经网络(或可能是贝叶斯逻辑)解决的"分类"问题.这么说,你当然可以设计一个遗传算法来进化任何类型的分类器,并且适应度函数基本上将表示为对总评估的正确分类.
另一种纯粹的GA方法 - 可能与问题更相关 - 是将整个分类规则集编码为遗传算法的给定个体.在这个意义上,适应度函数可以表示为标量,表示手头的给定候选解决方案在总数上有多少是/否分类,等等.本文使用实值遗传:算法演化R,de集合进行分类,可以找到类似的方法.
示例(对此进行编码的可能方法之一):
A1, A2, A3, Outcome
red dark large yes
green dark small yes
orange bright large no
Run Code Online (Sandbox Code Playgroud)
编码:红= 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
Run Code Online (Sandbox Code Playgroud)
所有上述内容都被转换为候选解决方案:
000001010-1/011001100-1/101111010-0
Run Code Online (Sandbox Code Playgroud)
您将通过测试整个规则集的适应性(规则集中的正确分类/总分类)来生成随机的一组这些并以您喜欢的方式进化它们(请小心选择您的交叉策略!).
我还建议你听二元独奏,让你心情愉快.
注意:我非常怀疑这将适用于仅由3个规则组成的规则集,而不是GA的广度.