2016-02-13 27 views

回答

0

如果您的目标是只选择最相关的属性,那么您绝对可以依赖遗传算法,其中您的遗传表示(也称为“遗传密码”或“染色体”)是一个二进制字符串。这意味着某个属性可以存在(选择)或不存在(未选中)。

你的遗传密码确实将是长度为10的二进制字符串,你可以通过运行下面的循环选择属性的最佳设置:

  1. 导入原始数据集
  2. 从数据集选择重要的特征(根据在步骤#2(*)
  3. 列车选择的特征,在步骤#1由遗传密码给出)
  4. 收缩数据集(进口)和预测的分类
  5. 评估适应度函数(例如错误率)
  6. 转到第2步,直到收敛(即几代人的最大数目已创建)

所以GA做什么,在更实际的方面,就是要创造N第一人口个人。对于每个人来说,由于这是第一批人群,遗传密码在Matlab中默认是纯随机的(或者你可以编写一个解释如何选择初始群体的函数),并且对于每个人来说,步骤#3,#4和# 5被评估。一旦每个个体与某个适应值相匹配,GA就会通过遗传算子(主要是交叉,精英主义和选择)创建下一代(即下一代个体的遗传密码)。对于下一代个体,这样的遗传密码从上一代的“最佳”(即,如果你的问题是最小化问题的最低适应值)开始评估。您可能需要检查遗传操作者,以及他们如何工作以更好地了解这种“生殖”过程。

如果你在Matlab中使用ga()函数,那么输入参数nvars将等于10; IntCon参数将具有值[1:10],因为您希望它们全部为0或1;并且输入参数option(功能gaoptimset()的输出将具有以下参数):上限是具有10个的向量,而下限是具有10个零的向量。 ga()函数将您的问题视为最小化问题,所以我建议使用错误率作为适应函数(或其他旨在最小化的其他方法)。
要指定一个二进制群体,您可以依赖gaoptimset()中的PopulationType输入,但我从未使用它,所以我建议您阅读此功能的帮助(使用gaoptimset()您可以指定群体中的个人数量以及GA在停止之前创建的代数......以及其他许多参数!)。 (*)注意:收缩数据集并不一定意味着您实际上通过遗传算法删除标记为0的列(属性)。这可能会弄乱模式之间的不相似性/距离评估。在评估不相似性度量时,您可以使用遗传代码作为模式的权重:10-特征模式乘以10-位遗传密码和将乘以零的特征将不具有任何重要性(权重)在不相似的措施。

0

RapidMiner Studio在默认存储库中附带了一些遗传算法样本。

//样品/流程/ 04_Attributes/10_EvolutionaryFeatureSelection //样品/流程/ 04_Attributes/12_EvolutionaryWeighting //样品/流程/ 06_Meta/06_EvolutionaryParameterOptimization

Optimize Selection (Evolutionary)运营商可能是使用运营商。如果您查看该操作员的帮助,则可以从那里加载示例流程。该过程选择最佳属性以最大化分类模型的性能。