衡量线性回归法的指标:MSE, RMSE和MAE

举个栗子:

对于简单线性回归,目标是找到a,b 使得尽可能小

其实相当于是对训练数据集而言的,即

当我们找到a,b后,对于测试数据集而言

,理所当然,其衡量标准可以是

但问题是,这个衡量标准和m相关。

(当10000个样本误差累积是100,而1000个样本误差累积却达到了80,虽然80<100,但我们却不能说第二个模型优于第一个)

改进==> 对式子除以m,使得其与测试样本m无关

 -> 

 但又有一个问题,之前算这个公式时为了保证其每项为正,且可导(所以没用绝对值的表示方法),我们对式子加了一个平方。但这可能会导致量纲的问题,如房子价格为万元,平方后就成了万元的平方。

又改进==> 对MSE开方,使量纲相同

->

 MSE与RMSE的区别仅在于对量纲是否敏感

 又一思路,通过加绝对值

 -> 

在推导a,b的式子时(对train数据集),没用求绝对值的方法是因为其不是处处可导,不方便用来求极值。但评价模型时,对test数据集我们完全可以使用求绝对值的方式。

 P.S. 评价模型的标准和训练模型时最优化的目标函数是可以完全不一样的。

RMSE vs MAE 

RMSE 与 MAE 的量纲相同,但求出结果后我们会发现RMSE比MAE的要大一些。

这是因为RMSE是先对误差进行平方的累加后再开方,它其实是放大了较大误差之间的差距。

而MAE反应的就是真实误差。因此在衡量中使RMSE的值越小其意义越大,因为它的值能反映其最大误差也是比较小的。

衡量线性回归法最好的指标 R Squared

对于上述的衡量方法,如RMSE和MAE还是有问题的,还是因为量纲不一样。比如我们预测考试分数误差是10,预测房价误差是1w。但我们却不能评价我们的模型是更适合预测分数还是预测房价。

解决方法==> 新的指标:R方

(上:y预测-y真,our model,下:y真平均-y真,baseline model)

 使用baseline模型肯定会产生很多错误,我们自己的模型产生的错误会少一些。

1 - ourModelError / baselineModelError = 我们模型拟合住的部分

 R方将回归结果归约到了0~1间,允许我们对不同问题的预测结果进行比对了。

我们可发现,上面其实就是MSE,下面就是方差

### 线性回归模型评估 #### 使用MSERMSEMAE、MAPE、R²进行线性回归模型评估 在线性回归分析中,通过计算均方误差(MSE)[^3]、均方根误差(RMSE)、平均绝对误差(MAE)[^4]、平均绝对百分比误差(MAPE),以及决定系数\( R^{2} \)[^1]来衡量模型性能。 对于给定的真实值 \( y_{true} \) 预测值 \( y_{pred} \),这些度量提供了不同视角下的模型表现: - **MSE** 表达了预测值与真实值之间差异的平方的平均数。较高的MSE意味着更大的偏差。 ```python import numpy as np def mse_value(y_true, y_pred): """ 参数: y_true -- 测试集目标真实值 y_pred -- 测试集目标预测值 返回: mse -- MSE 评价指标 """ n = len(y_true) mse = sum(np.square(y_true - y_pred)) / n return mse ``` - **RMSE** 是MSE的算术平方根,使得单位恢复至原始数据尺度,更易于解释。较低的RMSE表明更好的拟合效果。 - **MAE** 计算了预测值观测值之间的平均绝对差额,不受极端值影响较大,提供了一个稳健性的测量标准。 - **MAPE** 将误差转换成相对于实际观察的比例形式,适用于对比具有不同规模的数据集间的准确性。 - **\( R^{2} \)** 或者称为决定系数,反映了自变量能够解释因变量变异的程度,在理想情况下取值为1,表示完全匹配;而当其接近于0时,则暗示几乎没有关联存在。 为了展示具体应用实例,假设有一个简单的Python函数用于计算上述各项统计量: ```python from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score, mean_absolute_percentage_error import math def evaluate_regression_model(y_true, y_pred): mse = mean_squared_error(y_true, y_pred) rmse = math.sqrt(mse) mae = mean_absolute_error(y_true, y_pred) mape = mean_absolute_percentage_error(y_true, y_pred)*100 # Convert to percentage form r2 = r2_score(y_true, y_pred) results = { 'Mean Squared Error': round(mse, 4), 'Root Mean Squared Error': round(rmse, 4), 'Mean Absolute Error': round(mae, 4), 'Mean Absolute Percentage Error (%)': round(mape, 2), 'Coefficient of Determination (R²)': round(r2, 4) } return results ``` 此代码片段定义了一个`evaluate_regression_model()` 函数接收两个参数——真实的响应向量 `y_true` 及对应的估计输出 `y_pred` ,返回一个字典对象包含了五个常用的回归质量评分项及其数值结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值