深度研究:回归模型评价指标R2_score

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 深度研究:回归模型评价指标R2_score

回归模型的性能的评价指标主要有:RMSE(平方根误差)、MAE(平均绝对误差)、MSE(平均平方误差)、R2_score。但是当量纲不同时,RMSE、MAE、MSE难以衡量模型效果好坏。这就需要用到R2_score,实际使用时,会遇到许多问题,今天我们深度研究一下。

预备知识


搞清楚R2_score计算之前,我们还需要了解几个统计学概念。


若用表示真实的观测值,用表示真实观测值的平均值,用表示预测值,则:

image.png


即平均值与真实值的误差,反映与数学期望的偏离程度


R2_score计算公式


R^2 score,即决定系数,反映因变量的全部变异能通过回归关系被自变量解释的比例。计算公式:

image.png


image.png

分子就变成了常用的评价指标均方误差MSE,分母就变成了方差。


对于可以通俗地理解为使用均值作为误差基准,看预测误差是否大于或者小于均值基准误差。


R2_score = 1,样本中预测值和真实值完全相等,没有任何误差,表示回归分析中自变量对因变量的解释越好。


R2_score = 0。此时分子等于分母,样本的每项预测值都等于均值。


R2_score不是r的平方,也可能为负数(分子>分母),模型等于盲猜,还不如直接计算目标变量的平均值。


r2_score使用方法


根据公式,我们可以写出r2_score实现代码


1- mean_squared_error(y_test,y_preditc)/ np.var(y_test)


也可以直接调用sklearn.metrics中的r2_score

sklearn.metrics.r2_score(y_true, y_pred, sample_weight=None, multioutput='uniform_average')
#y_true:观测值
#y_pred:预测值
#sample_weight:样本权重,默认None
#multioutput:多维输入输出,可选‘raw_values’, ‘uniform_average’, ‘variance_weighted’或None。默认为’uniform_average’;
raw_values:分别返回各维度得分
uniform_average:各输出维度得分的平均
variance_weighted:对所有输出的分数进行平均,并根据每个输出的方差进行加权。


sklearn.metrics.r2_score使用方法

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import r2_score
#导入数据
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)
diabetes_X = diabetes_X[:, np.newaxis, 2]
#划分测试集验证集
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]
# 创建线性回归模型
regr = linear_model.LinearRegression()
# 训练模型
regr.fit(diabetes_X_train, diabetes_y_train)
# 预测
diabetes_y_pred = regr.predict(diabetes_X_test)
# 模型评价
print('r2_score: %.2f'
      % r2_score(diabetes_y_test, diabetes_y_pred))
# 绘制预测效果图
plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()


r2_score: 0.47

640.png


r2_score偏小,预测效果一般。


注意事项


1、image.png 一般用在线性模型中(非线性模型也可以用)


2、image.png不能完全反映模型预测能力的高低,某个实际观测的自变量取值范围很窄,但此时所建模型的R2 很大,但这并不代表模型在外推应用时的效果肯定会很好。


3、数据集的样本越大,R²越大,因此,不同数据集的模型结果比较会有一定的误差,此时可以使用Adjusted R-Square (校正决定系数),能对添加的非显著变量给出惩罚:


image.png

n是样本的个数,p是变量的个数

相关文章
|
2月前
|
机器学习/深度学习 存储 自然语言处理
【机器学习】基于逻辑回归的分类预测
【机器学习】基于逻辑回归的分类预测
|
7月前
|
机器学习/深度学习 数据采集 数据可视化
机器学习 —— 分类预测与集成学习(上)
机器学习 —— 分类预测与集成学习
|
7月前
|
机器学习/深度学习
机器学习 —— 分类预测与集成学习(下)
机器学习 —— 分类预测与集成学习(下)
|
7月前
|
机器学习/深度学习 算法 搜索推荐
Catboost算法助力乳腺癌预测:Shap值解析关键预测因素
Catboost算法助力乳腺癌预测:Shap值解析关键预测因素
215 1
|
7月前
|
前端开发
R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究分析案例
R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究分析案例
|
机器学习/深度学习 API
机器学习逻辑回归分类评估方法
机器学习逻辑回归分类评估方法
90 0
|
机器学习/深度学习 传感器 算法
多元分类预测 | Matlab 麻雀优化深度置信网络(SSA-DBN)分类预测
多元分类预测 | Matlab 麻雀优化深度置信网络(SSA-DBN)分类预测
|
机器学习/深度学习 数据采集 Dart
使用阿里云机器学习PAI做回归预测
XGBoost是一种集成机器学习算法,能够处理分类和回归问题。它具有高准确性、鲁棒性、可解释性和可扩展性等优点。XGBoost的算法原理是集成多个决策树模型,每个模型都是在前一个模型的残差上进行训练。在训练过程中,XGBoost使用了一些技术来避免过拟合,例如正则化、剪枝和子采样。如果想要处理分类和回归问题,XGBoost是一个值得尝试的机器学习算法。
402 0
使用阿里云机器学习PAI做回归预测
|
机器学习/深度学习 算法 测试技术
机器学习实战︱基于多层感知机模型和随机森林模型的某地房价预测
在现实生活中,除了分类问题外,也存在很多需要预测出具体值的回归问题,例如年龄预测、房价预测、股价预测等。相比分类问题而言,回归问题输出类型为一个连续值,如下表所示为两者的区别。在本文中,将完成房价预测这一回归问题。
529 0
机器学习实战︱基于多层感知机模型和随机森林模型的某地房价预测
|
机器学习/深度学习 算法
【机器学习】分类模型评价指标(混淆矩阵、ROC)(已修改,放心看)
【机器学习】分类模型评价指标(混淆矩阵、ROC)(已修改,放心看)
196 0

热门文章

最新文章