ITPub博客

首页 > 人工智能 > 深度学习 > 使用TensorFlow进行线性回归预测分析 - KDnuggets

使用TensorFlow进行线性回归预测分析 - KDnuggets

深度学习 作者:ITPUB社群 时间:1970-01-01 08:33:46 0 删除 编辑

本文展示了一个强大且简单的示例,说明如何使用 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.kdnuggets.com/2017/11/tensorflow-predictive-analytics-linear-regression.html#comment-184636

原文作者:https://www.facebook.com/kdnuggets;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-11-21

  • 博文量
    1122
  • 访问量
    547430