2

我写了一个 GA 来模拟一段时间(5 年)内的少数股票(4)。GA 能够以多快的速度找到训练数据的最佳解决方案令人印象深刻,但我也知道这主要是由于它在训练阶段倾向于过度拟合。

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

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

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

作为说明,我知道没有免费午餐定理,它证明(我相信)没有完美的参数集可以为两个不同的数据集产生最佳输出。如果我们更进一步,这个无免费午餐定理是否也禁止泛化?

下图说明了这一点。->蓝线是GA输出。->红线是训练数据(由于前面提到的随机性略有不同) ->黄线是顽固的测试数据,没有泛化性。事实上,这是我能制作的最讨人喜欢的图表。

y 轴是利润,x 轴是根据各自的利润从最差到最好(从左到右)排序的交易策略(在 y 轴上) 在此处输入图像描述

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

在此处输入图像描述

4

1 回答 1

1

过拟合的问题在于,在单个数据集中,除了在一般情况下实际上变得更好之外,很难区分过拟合。在许多方面,这更像是一门艺术而不是一门科学,但这里有一些一般准则:

  • GA 将学会完全按照您的健身要求去做。如果你告诉它非常擅长预测一系列股票,它就会做到这一点。但是,如果您不断交换不同的股票进行预测,那么您可能会更成功地对其进行概括。有几种方法可以做到这一点。在减少过度拟合方面,可能最有希望的结果是将空间结构强加于总体并评估不同单元中的不同测试用例,如SCALP 算法。您也可以按时间切换测试用例,但我用这种方法得到了更多的混合结果。
  • 你是正确的,过度拟合在早期应该不是问题。通常,运行 GA 的时间越长,越可能出现过度拟合。通常,人们倾向于假设先学习一般规则,然后再死记硬背过拟合。但是,我认为我实际上从未见过对此进行过严格的研究——我可以想象一个场景,过度拟合比找到首先发生的一般规则要容易得多。不过,我不知道这有多普遍。过早停止也会降低 GA 找到更好的通用解决方案的能力。
  • 使用更大的数据集(四只股票并不多)将使您的 GA 不太容易受到过度拟合的影响。
  • 随机性是一个有趣的想法。它肯定会伤害 GA 找到一般规则的能力,但它也应该减少过度拟合。如果不了解更多关于算法细节的信息,很难说哪个会胜出。
  • 这是关于没有免费午餐定理的一个非常有趣的想法。我不是 100% 肯定,但我认为它在某种程度上确实适用于此 - 更好地拟合某些数据会使您的结果与其他数据更匹配,这是必要的。然而,尽管可能的股票行为范围很广,但它通常比所有可能的时间序列的范围要窄得多。这就是为什么可以有优化算法的原因——我们正在处理的给定问题往往会产生相对于可能数据的整个空间相对紧密地聚集在一起的数据。因此,在我们真正关心的那组输入中,有可能变得更好。通常,您的表现有某种上限,并且您可能已经达到了数据集的上限。

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

于 2015-04-27T23:05:03.217 回答