为什么我的训练模型没有预测正确的结果?

时间:2017-10-21 17:35:08

标签: machine-learning tensorflow neural-network

我已将股票价格和日期数作为输入数据。

大约有1365个输入数据,但我的模型无法预测 m (斜率)和 b 的正确值我的回归问题,在TensorFlow中使用渐变下降优化器。

我也尝试为学习率( 0.0000000001, .., 0.1 )采用不同的值,但没有一个有效。

import matplotlib.pyplot as plt
import pandas as pd
import tensorflow as tf
import numpy as np

batch_size=8
ds=pd.read_csv("FB.csv",sep=",",header=None)
x_data=np.array(ds[0].values)
y_true=ds[1].values
x_data=np.array(x_data)
m=tf.Variable(2.2)
b=tf.Variable(0.5)
x_act=tf.placeholder(tf.float32,[batch_size])
y_act=tf.placeholder(tf.float32,[batch_size])
y_model=m*x_act + b
error=tf.reduce_sum(tf.square(y_act-y_model))
optim=tf.train.GradientDescentOptimizer(learning_rate=0.0000001)
train=optim.minimize(error)
init=tf.global_variables_initializer()
with tf.Session() as sess:
    batches=1700
    for i in range(batches):
        rand_ind = np.random.randint(len(x_data),size=batch_size)
        sess.run(init)
        feed = {x_act:x_data[rand_ind],y_act:y_true[rand_ind]}
        sess.run(train,feed_dict=feed)
    model_m,model_b=sess.run([m,b])
model_m
model_b
y_ans=(model_m*len(x_data)+1) + model_b
y_ans

1 个答案:

答案 0 :(得分:1)

在交易,量化建模和机器学习方面花费了超过20年的经验,增加了对外汇交易的决策支持,在你开始投入时间和精力之前我很少能帮助你理解方向错误。上面报告的线性回归模型存在下面详述的缺陷,如果转向少数更复杂的自回归模型(ARMA / ARIMA),甚至LSTM工具,那么将被挽救将保存一个天真的,跳过的或低估的系统识别(因为在技术控制论中称它为常见)。简单地说,任何模型设置,试图灌输一些模型行为和抽象来自非TA行为模式切换,主要是盲目和单一的处理复杂(几乎超混沌,在扩展的Lyapunov意义上)多智能体生态系统

为什么我的训练模型没有预测正确的结果?

因为你的假设是完全错误的。

没有这样的股票,表现为线性模型,而你的指示严格相反,
你问你的线性模型 yPREDICTED = m.X + b
找到 m b m 这样惩罚错误的总和就很小了。

找到了这样的 b m ,其惩罚错误总和最小,学习者,你有预先 - 选择使用,已完成它的角色。

对,这意味着,您可以在数学上确定,没有其他bm.X + b,这将产生较少的惩罚错误总和,计算如下:根据您选择的方法,在观察到的示例的可用(及其相同的使用部分)上。

虽然所有这些都是按照商定的计划完成的,但仍然 NOT 使市场
开始“服从”{ {1}}线性行为......

如果你忘记意识到这种具有讽刺意味的东西,你就会开始盲目地相信,线性模型会统治现实世界(我们在第二次见证时确实没有)。

所以 YGWYT - Y ou G et W 帽子 Y ou的Ť

如果您训练线性模型m.X + b,除了最不正确的线性模型m.X + b之外别无他法,您不会感到惊讶。

预测只需要系统地遵循模型

这意味着,所有预测必须系统地错误,只需坚持最不正确的线性模型m.X + b

Q.E.D。