不能将我的遗传算法推广到新数据

时间:2015-04-27 22:14:38

标签: statistics genetic-algorithm prediction generalization

我已经写了一份GA,用于在一段时间(5年)内对少数股票(4)进行建模。令人印象深刻的是GA能够快速找到训练数据的最佳解决方案,但我也知道这主要是因为它在训练阶段过度适应的倾向。

然而,我仍然认为我可以采取一些预防措施,并对同一时期的一组看不见的测试股进行某种预测。

我采取的一项预防措施是: 当同一天可以购买多个股票时,GA只会从列表中购买一个,并随机选择一个。我认为这种随机性可能有助于避免过度拟合?

即使仍然发生过度拟合,在GA的最初几代中不应该缺席,因为它还没有机会过度适应吗?

作为一个注释,我知道没有免费的午餐定理,它证明了(我相信)没有完美的参数集可以为两个不同的数据集产生最佳输出。如果我们进一步考虑这个问题,这个非免费午餐定理是否也禁止概括?

下图说明了这一点。 - >蓝线是GA输出。 - >红线是训练数据(由于上述随机性而略有不同) - >黄线是顽固的测试数据,没有显示出一般性。事实上,这是我可以制作的最讨人喜欢的图表。

y轴是利润,x轴是根据各自的利润(在y轴上)从最差到最好(从左到右)排序的交易策略 enter image description here

到目前为止我收到的一些最好的建议(感谢seaotternerd)是关注前几代并增加训练样例的数量。下图中有12个培训股而不仅仅是4个,仅显示前200代(而不是1,000代)。同样,它是我能够制作的最讨人喜欢的图表,这次是中等选择压力。它看起来确实好一点,但也不是很棒。红线是测试数据。

enter image description here

1 个答案:

答案 0 :(得分:0)

过度拟合的问题在于,在单个数据集中,除了在一般情况下实际上变得更好之外,过度拟合是非常具有挑战性的。在许多方面,这更像是一门艺术,而不是一门科学,但这里有一些通用的指导方针:

  • GA将学会完全按照你的健身方式做。如果你告诉它真的善于预测一系列股票,它就会做到这一点。但是,如果你继续交换不同的股票来预测,你可能会更成功地进行推广。有几种方法可以做到这一点。可能最有希望减少过度拟合的结果是在人口中强加空间结构并评估不同细胞中的不同测试用例,如SCALP algorithm。您也可以按时间切换测试用例,但是我采用这种方法会产生更多混合结果。
  • 你是正确的,过早适应应该不是一个问题。通常,运行GA的时间越长,过度拟合就越多。通常,人们倾向于假设在过度拟合的死记硬背发生之前首先学习一般规则。但是,我并不认为我曾经看到过这种严格的研究 - 我可以想象一种过度拟合比找到它首先发生的一般规则要容易得多的情况。不过,我不知道它有多常见。提早停止也会降低GA寻找更好的通用解决方案的能力。
  • 使用更大的数据集(四个股票不是那么多)将使您的GA不易过度拟合。
  • 随机性是一个有趣的想法。这肯定会损害GA找到一般规则的能力,但它也应该减少过度拟合。如果不了解更多关于算法细节的信息,很难说哪种算法会胜出。
  • 对于没有免费的午餐定理,这是一个非常有趣的想法。我不是百分百肯定,但我认为它确实适用于某种程度 - 更好地拟合某些数据会使您的结果更加适合其他数据。然而,与可能的股票行为范围一样广泛,它通常比所有可能的时间序列的范围窄得多。这就是为什么可以有优化算法的原因 - 我们正在使用的给定问题倾向于产生相对于可能数据的整个空间相对紧密地聚集在一起的数据。因此,在我们真正关心的那组输入中,有可能变得更好。通常有一个上限,你可以做多少,你有可能达到数据集的上限。但是在某种程度上可以推广,所以我现在还不会放弃。

结论:我认为改变测试案例是最有希望的(虽然我有偏见,因为这是我的主要研究领域之一),但它也是最具挑战性的解决方案,实现明智的。因此,作为一个更简单的修复,您可以尝试更快地停止进化或增加数据集。