作为一项学习练习,我计划实施一种机器学习算法(可能是神经网络)来预测用户根据买入,卖出和交易时间获得的交易股票。下面的数据集是我制定的测试数据。
首字母缩写词:
tab=millisecond time apple bought
asb=apple shares bought
tas=millisecond apple sold
ass=apple shares sold
tgb=millisecond time google bought
gsb=google shares bought
tgs=millisecond google sold
gss=google shares sold
培训数据:
username,tab,asb,tas,ass,tgb,gsb,tgs,gss
a,234234,212,456789,412,234894,42,459289,0
b,234634,24,426789,2,234274,3,458189,22
c,239234,12,156489,67,271274,782,459120,3
d,234334,32,346789,90,234254,2,454919,2
分类:
a earned $45
b earned $60
c earned ?
d earned ?
目标:预测用户收入c& d基于训练数据
我应该在此数据集中添加任何数据点吗?我应该使用替代数据?因为这只是我自己创作的一个学习练习,可以添加任何可能有用的功能。
这些数据需要标准化,还有其他我应该注意的概念吗? 也许不应该将时间用作特征参数,因为股票可以根据时间上下跳动。
答案 0 :(得分:3)
您可能希望按以下顺序解决问题:
如果你能做到1)特定股票,可能它是2)的一个很好的起点。 3)可能是你的目标,但我把它放在最后,因为它更复杂。
我会在下面做一些假设,并着重于如何解决1)希望。 :)
我假设在每个时间戳都有一个包含所有可能特征的向量,例如:
我假设你在每个固定的时间间隔都有几乎所有上述功能。
我认为像lstm这样的神经网络在这里非常重要。
答案 1 :(得分:1)
不要使用用户名和培训数据 - 网络可能会在用户名和$赚取之间建立关联。包括它将考虑用户输出决策,而排除它确保网络将能够预测任意用户赚取的$。
答案 2 :(得分:0)
使用您建议的参数似乎无法预测收益。
主要原因是输入参数与输出值无关。
您输入的值与自身相矛盾 - 考虑到这种情况,对于相同的输入,您可能会期望不同的输出值吗?如果是这样,您将无法预测此输入的任何输出。 让我们走得更远,交易者的收益不仅取决于买卖股票的份额,还取决于每个买入/卖出的股票的价格。当我们向神经网络提供两个等于输入但需要不同输出时,这将带来我们的问题。
如何在这种情况下定义'好'参数来预测所需的输出? 我建议首先寻找进行此类估算的人,然后尝试定义他们考虑的参数列表。 如果你成功,你将得到一个巨大的变量列表。 然后你可以尝试用神经网络建立一些模型。
答案 3 :(得分:0)
除了规范化,你还需要扩展。我给你的另一个问题是股票分类。在您的示例中,您提供的Google和Apple被视为blue-chipped个股票。我想澄清一下,你想预测只为谷歌和苹果赚钱或预测两种股票的任何组合?
如果您只想对谷歌和苹果进行预测并提供您拥有的数据,那么您只能应用某种recurrent neural network的规范化和缩放。经常性NN在预测任务方面比使用反向传播训练的简单前馈模型更好。
但是如果您想将训练算法应用于谷歌和苹果,我建议您按照某些标准将训练数据分成若干组。划分的一个例子可以是根据股票的资本化。如果你想进行大写分割,你可以制作五组(例如)。如果你决定制作五组股票,你也可以应用等边编码,以减少NN学习的维数。
您可以想到的另一种分组可以是股票的操作区域。例如农业,技术,医疗,高端,旅游团体。 假设您决定按照提及的方式进行分组(我的意思是农业,技术,医疗,高端,旅游)。然后五组将为NN输入五个条目输入图层(所谓的thermometer encoding)。
让我们说你想养活农业股票。
然后输入将如下所示: 1,0,0,0,0,x1,x2,....,xn
其中x1,x2,....,xn - 是其他条目。 或者如果你应用等边编码,那么你将减少一个维度(我懒得描述它的外观)。
转换神经网络条目的另一个想法可能是温度计编码。
还有一个想法要记住,因为通常人们会在交易股票时放松,因此您的数据集会有偏差。我的意思是如果你只是随机选择10个交易者,他们都可能是输家,你的数据集将不具有完全的代表性。因此,为了避免数据偏差,您应该拥有足够大的交易者数据集。
还有一个细节,你不需要传递给NN用户ID,因为NN然后学习特定用户的交易风格,并用它进行预测。
答案 4 :(得分:0)
对我来说,尺寸不仅仅是数据点。但是,您的观察可能是在线性子空间中,您只需要计算上面显示的矩阵的内核。
如果内核的维度大于数据点的数量,那么您不需要添加更多数据点。
现在还有另外一件事要看。您应该查看分类器的VC维度,不要为数据集添加太多的点。但无论如何,在这个例子中,这主要是理论上的,我只是在开玩笑。