我正在尝试建立一个分类器来预测股价。我使用一些著名的技术指标生成了额外的功能,并提供了这些值以及过去机器学习算法的值。我大约有4.5万个样本,每个样本代表一个小时的ohlcv数据。
问题实际上是3类分类问题:带有买入,卖出和持有信号。我已经建立了这3个类作为基于每个时间点的(%)变化的目标。那就是:我只将最大的正(%)变化分类为买入信号,将相反的卖出信号分类为其余,作为持有信号。
但是,将这种3类目标呈现给算法会导致买卖分类器的准确性较差。为了改善这一点,我选择根据每个样本的概率手动分配类。也就是说,我根据价格是涨还是跌将目标设置为1或0。 然后,该算法针对每个样本所属类别的置信度,返回0到1之间的概率(通常在0.45到0.55之间)。然后,我为这些概率中的每个类别选择一些概率界限。例如:我选择p> 0.53归类为买入信号,选择p <0.48归类为卖出信号,而介于两者之间的任何东西作为保留信号。
该方法极大地提高了分类准确性,在某些方面达到了65%以上。但是,我没有提出一种无需大量验证集即可选择这些概率范围的方法。我尝试在3000个验证集中找到最佳概率值,这提高了分类准确性,但是验证集越大,显然测试集中的预测准确性正在降低。
因此,我正在寻找的是可以识别每个训练集的特定决策概率的任何方法,而无需大型验证集。我也欢迎任何其他有关如何改进此过程的想法。感谢您的帮助!
答案 0 :(得分:0)
您遇到的事情称为非平稳过程。市场走势取决于事件的时间。
我过去处理它的一种方法是使用不同时间块中的数据构建模型。
例如,使用第1天到第10天的数据进行训练,第11天使用数据进行测试/验证,然后向上移动一天,第2天到第11天进行训练,第12天进行测试/验证。
您可以将所有测试结果保存在一起,以计算模型的总体得分。这样,您将拥有大量的测试数据和一个可以适应时间的模型。
您将获得另外3个要调整的参数,#1用于训练的数据量,#2用于测试的数据量,#再训练数据的天数/小时/数据点数。