张量线性回归:获得调整后的R平方,系数,P值的值

时间:2016-08-19 05:43:33

标签: tensorflow linear-regression p-value

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

4 个答案:

答案 0 :(得分:3)

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

的例子

enter image description here

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))))

答案 1 :(得分:0)

我认为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)) 

答案 2 :(得分:0)

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

其中n是观察数,k是特征数。

答案 3 :(得分:0)

您不应对R平方使用公式。这在Tensorflow插件中存在。您只需要将其扩展为“调整后的R平方”即可。

我强烈建议您不要使用配方自行计算r平方!我发现的示例无法产生一致的结果,尤其是只有一个目标变量时。这让我非常头疼!

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

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