用matlab进行遗传算法如何将分类精度用作适应度函数

时间:2012-04-16 16:08:54

标签: algorithm matlab classification genetic-algorithm

我有一个问题,我想用matlab遗传算法工具箱解决,我不知道如何解决它。 我想以最大化函数的方式计算公式中的3个系数,该函数是SVM分类模型的分类精度。系数的公式是a * A + b * B + c * C,其中a,b,c是我想要找到它们的优化值的系数,A,B,C是数据集的3个属性的值。我也有约束a + b + c = 1和a,b,c> 0

我应该如何使用遗传算法来解决这个问题?

2 个答案:

答案 0 :(得分:2)

首先需要随机生成初始可行解决方案,作为第一代。

这些可行解决方案中的每一个都应该满足a + b + c = 1a, b, c > 0

然后根据您的健身功能,评估每个答案,并选择更好的答案作为“父母”。对这些父母应用GA技术,如“交叉”或“突变”,以产生一群后代,作为下一代。

重复此过程一段时间,例如500代。

例如,您可以定义变量fitness,值越高意味着其对应的候选项是更合适的解决方案。由于您正在最大化此功能,因此:

适应度= a * A + b * B + c * C

在每个GA操作(交叉,变异等)中,请记住始终产生满足初始约束的新候选项(a + b + c = 1a, b, c > 0)。

答案 1 :(得分:2)

根据我的经验,最好的解决方案之一是实现MATLAB的GA。生成GA工具箱是为了寻找这种功能的最小值,但通过使用对称性,它可以最大化您正在寻找的功能。请按照以下步骤操作:

  • A,B,C =输入数据
  • 归一化a,b,c,导致a + b + c = 1
  • 您的健身功能是 A + b B + c * C并定义
  • 定义适合您的nvars
  • 将LB(下边界)放在您的案例[0 0 0]中,即a,b,c> 0
  • 运行[x,fval] = ga(...)那里的x将是最终结果x = [a b c]

如果有任何问题,请发电子邮件给我以获取更多帮助:mahdigh242@yahoo.com

希望最好的