Tensorflow 线性回归:获取调整后的 R 平方值、系数和 P 值

4

线性回归有几个关键参数,例如:调整后的R平方、系数、P值、R平方、多重R等。在使用谷歌Tensorflow API实现线性回归时,这些参数如何映射?是否有办法在模型执行期间或之后获取这些参数的值?

4个回答

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

0

调整后的R平方 = 1 - [ (1-R平方)*(n-1)/(n-k-1) ]

其中n是观测值的数量,k是特征的数量。


0

不应该使用R Squared的公式,因为Tensorflow Addons中已经存在了。您只需要将其扩展到Adjusted R Squared即可。

我强烈建议不要使用计算r-squared本身的公式!我找到的例子不能产生一致的结果,特别是只有一个目标变量的情况下。这给我带来了巨大的头痛!

正确的做法是使用tensorflow_addons.metrics.RQsquare()。Tensorflow Add Ons可以在这里的PyPi上找到,文档是Tensorflow的一部分。您只需要将y_shape设置为您的输出形状,通常对于单个输出变量,它是(1,)

然后,您可以在自己的度量中使用RSquare()返回的内容来处理调整。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接