Neural network 用Pybrain(交易算法)寻找神经网络的基本示例

Neural network 用Pybrain(交易算法)寻找神经网络的基本示例,neural-network,pybrain,quantitative-finance,algorithmic-trading,Neural Network,Pybrain,Quantitative Finance,Algorithmic Trading,我是Pybrain和神经网络的新手,在实现监督分类的简单示例时遇到困难 我有一个名为datanew的数据框架,包含9列不同的数据(日期、平均值等),最后一列是>) A2:是&否,您已经构建了[模型],但是不足以完成上述任务 A3:

我是Pybrain和神经网络的新手,在实现监督分类的简单示例时遇到困难

我有一个名为
datanew
的数据框架,包含9列不同的数据(日期、平均值等),最后一列是
,只有{0 | 1 |-1}个分类标签值

我想使用此
datanew
作为列车数据,以便标记名为
dataUnlabeled
的未标记数据帧,该数据帧包含9列不同的数据,其最后一列
label
满是0

Q1:我真的不明白,我必须在哪里使用/向神经网络提供未标记的
数据

from pybrain.datasets            import SupervisedDataSet
from pybrain.tools.shortcuts     import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer

from pybrain.datasets            import ClassificationDataSet
from pybrain.utilities           import percentError
from pybrain.tools.shortcuts     import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure.modules   import SoftmaxLayer
from pylab                       import ion, ioff, figure, draw, contourf, clf, show, hold, plot
from scipy                       import diag, arange, meshgrid, where
from numpy.random                import multivariate_normal

# INPUT  LAYER:    9 columns for the input dim,
# HIDDEN LAYER(s): 1 hidden layer,
# OUTPUT LAYER:    3 classes for the label

alldata = ClassificationDataSet( 9, 1, nb_classes = 3 )

for i        in range( datanew.index[0], len( datanew ) ):
    alldata.addSample( datanew.index[i],
                       datanew.Label[i]
                       )

tstdata, trndata = alldata.splitWithProportion( 0.25 )

ds  = SupervisedDataSet( 9, 3 )

fnn = buildNetwork( trndata.indim,
                    3,
                    trndata.outdim,
                    outclass = SoftmaxLayer
                    )

trainer = BackpropTrainer( fnn,                           # ARCHITECTURE
                           dataset     = trndata,         # DATASET.train
                           momentum    = 0.1,             # HYPER-PARAMETER
                           verbose     = True,            # UI/stdout
                           weightdecay = 0.01             # HYPER-PARAMETER
                           )
for i in range( 200 ):
    trainer.trainEpochs( i )
Q2:那么我在这里建立了一个模型


Q3:我如何“标记”名为“dataUnlabeled”的未标记数据?

您需要调用
activateOnDataset
并将您的
dataUnlabeled
数据传递给它

这是一个

TL;DR A1:将准备不充分的数据倒入准备不充分的机器没有任何实际好处(请参见下文为什么>>

A2:是&否,您已经构建了[模型],但是不足以完成上述任务

A3:
只有在您构建了一个充分构建的ANN模型(见下文第(1)段)并在(2)段中成功地使其接受了针对预期任务的严格培训后,才会开始发挥一定的作用。这将使第(3)步变得合理


让我们先揭开神经网络的神秘面纱,好吗? 如果你希望ANN引擎能为你的交易工作,在倾注大量数据并祈祷解码结果之前,先了解它的功能

永远不要高估模型。理解模型的能力(以及更好的模型能力的限制)是第一件最好的事情,在实施或只是重新使用模型之前(并试图依赖缺失的第五个元素——奇怪?并非如此,很多时候都看到“实践者”使用线性模型“学习”二次问题——没有人能用直线光束画出平滑的抛物线,只有线性标尺,对不起,永远不要……使用错误的模型会产生错误的结果……与任何数量的数据无关)

神经网络在功能上没有什么复杂,比一个被动的基础设施由几个串联的层组成,这些层完全与导线相互连接,在每个层之间的每根导线上都有一个可变电阻。 (是的,就像用烙铁和许多电线进行的无线电窃听一样肮脏)

当然,我决定将其简化一点,跳过非线性传输单元(这里有其特定的但不是主要的操作特征{sigmoid|tanh | | | | | | | | | | | | |························

-(1)ANN无源基础设施(导线+电阻器)

-(2)在(1)对(3)
(手动调整旋钮,调整每个可变电阻器)有用之前,ANN主动调整过程-需要完成的工作。。。(哎哟!)。。。达到最佳可实现状态(在ANN输出上测量的惩罚错误总量最小)

因此,设计步骤(1)被称为ANN设计,其结果是akaNN-ARCHITECTURE
巨大的,确实是巨大的努力是(2)——调谐,也称为NN-TRAINING
,它最终产生了一个这样的准静态电阻设置,在输出上提供了比迄今为止试验的任何其他机械设置更好的结果(对照所有监督的训练示例进行检查)。我有意避免提及策略、如何触及可变电阻组以及产出评估的“更好”和“最佳”指标,因为这会在此时对您造成更大的伤害,而不是非常实际的想象,你需要手动触摸和调整回路中的每一个可变电阻旋钮很多很多很多次,随着试错过程的继续,有时会提供更好的结果(一个更符合你的监督数据标签),有时恰恰相反C'est La Vie

是不是听起来那么残忍?哦,是的,先生,确实是。。。 是的,即使是一个计算机化的版本,使用几乎5 GHz的硅功率,也可能需要花费数十天的时间来处理一个相对较小的ANN,以将(2)解到某种可接受的状态(这对于算法交易领域来说比任何学术界和玩具问题都要困难得多),因此,手动方法肯定超出了实际使用范围,但很重要,因为这在机械上是精确的,与计算机化的人工神经网络培训的作用相同。


[ToDo](1)设计总结:
  • 您计划构建一个分类器-您可以选择一个神经元输出层,并迫使网络学习如何区分希望输出的三态输出{-1 | 0 | 1}
,或者您可以选择三个神经元输出层
[a、B、C]
然后选择输出值最高的一个
  • 您计划有一个或多个隐藏层,这将帮助[模型]获得灵活性,以非常非线性的方式响应wh