正文
模型测试:
这里我们直接使用sklearn的SVM包中的分类模型SVC。在训练模型后,使用score函数,获得的预测准确率为:0.68。超过了0.5,所以可以认为该模型是初试有效的,值得进一步测试。
我们用2016年1月到12月来回测,得到上图,发现该模型是有效的,此时的夏普比率为0.99.,大于纯随机策略的-0.72,同时,我们的策略线(蓝线)确实明显优于HS300大盘指数(黑线)。
调整参数:
接下来,我将调整SVM的参数C,以便进一步提高SVM对于该模型的表现,观察随着C的变化,Score值的变化趋势:
我首先做了一个图,观察在C值在1~1000范围内,得到的Score值的变化:
我们发现,模型表现随着C值的提高而提高,在C值为360左右的时候,表现达到了最高。
接下来调整gamma,也是相似的方法,我们观察gamma在0~10之间的变化,得到下图:
可以看出,gamma在1.8左右的时候,score表现得最好。
至于核函数,通常都是默认核函数最佳,这里由于是第一个模型,还是检验一下吧:
果不其然是rbf(默认的高斯核函数)是最佳的。
接下来我们用GridSearchCV来确切获得最佳的C值和gamma值:运行函数后,我们得到最佳的C值为300,最佳的gamma值为1.03。根据这两个参数,此时我们模型test后获得的score为0.76,明显高于之前的0.68。
接下来通过不同的数据集(改变数据集中的数据数量)的方法测试score的方法,判断模型是否稳健,得到下图:
发现根据数据集的不同,准确率上下摆动,摆动幅度在0.1左右。但是始终没有低于过0.72,0.72大于0.5,所以可以认为模型一定程度上是稳健的。
但是由于0.72小于0.8,低于了我们设定的阈值,所以认为SVM模型对于该问题的解决表现不够良好。
7、决策树预测:
简要介绍:
由于决策树是归纳型算法,所以当其预测的数据集如果是人类很容易理解的信息,那么决策树可以表现良好。决策树可以清晰地处理大量数据,了解不同特征的影响重要性。这种算法在特征明确,杂音小,特别熟数据量较大时,效果较好。
决策树属于局部贪婪的算法,容易过拟合,有时无法保持全局最优,所以泛化能力较差。在股票交易中使用时,应当随时更新数据,否则有可能过拟合过去的经验,对未来的预测能力下降。
模型测试:
这里我们直接使用sklearn的tree包中的分类模型DecisionTreeClassifier。在训练模型后,使用score函数,获得的预测准确率为:0.88。超过了0.5,所以可以认为该模型是初步有效的。
我们用2016年1月到12月来回测,得到下图