美文网首页大数据,机器学习,人工智能程序园
深度学习与金融市场——最初的梦想CNN

深度学习与金融市场——最初的梦想CNN

作者: Q科技 | 来源:发表于2019-02-22 20:36 被阅读0次

          相信每一个进入到深度学习领域的同学都不可避免的使用过CNN,并且每个人也许都试过深度学习的101--手写数字识别。这是第一个让我们见识到深度学习的神奇的一个模型,一个简单的卷积池化全连接就让模型拥有了不错的识别准确率,这即便是用传统算法,也不是一日之功。

          废话少絮,我们先来看一下一个简单的CNN模型是怎么样的!其实也很简单,图像一般有3个通道,对每个通道进行卷积,然后进行最大池化,当然前面两个过程可以重复,然后是全连接,而后用softmax进行分类。

          那么我们怎么用CNN来构建一个股票预测模型呢?也非常简单,我们用选取一定天数的技术指标作为输入,关于技术指标,大家可以用TA-lib来获取,至于选多少个技术指标,大家可以用随机森林或者SVM来进行筛选。假如我们选定了10个技术指标,我们用30天的数据来预测1天的涨跌!那么我们的输入就是一个30x10的矩阵,类似的我们可以对它做二维卷积。我们用两层的卷积层,用2x2的Max polling,全连接后用softmax输出两个分类,也就是说,我们的分类是一个长度为2的one-hot向量。

          我们的模型建立好了之后,我们用keras来实现这段代码!实现起来非常简单!我们选用3x3的卷积核,用两层的卷积,每层我们都做一个2x2的池化。

    model = Sequential()

    model.add(Conv2D(32, kernel_size=(3, 3), strides=(1, 1), activation='relu', input_shape=(,30,10))

    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))

    model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))

    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Flatten())

    model.add(Dense(1024, activation='relu'))

    model.add(Dense(2, activation='softmax'))

          那么这个模型的表现如何呢?很遗憾的告诉大家,准确率高的会有57%左右。但基本上准确率都分布在50%左右! 在我用相对层数较多的CNN做的实验中,有一次我对训练数据进行了倒序排列,这个混账模型居然出了90%以上的准确率。让几年前刚接触机器学习的我高兴的夜不能寐,当时还没有tensorflow和keras,还是用的python的机器学习库。这显然是不可能的,因为回测的年化收益率超过了10000倍!没有无缘无故的欺骗,原因是因为透露这种方式透露了未来的数据。那么有同学要问了,57%的准确率有没有可操作性呢?或者说回测的收益率如何呢?事实上可以告诉大家,57%的准确率收益已经非常的可观。但是泛化能力不行,仅仅停留在测试结果还不错,也就是说其实是过拟合的!

          有同学要问了,看了这篇文章感觉还是一头雾水呢?卷积是一个什么样的过程?池化又是一个什么样的过程?什么又是全连接?softmax是什么原理?我们先来看几张图,简要的来解释一下。卷积其实是一个很简单的矩阵运算过程,大家可以看下图,这是卷积核做卷积的过程。

    池化就更简单了,2x2最大池化也就是保留4个值里最大的,这是一种特征值提取方法。

    全连接则是和上一层的所有神经元都相连,怎么来理解呢,就是将所有的特征都取出来。

    Softmax是干什么呢?其实很简单,将全连接的输出转化为相对概率。我们这个例子里会出现两个相对概率,最后就看谁大了。

    当然我们这里只是简单通俗的解释了一下这些基本概念,后续会有一片文章系统的来讲解这些概念。了解更多深度学习和量化知识,请移步我的星球:AI量化(https://t.zsxq.com/RvfY37y) 星球限时免费,如需加入,请私信我获得免费邀请码!微信公众号:QTechAI

    相关文章

      网友评论

        本文标题:深度学习与金融市场——最初的梦想CNN

        本文链接:https://www.haomeiwen.com/subject/waryyqtx.html