R2决定系数(R2 得分)详细计算
定义
R2决定系数是对线性模型评估的一种评价指标,其值最大为1,最小为0,当值越接近于1,则说明模型越好;值越接近于0,则模型越差。
计算过程
使用 y i {\text{y}}_i yi表示真实的观测值,使用 y _ \overset{\_}{\mathop y} y_表示真实观测值的平均值,使用 y i ^ \overset{\hat{}}{\mathop {y_i}} yi^表示预测值,于是就产生下以下的指标:
-
回归平方和(SSR)
S S R = ∑ i = 1 n ( y i ^ − y − ) 2 SSR = \sum\limits_{i = 1}^n {(\overset{\hat{}}{\mathop {{y_i}}} - \overset{ - }{\mathop y} } {)^2} SSR=i=1∑n(yi^−y−)2估计值与平均值的误差,反映自变量与因变量之间的相关程度的偏差平方和 -
残差平方和(SSE)
S S E = ∑ i = 1 n ( y i − y i ^ ) 2 SSE = \sum\limits_{i = 1}^n {(\overset{{}}{\mathop {{y_i}}} - \overset{\hat{}}{\mathop {{y_i}}} } {)^2} SSE=i=1∑n(yi−yi^)2即估计值与真实值的误差,反映模型拟合程度 -
总离差平方和(SST)
S S T = S S R + S S E = ∑ i = 1 n ( y i − y _ ) 2 SST = SSR + SSE = \sum\limits_{i = 1}^n {(\overset{{}}{\mathop {{y_i}}} - \overset{\_}{\mathop {{y_{}}}} } {)^2} SST=SSR+SSE=i=1∑n(yi−y_)2即平均值和真实值之间的误差,反映与数学期望的偏离程度 -
R2 score ,即决定系数
反映因变量的全部变异能通过回归关系被变量解释的比例,计算公式:
R 2 = 1 − S S E SST {R^2} = 1 - \frac{{SSE}}{{{\text{SST}}}} R2=1−SSTSSE 即 R 2 = 1 − ∑ i = 1 n ( y i − y i ^ ) 2 ∑ i = 1 n ( y i − y _ ) 2 {R^2} = 1 - \frac{{\sum\nolimits_{i = 1}^n {{{({y_i} - \overset{\hat{}}{\mathop {{y_i}}} )}^2}} }}{{\sum\nolimits_{i = 1}^n {{{({y_i} - \overset{\_}{\mathop {{y_{}}}} )}^2}} }} R2=1−∑i=1n(yi−y_)2∑i=1n(yi−yi^)2进一步化简为:
R 2 = 1 − ∑ i ( y i − y^ i ) 2 / n ∑ i ( y i − y _) 2 / n = 1 − M S E V a r {R^2} = 1 - \frac{{\sum\limits_i {{{({y_i} - {{\overset{\hat {}}{\mathop y} }_i})}^2}/n} }}{{\sum\limits_i {{{({y_i} - \overset{\_}{\mathop y} )}^2}/n} }} = 1 - \frac{{MSE}}{{Var}} R2=1−i∑(yi−y_)2/ni∑(yi−y^i)2/n=1−VarMSE如此一来,分子就变成了常用的评价指标,均方误差MSE,分母则变成了方差,对于 R 2 {R^2} R2
可以通俗的理解为使用均值作为误差基准,看预测误差是否大于或者小于均值基准误差
若:
R2 score = 1,样本中预测值和真实值完全相等,没有任何误差,表示回归分析中自变量对因变量的解释越好
R2 score = 0,此时分子等于分母,样本的每项预测值都等于均值
最后,是sklearn中的有关于模型评估的几个API:
import sklearn.metrics as sm # 模型评估模块# 拿到一组测试集模型进行模型评估test_x = 测试变量数据集test_y = 测试结果数据集# 训练的模型,获取模型预测值pred_test_y=model.predict(test_x)# 平均绝对值误差 maeprint(sm.mean_absolute_error(test_y, pred_test_y))# 平均平方误差:均方误差 mseprint(sm.mean_squared_error(test_y, pred_test_y))# 中位数绝对偏差print(sm.median_absolute_error(test_y, pred_test_y))# r2_scoreprint(sm.r2_score(test_y,pred_test_y))
如有错误请联系作者改正,谢谢!
来源地址:https://blog.csdn.net/qq_45355712/article/details/129195716
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341