与线性回归相关的关键参数很少,例如调整后的R平方,系数,P值,R平方,多R等。使用谷歌Tensorflow API实现线性回归时这些参数如何映射?有没有什么办法可以在模型执行之后/期间获得这些参数的值
答案 0 :(得分:3)
根据我的经验,如果您希望在模型运行时获得这些值,则必须使用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))))
答案 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()
在处理调整的指标中返回的值。