【问题标题】:Genetic algorithm with matlab how to use classification accuracy as fitness functionmatlab的遗传算法如何使用分类精度作为适应度函数
【发布时间】:2012-04-27 23:53:30
【问题描述】:

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

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

【问题讨论】:

  • 使用相同的公式生成一堆函数,但系数不同。然后使用一些评估函数对它们进行测试,保留表现最好的两个函数并从中生成下一代。
  • 感谢您的回复,但我还需要知道如何使用 matlab 进行操作。我应该如何使用 ga 中的约束以及如何对适应度函数进行编码?

标签: algorithm matlab classification genetic-algorithm


【解决方案1】:

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

  • A、B、C = 输入数据
  • 标准化 a,b,c 导致 a+b+c=1
  • 你的适应度函数是aA+bB+c*C 并定义它
  • 定义对你来说是 3 的 nvars
  • 将 LB(下边界)放在您的情况 [0 0 0] 中,即 a,b,c>0
  • 在那里运行 [x, fval]=ga(...) x 将是最终结果 x=[a b c]

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

希望是最好的

【讨论】:

    【解决方案2】:

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

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

    然后根据你的适应度函数,对每个答案进行评估,并选择更好的作为“父母”。对这些父母应用诸如“交叉”或“突变”等遗传算法技术,以产生一组后代,作为下一代。

    将此过程重复一定次数,例如 500 代。

    例如,您可以定义一个变量fitness,值越高意味着其对应的候选者是更合适的解决方案。既然你要最大化这个函数,那么:

    健身 = a * A + b * B + c * C

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

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 1970-01-01
      • 2014-09-11
      • 2023-02-20
      • 2017-09-26
      • 2011-10-07
      • 2016-02-02
      • 2017-12-16
      • 2011-04-07
      相关资源
      最近更新 更多