线性回归有几个关键参数,例如:调整后的R平方、系数、P值、R平方、多重R等。在使用谷歌Tensorflow API实现线性回归时,这些参数如何映射?是否有办法在模型执行期间或之后获取这些参数的值?
线性回归有几个关键参数,例如:调整后的R平方、系数、P值、R平方、多重R等。在使用谷歌Tensorflow API实现线性回归时,这些参数如何映射?是否有办法在模型执行期间或之后获取这些参数的值?
根据我的经验,如果您想在模型运行时获得这些值,则必须使用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))))
调整后的R平方 = 1 - [ (1-R平方)*(n-1)/(n-k-1) ]
其中n是观测值的数量,k是特征的数量。
不应该使用R Squared的公式,因为Tensorflow Addons中已经存在了。您只需要将其扩展到Adjusted R Squared即可。
我强烈建议不要使用计算r-squared本身的公式!我找到的例子不能产生一致的结果,特别是只有一个目标变量的情况下。这给我带来了巨大的头痛!
正确的做法是使用tensorflow_addons.metrics.RQsquare()
。Tensorflow Add Ons可以在这里的PyPi上找到,文档是Tensorflow的一部分。您只需要将y_shape
设置为您的输出形状,通常对于单个输出变量,它是(1,)
。
然后,您可以在自己的度量中使用RSquare()
返回的内容来处理调整。
我相信 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))