RSME,MSE,R2等指标的解释与思考

本文介绍了机器学习中常用的评估指标,包括RMSE、MSE、SSE等误差度量方法,并详细解析了R2、SST、SSR的概念及计算方式。通过实例说明不同指标的应用场景及其优劣。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做一个算法,直接算法中就计算了一个叫做RMSE的值,开始出来我以为是准确率,类似于,clf.score,后来想想好像不对,所以就看来一些文章来研究了一下这些的含义。

预测值和真值相差的平方和是SSE,也就是误差平方和,这肯定是越小越好了,相当于一个误差累计。当然这个SSE越接近于0越好。

 但是,如果说10000的样本的情况,建立一个A模型,这个模型的SSE是100,100个样本的情况下,建立一个B模型,这个模型的SSE是80。但是不能说B模型比A模型好。所以就引入了MSE。

MSE就是均方误差,SSE除以样本量,平均的预测的值和真值差的平方,平均到每一个预测的Y

MSE的值在量纲上是平方,为了是这个量纲一致,所以对MSE开方就是RMSE,也就是均方根。

解释R2之前要解释一些SST和SSR

SSR表示的是预测值和原始值得均值差得平方和

SST表示得是原始数据和均值的差的平方和

所以R2,也就是R-square,可以经过公式推导得出SST=SSE+SSR

其实我们将R2写开

还可以这样表示。R2的范围在0-1之间,越接近1,表示越好,一般衡量线性回归最好的指标应该就是R2,通常表示模型你好的好坏。对R2开根号,就是R,也就是相关系数,也是越近1越好。

上面计算真值和预测值之间的误差都是做差求平方和,如果将平方和换成取绝对值,也就是MAE,RMAE,也就是不是square,变为absolute.

 

 

### Mean Squared Error (MSE) Mean Squared Error 是一种常用的回归性能度量指标,用于衡量预测值 \( \hat{y} \) 和真实值 \( y \) 的差异。具体来说,它是通过计算每个样本的真实值和预测值之间的平方差并取平均值得到的。 \[ MSE = \frac{1}{m} \sum_{i=1}^{m}(y_i - \hat{y}_i)^2 \] 其中,\( m \) 表示样本数量,\( y_i \) 是第 i 个样本的真实值,而 \( \hat{y}_i \) 则是对应的预测值[^3]。 下面是一个简单的 Python 实现: ```python def mean_squared_error(y_true, y_pred): """ Calculate the Mean Squared Error between true values and predicted values. Parameters: y_true: List or numpy array of actual target values. y_pred: List or numpy array of predicted target values. Returns: float: The calculated Mean Squared Error. """ import numpy as np y_true = np.array(y_true) y_pred = np.array(y_pred) mse = np.mean((y_true - y_pred)**2) return mse ``` --- ### R-Squared (R²) R-squared 或称为决定系数,是用来评估模型拟合优劣程度的一个统计量。它表示因变量的变化中有多少比例可以由自变量解释。其定义如下: \[ R^2 = 1 - \frac{\text{SS}_{\text{res}}}{\text{SS}_{\text{tot}}} \] 其中, - \( \text{SS}_{\text{res}} = \sum_{i=1}^{m}(y_i - \hat{y}_i)^2 \),即残差平方和; - \( \text{SS}_{\text{tot}} = \sum_{i=1}^{m}(y_i - \bar{y})^2 \),即总离差平方和; 这里,\( \bar{y} \) 表示所有实际观测值的均值。 下面是实现 R² 的代码片段: ```python def r_squared(y_true, y_pred): """ Calculate the R-squared value given true and predicted values. Parameters: y_true: List or numpy array of actual target values. y_pred: List or numpy array of predicted target values. Returns: float: Calculated R-squared value. """ import numpy as np y_true = np.array(y_true) y_pred = np.array(y_pred) ss_res = np.sum((y_true - y_pred)**2) ss_tot = np.sum((y_true - np.mean(y_true))**2) r2 = 1 - (ss_res / ss_tot) return r2 ``` --- ### 总结 上述两个指标各有用途: - **MSE** 更关注误差的具体数值大小,适合用来优化模型参数。 - **R²** 提供了一个相对的比例来说明模型的效果好坏,通常更直观易懂。 两者都可以帮助理解模型的表现,并指导进一步改进方向。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值