【问题标题】:Tensorflow Linear Regression: Getting values for Adjusted R Square, Coefficients, P-valueTensorflow 线性回归:获取调整后的 R 平方、系数、P 值的值
【发布时间】:2016-12-26 04:33:42
【问题描述】:

与线性回归相关的关键参数很少,例如调整后的 R 平方、系数、P 值、R 平方、多重 R 等。在使用谷歌 Tensorflow API 实现线性回归时,这些参数是如何映射的?有什么方法可以在模型执行之后/期间获取这些参数的值

【问题讨论】:

    标签: tensorflow linear-regression p-value


    【解决方案1】:

    根据我的经验,如果您想在模型运行时获得这些值,那么您必须使用 tensorflow 函数对它们进行手动编码。如果您在模型运行后想要它们,您可以使用 scipy 或其他实现。下面是一些关于如何编写 R^2、MAPE、RMSE 的示例......

    total_error = tf.reduce_sum(tf.square(tf.sub(y, tf.reduce_mean(y))))
    unexplained_error = tf.reduce_sum(tf.square(tf.sub(y, prediction)))
    R_squared = tf.sub(tf.div(total_error, unexplained_error),1.0)
    R = tf.mul(tf.sign(R_squared),tf.sqrt(tf.abs(unexplained_error)))
    
    MAPE = tf.reduce_mean(tf.abs(tf.div(tf.sub(y, prediction), y)))
    
    RMSE = tf.sqrt(tf.reduce_mean(tf.square(tf.sub(y, prediction))))
    

    【讨论】:

      【解决方案2】:

      我相信 R2 的公式应该如下。请注意,当网络非常糟糕以至于它比仅仅作为预测变量的平均值做得更差时,它会变成负数:

      total_error = tf.reduce_sum(tf.square(tf.subtract(y, tf.reduce_mean(y))))
      
      unexplained_error = tf.reduce_sum(tf.square(tf.subtract(y, pred)))
      
      R_squared = tf.subtract(1.0, tf.divide(unexplained_error, total_error)) 
      

      【讨论】:

        【解决方案3】:

        Adjusted_R_squared = 1 - [ (1-R_squared)*(n-1)/(n-k-1) ]

        而 n 是观察数,k 是特征数。

        【讨论】:

          【解决方案4】:

          您不应该对 R Squared 使用公式。这存在于 TensorFlow 插件中。您只需将其扩展到 Adjusted R Squared。

          我强烈建议不要使用配方来计算 r 平方本身!我发现的例子并没有产生一致的结果,尤其是只有一个目标变量。这让我非常头疼!

          正确的做法是使用tensorflow_addons.metrics.RQsquare()。 Tensorflow Add Ons 是 on PyPi here,文档是 part of Tensorflow here。您所要做的就是将y_shape 设置为输出的形状,通常是(1,) 用于单个输出变量。

          然后您可以使用 RSquare() 在您自己的处理调整的指标中返回的值。

          【讨论】:

            猜你喜欢
            • 2011-08-01
            • 2018-12-04
            • 2014-05-27
            • 1970-01-01
            • 1970-01-01
            • 2021-01-02
            • 2018-02-08
            相关资源
            最近更新 更多