写在前面的话,前面我们讲了一些量化软件的操作,但是还有一些朋友对于量化交易比较模糊,但是这边暂时不打算做扫盲课程,扫盲课程特别多的,有耐心看的,就能走到我这里,没有耐心看的,就不等了。基本上稍微对量化了解更深一点,就会到机器学习门槛,但是对于什么数据分析,KNN算法一脸迷茫,接下来,这边就以机器学习为起点,开始我们的量化交易实战。朋友们是不是有这么一个疑问:如果掌握足够多的数据是不是可以用机器学习来预测股价的涨跌和涨幅了?机器学习技术就是使用样本数据训练模型,并且让模型对新样本做出预测的技术。接下来,西西将和大家一起探讨一些机器学习在交易中的基本应用。
对于非计算机专业的朋友来说,这部分是完全陌生的领域,但是我相信能开始了解机器学习的朋友来说,其实并不困难。如果本身对机器学习有基本概念的朋友,可以跳过这部分看后面的内容。在机器学习领域,有监督学习(supervised learning)和无监督学习(unsupervised learning)是常见的两种方法。看这个图片,我相信绝大部分的人都可以对这些动物进行分类。这是因为在我们的认知中,每种动物都有了一个标签(label),例如蝴蝶,老虎,猫。这些标签对应不同的特征(feature),例如大扑棱翅膀对应的标签就是蝴蝶,所有符合大扑棱翅膀的都会放在蝴蝶这个标签当中,这种有已知标签的任务就是有监督学习的一种。我们再对这些零件进行分类,我相信大部分的朋友还是不知道的。这种让模型通过观察特征将它们放入不同类别的过程,就是无监督学习的一种。
在有监督学习当中,常见的两种任务就是分类(classification)和回归(regression)。
其中,分类任务指的是,给定样本的分类标签,训练模型使其可以将新的样本归入正确的分类中--这时模型的目标是离散的;而回归任务指给定样本的目标值,训练模型使其可以预测出新样本对应的数值--这时模型的目标是连续的。
用我们股市实战的语言来说,假如要预测某只股票在未来会“涨”还是会“跌”这时模型所做的就是分类的工作,但如果要预测某只股票未来会涨1元,还是8角8分,还是-5角,这时模型所做的就是回归的工作。
如果使用算法来进行交易的话,我们最关心的就是模型是否可以准确地预测出股票的涨跌或者涨幅。实际上,模型是不可能做到百分之百准确的,这就需要我们对模型的性能进行评估,以便找到最可用的模型。要达到这个目的,我们就需要将掌握的数据集(dataset)拆分为训练集(trainset)和验证集(testset),使用训练集训练模型,并使用验证集来评估模型是否可用。
举一个例子,假如西西有某只股票100天的价格数据,就可以将前80天的数据作为训练集,将后20天的数据作为验证集,同时评估模型分别在训练集与验证集中的准确率。
如果模型在训练集中的得分很高,而在验证集中的得分很低,就说明模型出现了过拟合(over-fitting)的问题;
而如果模型在训练集和验证集中的得分都很低,就说明模型出现了欠拟合(underfitting)的问题。
要解决这些问题,我们就需要调整模型的参数、补充数据,或者进行更细致的特征工程。