我正在尝试构建一个分类器来预测股价。我使用一些众所周知的技术指标生成了额外的功能,并将这些值以及过去点的值输入到机器学习算法中。我有大约45k个样本,每个样本代表一个小时的ohlcv数据。
这个问题实际上是一个三类分类问题:买入、卖出和持有信号。我根据每个时间点的(%)变化构建了这3个类作为我的目标。也就是说:我只将最大的正(%)变化归类为买入信号,相反的是卖出信号,其余的则归类为持有信号。
然而,将该3类目标呈现给算法已经导致购买&销售分类器。为了改进这一点,我选择根据每个样本的概率手动分配类。也就是说,我根据价格上涨还是下跌将目标设置为1或0。然后,该算法返回一个介于0和1之间(通常在0.45和0.55之间)的概率,作为每个样本所属类别的置信度。然后,我在这些概率中为每个类别选择一些概率界。例如:我选择p>0.53作为买入信号,p<0.48被分类为卖出信号,而介于两者之间的任何信号都被分类为持有信号。
这种方法极大地提高了分类精度,在某些点上达到了65%以上。然而,在没有大型验证集的情况下,我未能想出一种选择这些概率边界的方法。我尝试在3000的验证集中找到最佳概率值,这提高了分类精度,但验证集越大,很明显测试集中的预测精度正在下降。
因此,我正在寻找的是任何一种方法,通过这种方法,我可以在没有大型验证集的情况下,辨别每个训练集的具体决策概率。我也欢迎关于如何改进这一进程的任何其他想法。谢谢你的帮助!
您所经历的过程称为非平稳过程。市场走势取决于事件发生的时间。
我过去处理它的一种方法是用不同时间块中的数据构建模型。
例如,使用第1天至第10天的数据进行训练,第11天的数据用于测试/验证,然后向上移动一天,第2天至第11天进行训练,以及第12天进行测试/验证。
您可以将所有测试结果保存在一起,以计算模型的总体分数。通过这种方式,您可以获得大量的测试数据和一个能够适应时间的模型。
你还有3个参数需要调整,#1需要使用多少数据进行训练,#2需要测试多少数据,#你重新训练数据的天数/小时/数据点。