本文展示了一个强大且简单的示例,说明如何使用 TensorFlow 执行线性回归。查看代码以进行你自己的实验!
作者:Christopher Shoe,Ease Inc
自 2015 年由 Google Brain 团队发布以来,TensorFlow 一直是围绕人工智能、机器学习和预测分析讨论的推动力量。凭借其灵活的架构,TensorFlow 提供了具有惊人并行性的数值计算能力,这对小型和大型企业都具有吸引力。
TensorFlow 构建在跨多个系统的有状态数据流图之上,允许并行处理——以有意义的方式利用数据,而无需 PB 级的数据。为了演示如何在没有大量数据孤岛的情况下利用 TensorFlow,我将在本文中解释如何使用 TensorFlow 构建线性回归模型。
线性回归概述
线性建模是一种相对简单的数学方法,如果使用得当,可以帮助预测建模行为。它通过允许你基于数据集中的值创建模型,然后使用该模型预测不属于你的集合的其他值来实现这一点。
在数学术语中,线性回归是一种确定变量线性组合系数的方法:
y = a 0 x 0 + a 1 x 1 + ... + a n x n
线性回归要求量之间的关系是线性的,而不是变量本身。因此,例如,我们可以将目标变量 y 拟合到多项式:
y = a 0 + a 1 x + a 2 x 2
在这种情况下,我们必须为每个数据点同时提供 x 和 x^2。例如,一颗流星划过天空的轨迹形成一条抛物线,其方程为
d = d_0 + vt + 0.5 a t 2
其中 d 是行进距离,v 是速度,a 是重力加速度(在地球表面为 9.8 m / sec 2)。我们可以使用线性回归从一组数据中确定系数 v 和 a。我们可以利用同样的方法来根据销售额确定预计库存,或者确定电影院在任何给定夜晚的预期观众人数。
TensorFlow 应用
那么现在,让我们看看 TensorFlow 能在哪些方面帮助我们。假设我们有一个基于全年电影上座率构建的数据集。
我们可以利用 TensorFlow 中的占位符来设置变量——这些变量需要在执行时填入。
X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32)
我们将设置权重和偏置,以及一个预测变量。TensorFlow 为此使用“Variable”构造函数,它最终可以是任意类型的“Tensor”。
损失函数将衡量我们的观测值与预测值在一段时间内的距离:
loss = tf.reduce_sum(tf.pow(Y_pred - Y, 2)) / (n_observations - 1)
TensorFlow 将优化器定义为一种“为损失计算梯度并将梯度应用于变量”的方法。此代码示例中使用了 GradientDescentOptimizer(参见此处的文档):
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)
我们可以创建一个会话,并让 TensorFlow 初始化图中的所有变量:
n_epochs = 1000 with tf.Session() as sess: # Here we tell tensorflow that we want to initialize all # the variables in the graph so we can use them sess.run(tf.initialize_all_variables())
最后,我们希望拟合训练数据以产生结果:
with tf.Session() as sess:
# Here we tell tensorflow that we want to initialize all
# the variables in the graph so we can use them
sess.run(tf.initialize_all_variables())
# Fit all training data
prev_training_loss = 0.0
for epoch_i in range(n_epochs):
for (x, y) in zip(xs, ys):
sess.run(optimizer, feed_dict={X: x, Y: y})
training_loss = sess.run(
loss, feed_dict={X: xs, Y: ys})
print(training_loss)
if epoch_i % 20 == 0:
ax.plot(xs, Y_pred.eval(
feed_dict={X: xs}, session=sess),
'k', alpha=epoch_i / n_epochs)
fig.show()
plt.draw()
# Allow the training to quit if we've reached a minimum
if np.abs(prev_training_loss - training_loss) < 0.000001:
break
prev_training_loss = training_loss在 Python 中使用一个简单的 show() 命令即可图形化显示我们的结果:

贯穿线展示了全年电影观众人数的线性回归(我们的预测)。此类数据可以帮助管理者相对确定地决定全年如何安排影院员工。
TensorFlow 是一款极其灵活的工具,将持续推动机器学习和人工智能的进步。然而,只要具备一些 Python 和统计学的基础知识,就能轻松实现预测分析中的实际应用。利用 TensorFlow 等工具的处理能力,结合你可用的数据,可以带来一些极具洞察力的商业应用,从而改变你公司的决策状态。再加上 TensorFlow 的可扩展性以及在 Android 等系统上运行的能力,将使你的洞察更加适用于多样化的用户群体,并更易于他们获取。
有关 TensorFlow 和回归建模的更多信息,请参阅以下内容:
https://www.tensorflow.org/tutorials/linear
https://www.tensorflow.org/tutorials/wide
https://www.tensorflow.org/tutorials/wide_and_deep
转载声明:本文为转载整理,原文版权归原作者及原站点所有。
原文来源:KDnuggets
原文作者:https://www.facebook.com/kdnuggets;如有侵权,请联系管理员删除。