【发布时间】:2023-03-04 12:23:01
【问题描述】:
我正在尝试使用 Matlab GPTIPS 框架解决分类问题。 到目前为止,我设法构建了合理的数据表示和适应度函数,每类的平均准确率接近 65%。
我现在需要的是一些帮助解决两个困难:
-
我的数据有偏差。基本上我在解决二进制分类问题,只有 20% 的数据属于 1 类,而其他 80% 属于 0 类。我最初使用预测的准确性作为我的适应度函数,但它真的很糟糕。我现在最好的是
适应度 = 0.5*(PositivePredictiveValue + NegativePredictiveValue) - const*ComplexityOfSolution
请告知,我该如何改进我的功能以纠正数据偏差。
- 第二个问题是过拟合。我将我的数据分为三部分:训练(70%)、测试(20%)、验证(10%)。我在训练集上训练每个染色体,然后在测试集上评估它的适应度函数。这个例程让我在测试数据上达到 0.82 的适合度,以获得人群中最好的个体。但同一个人在验证数据上的结果只有 60%。 每次在生成新种群之前,我都会添加对最佳个体的验证检查。然后我将验证集的适应度与测试集的适应度进行比较。如果差异大于 5%,那么我会增加适应度函数中解决方案复杂性的惩罚。但这没有帮助。 我还可以尝试在每一代使用验证集评估所有个体,并简单地删除过度拟合的个体。但是我看不出我的测试和验证数据之间有任何区别。在这里还能做什么?
更新:
对于我的第二个问题,我发现了很棒的文章 "Experiments on Controlling Overtting in Genetic Programming" 以及一些文章作者关于在 GP 中处理过度拟合的想法,它具有令人印象深刻的评论,其中引用了许多解决该问题的不同方法。现在我有很多新想法可以尝试解决我的问题。 不幸的是,仍然找不到任何关于选择合适的适应度函数的方法,该函数将考虑到我的数据中不平衡的类比例。
【问题讨论】:
标签: classification genetic-algorithm genetic-programming