今天看了一篇论文我觉得挺有意思,一方面是讲的股票预测相关,另一方面是把深度学习和知识图谱相结合解决一个问题。通常知识图谱和深度学习很少有交集,一般是独立发展的两个人工智能领域解决问题的手段,两者如何一起解决问题呢?这个也引发了我的好奇心,因为一直对知识图谱这个领域念念不忘,在《机器学习实践应用》最后一章还要特意加入知识图谱的内容。
论文的名字叫:<Knowledge-Driven Stock Trend Prediction and Explanation via Temporal Convolutional Network>有兴趣的同学可以下载来自己也看一看。
KDTCN其实是KD和TCN的缩写,KD指的是Knowledge-Driven,也就是知识图谱。TCN是Temporal Convolutional Network,字面意思是临时卷积网络。其实在量化领域,已经有很多成熟的模型了,比如最早的Arima,到后来的RNN,再到LSTM,这些模型都是把股票预测看作是一组结构化的时间序列的时序预测问题。
KDTCN的出现,肯定是为了解决股票预测领域的一些痛点,我觉得有两点。其一是重大突发事件对股价的影响,如果单一把股票预测看成时间序列问题,一些突发问题的影响其实很难通过时序分析得到。比如喜闻乐见看到的,川普Twitter信息导致股价大跌:
发掘这种突发事件的最好的办法就是通过知识图谱去解析实时新闻,挖掘出新闻内部的核心属性,并且判断其对股票局势的影响。
另一个痛点是时间序列模型很难从数学公式层面发掘股价增或者跌的拐点,如下图所示
这个可能需要将时序问题转为分类问题解决,通过TCN模型做分类。这也就引出了KDTCN模型的设计架构。
网络结构分为两部分,左边是一个知识图谱的结构,右边是TCN网络。
首先介绍下知识图谱部分。输入新闻,然后将新闻转换成Tuples,Tuples是个subject-predicate-object结构。举个例子,“Britain exiting from the EU”,英国脱欧这件事对股市影响很大,那这件事的Tuple=(s=Britain,p=exiting from,o=EU)。接着把这些个Tuple输入到构建好的Knowledge base里,就可以得到Event embedding,有了embedding就进入到熟悉的二分类场景的应用了。整体过程参照下图:
再说TCN,TCN是一个卷积神经网络,它的特点是每一层的输入和输出神经元的个数都相同,论文中表达的意思是这样不会出现信息丢失。另外其它跟CNN不同的地方我也没太看懂,应该主要是residual connection部分吧,这块还得再研究研究。
最终整个网络的作用是把股票走势预测问题变成了一个二分类问题去解决:
如果后续股价会涨,则y=1,否则y=0。通过把新闻事件输入到知识图谱中得到Event embedding,以及将历史价格数据向量化得到Price embedding,最终的训练集变成了Event embedding+Price embedding,通过TCN去做分类训练,得到最终的知识图谱网络和分类模型。
用知识图谱去解析实时要点新闻,并生成Event embedding加入到训练,这一点还是比较有创意的。