我写了一个 GA 来模拟一段时间(5 年)内的少数股票(4)。GA 能够以多快的速度找到训练数据的最佳解决方案令人印象深刻,但我也知道这主要是由于它在训练阶段倾向于过度拟合。
但是,我仍然认为我可以采取一些预防措施,并对同期一组看不见的测试股票进行某种预测。
我采取的一项预防措施是:当可以在同一天购买多只股票时,GA 只从列表中购买一只,并随机选择这只。我认为这种随机性可能有助于避免过度拟合?
即使过拟合还在发生,在最初几代的 GA 中不应该不存在,因为它还没有机会过拟合吗?
作为说明,我知道没有免费午餐定理,它证明(我相信)没有完美的参数集可以为两个不同的数据集产生最佳输出。如果我们更进一步,这个无免费午餐定理是否也禁止泛化?
下图说明了这一点。->蓝线是GA输出。->红线是训练数据(由于前面提到的随机性略有不同) ->黄线是顽固的测试数据,没有泛化性。事实上,这是我能制作的最讨人喜欢的图表。
y 轴是利润,x 轴是根据各自的利润从最差到最好(从左到右)排序的交易策略(在 y 轴上)
到目前为止,我收到的一些最好的建议(感谢 seaotternerd)是专注于前几代并增加训练示例的数量。下图有 12 个训练库存,而不仅仅是 4 个,并且只显示了前 200 代(而不是 1,000 代)。同样,这是我能制作的最讨人喜欢的图表,这一次选择压力适中。它当然看起来好一点,但也不是很棒。红线是测试数据。