首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遗传分类算法

遗传分类算法
EN

Stack Overflow用户
提问于 2012-09-17 10:33:32
回答 1查看 5.4K关注 0票数 2

我试图用Matlab GPTIPS框架来解决分类问题。到目前为止,我已经成功地建立了合理的数据表示和适应度函数,每类的平均准确率接近65%。

我现在需要的是有两个困难的帮助:

  1. 我的数据有偏见。基本上,我正在解决二进制分类问题,只有20%的数据属于1类,而其他80%属于0类。一开始我用精确的预测作为我的健身功能,但它真的很糟糕。我现在拥有的最好的是 适应度= 0.5*(PositivePredictiveValue + NegativePredictiveValue) -const*复杂的解

请注意,我怎样才能提高我的功能来纠正数据偏差。

  1. 第二个问题是过度适应。我把我的数据分为三个部分:培训(70%)、测试(20%)、验证(10%)。在训练集上对每条染色体进行训练,然后在测试集上评价其适应度函数。这个例程允许我达到0.82的健康在我的测试数据,在人口中最好的个人。但同一个体对验证数据的结果仅为60%。在生成新的种群之前,我每次都添加了对最佳个体的验证检查。然后比较验证集的适应度和测试集的适应度。如果差值大于5%,则增加适应度函数求解复杂性的惩罚。但没什么用。我也可以试着在每一代人中用验证集来评估所有的个体,并且简单地去除那些被覆盖的个体。但是我看不出我的测试数据和验证数据之间有什么区别。这里还能做些什么?

更新:

对于我的第二个问题,我已经找到了伟大的文章“遗传程序设计中控制覆盖的实验”和一些文章作者关于在GP中处理过度适应的想法,它有令人印象深刻的评论,有很多引用了许多不同的方法来解决这个问题。现在我有了很多新的想法,我可以尝试解决我的问题。不幸的是,仍然找不到任何选择适当的健身功能,这将考虑到不平衡的类比例在我的数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-17 22:38:31

当基线(根据大多数样本分类为类)为80%时,65%的准确率是很差的。您需要至少实现基线分类,以便有一个比简单的模型更好的模型。

我不会惩罚复杂性。而是限制树的大小(如果可能的话)。您可以在运行过程中识别更简单的模型,比如存储具有质量和复杂性的pareto前面的模型作为其两个适应度值。

HeuristicLab中,我们已经集成了基于GP的分类,可以完成这些事情。有几个选项:您可以选择使用MSE进行分类或R2。在最新的主干构建中,还有一个评估器可以直接优化精度(确切地说,它优化了分类惩罚)。优化MSE意味着它为每个类分配一个值(1,2,3,.)并试图将该值的均方误差降到最小。这在一开始看起来并不是最理想的,但很有效。直接优化精度可能会导致更快的过度拟合。还有一个公式简化器,它允许您修剪和缩小公式(并查看该公式的效果)。

另外,它需要是家庭医生吗?你也尝试过随机森林分类或支持向量机吗?射频非常快,而且通常工作得很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12457490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档