https://theonegis.blog.csdn.net/article/details/85991138
循着这篇博客翻墙找了很多博客看;受益匪浅,说一下自己的理解。
首先,决定系数R2是对于线性模型来说的。
由于我是在预测数据集上进行计算,所以产生了R2是用在训练数据集还是预测数据集上的困惑。
首先,在训练数据集上,R2应该是(我的理解,可能不太对,望指正)用来衡量线性模型在训练数据集上的拟合程度,这时候SST=SSE+SSR(具体可到可知乎或者其他博客查看),所以0<R2<1(其实也只有这时候才有意义,不然单独拿出来为什么使用
,没有任何意义)。只有平均值有意义,这个公式也才有意义。但是如果是针对非线性模型,那SST=SSR+SSE便不成立了,所以0<R2<1的范围也就不成立的。而且在训练数据集上,非线性模型的拟合程度往往是高于线性模型的,因此SST一定的情况下,SSR肯定是高于线性模型的,那么此时如果你的R2(训练集上的)没有个0.99,那你这非线性不咋地,这个时候用R2衡量非线性模型也就没有意义了。
其次,在预测数据集上,R2在线性模型上还是遵从0<R2<1,但是对于非线性模型就不是了,你可能是负数,也可能接近1,但是这些都不能作为你的模型究竟是好是坏的证据。同上,SST=SSR+SSE不成立,SSR/SST好像应该是正的,但是SSE/SST可能大于1,此时那么R2是负数。这种矛盾现象产生的原因就是SST=SSE+SSR不成立。
所以在非线性模型上,同时在预测数据集上,
1、SSR/SST>0,但是由于SST=SSR+SSE不成立,范围无法确定,且SST中也没有意义了。此时预测集确定,SST确定,实际上起作用的只有SSR,而SSR表示的预测值与平均值的差距,这个在非线性模型中好像没有任任何意义吧,在线性模型中确实平均值可以作为衡量线性模型的拟合程度
2、1-SSE/SST,同样,SST=SSR+SSE不成立,那么R2可能小于0.同样的,这里面有含义且起作用的只有SSE,这不就是MSE*n吗,既然此时SST没有含义了,R2范围也不再是0<R2<1,那么直接用SSE/MSE不就可以了吗?多此一举干嘛?
所以,不论是R2,还是SST,SSR,他们有一点,公式中含有平均值这一个选项,而只有在线性模型下,SST=SSE+SSR,这个选项才有意义,对于非线性模型,意义不大。
那么还有可能发现,我是用R2和非线性模型,在测试集上,确实预测的越好R2越大,因为1-SSE/SST中,SST不变,起作用的就只有SSE,当模型还可以的时候,R2接近0.9,这样模型越好,SSE/MSE越小,当然R2越好(越接近1),但是那又怎么样,没有任何意义,既然R2范围都不固定了,那也就没有任何意义了,那只选择里面起作用的一项SSE/MSE不就可以了吗?
同时在不同领域,R2取多少合适也是不确定的,有的领域可能0.4就好,再大说明你错了。
如有不当之处,欢迎指正!
放两个链接
https://statisticsbyjim.com/regression/difference-between-linear-nonlinear-regression-models/
可以去这两个博文下面,里面还有很多讨论,多翻几个,对你会很有帮助