通过机器学习(machine learning)做价格预测。

希望能提供一些最基础的建议


1)首先尽量简化数据,让每一个输入都有很规范的格式。每一个输入源必须是mean 0,variance
1。假如说不能直接用价格;要用价格的差距。这样才可以客观比较每个输入的作用。而且很多模型本来就有这个要求。


2)先排除那些没有用的输入。这很简单。把数据重新re-sample,得到两个对应的time series,A和B。算两个time
series的correlation。当然这个值越大越好。但是还有更有用的技巧:给其中的一列A添加offset。试着用各个offset再得出correlation。你会发这个offset过小过大,correlation就越小了。但是中间有一个达到最高值的offset。那就是A领先与B的平均时间。这offset小于零,说明A可以预测B。大于零说明这数据根本没什么预测能力,反而B更能预测A。通过这个可以筛选掉好多东西。


3)现在你得到一套最具有预测能力的输入。但他们的weighting还不知道。首先肯定要去试着用最简单的linear model。如果你的linear
model没用,那更高级的模型肯定也没用了,应该放弃。这linear算法的目标就是简单地得出一列weightings对吧。在某个时刻,这一列数字乘与‘现在’的value必须和未来的value有很大的correlation。所以选择一个心目中最合适的offset(假如一秒或一小时);然后直接算各个因素的correlation。拼成一列weightings。就这么简单。也可以试着不同offset,看看这模型最好能预算多久以后的value。这东西就叫linear
regression。


4)在linear
regression得到成果以后,再想象更复杂的模型。建议先从一个维度升级到两个维度。得到一个矩阵的weightings。说实话这应该已经够的了。不过如果必要追求再复杂一点的话,那真的建议decision
tree。decision tree也可以理解成heirarchical
model(层次模型?)。比如这个情况:你发现A或B越高能预测到C要涨,但好像A和B都太高的话,C反而要跌。所以必须有层次的。这decision
tree里面最推荐用random forest。这样能够在复杂程度与预测准确度之间达到最平衡的效果。


5)再高级一点就是通过完全自由连接的graph,比如neural
network。但是肯定先从简单的开始。如果直接用graph,因为connections太多太密集太复杂,很多循环之类的,导致人家很难以理解里面信息运转的道理。最好从linear到2D开始,这样每一步都更加理解数据之间的关系,更好去设计适合的结构。



6)其他的一些想法:不一定要只根据时间去预测。你所根据的时间线只需要是一个越来越大的某个东西。也可以是市场的买卖量之类的。因为买卖总量和时间一样的,只往前不往后。这样的话你不在预测多少时间以后的value而在预测多少买卖增加以后的value了。一般都比较合适。

还有一点就是:你的那个数据似乎是波浪类型的。这就没有符合第一点。应该转换成更基本的输入和输出;例如分成wavelength和amplitude两个预测对象。


作者:Lightwing <https://www.zhihu.com/topic/19712111/top-answers>






友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信