我是靠谱客的博主 朴实日记本,最近开发中收集的这篇文章主要介绍线性回归评估的指标_线性回归算法的评估指标,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

38d1d6216fc502b4dcb7364374a5adda.png

评价线性回归的指标有四种,均方误差(Mean Squared Error)、均方根误差(Root Mean Squared Error)、平均绝对值误差(Mean Absolute Error)以及R Squared方法。 sklearn中使用的,也是大家推荐的方法是R Squared方法。

equation?tex=y_i 表示真实的观测值,用
equation?tex=%5cbar%7by%7d 表示真实观测值的平均值,用
equation?tex=%5chat+y_i表示预测值,则:

1、均方误差 MSE

equation?tex=%5ctext%7bmse%7d%28y%2c+%5chat%7by%7d%29+%3d+%5cfrac%7b1%7d%7bn%7d+%5csum_%7bi%3d1%7d%5en+%5c%7c+y_i+-+%5chat%7by%7d_i+%5c%7c_2%5e2

MSE的值越小,说明预测模型描述实验数据具有更好的精确度

2、均方根误差 RMSE

equation?tex=%5ctext%7brmse%7d%28y%2c+%5chat%7by%7d%29+%3d%5csqrt%7b+%5cfrac%7b1%7d%7bn%7d+%5csum_%7bi%3d1%7d%5en+%5c%7c+y_i+-+%5chat%7by%7d_i+%5c%7c_2%5e2+%7d

3、平均绝对值误差 MAE

equation?tex=+%5ctext%7bmae%7d%28y%2c+%5chat%7by%7d%29+%3d+%5cfrac%7b1%7d%7bn%7d+%5csum_%7bi%3d1%7d%5en+%5cleft%7c+y_i+-+%5chat%7by%7d_i+%5cright%7c+

这个指标是对绝对误差损失的预期值.

平均绝对百分比误差(MAPE, Mean Absolute Percentage Error)

这个指标是对相对误差损失的预期值.所谓相对误差,就是绝对误差和真值的百分比.

equation?tex=+%5ctext%7bmape%7d%28y%2c+%5chat%7by%7d%29+%3d+%5cfrac%7b1%7d%7bn%7d+%5csum_%7bi%3d1%7d%5en+%5cfrac%7b%5c%7c+y_i+-+%5chat%7by%7d_i+%5c%7c+%7d+%7b+%5c%7cy_i%5c%7c%7d

4、 R方 [R Squared(r2 score)]

回归平方和:SSR(Sum of Squared Regression)

equation?tex=ssr%3d+%5csum_%7bi%3d0%7d%5e%7bn%7d+%28%5chat%7by%7d_i+-+%5cbar%7by%7d%29%5e2

即预测值与平均值的误差,反映自变量与因变量之间的相关程度的偏差平方和,是指模型解释掉的变异.

残差平方和:SSE(Sum of Squared Error)

equation?tex=sse+%3d+%5csum_%7bi%3d0%7d%5e%7bn%7d+%28y_i+-+%5chat%7by%7d_i%29%5e2

即预测值与真实值的误差,反映模型拟合程度

总离差平方和:SST(Sum of Squared Total)

equation?tex=sst%3d+%5csum_%7bi%3d0%7d%5en+%28y_i+-+%5cbar%7by%7d%29%5e2

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

R2_score计算公式


R Squared又叫决定系数(coefficient of determination)也叫拟合优度,反映因变量的全部变异能通过回归关系被自变量解释的比例.越接近于1,说明模型拟合得越好.

equation?tex=r%5e2%28y%2c+%5chat%7by%7d%29+%3d+1+-+%5cfrac%7b%5csum_%7bi%3d0%7d%5e%7bn%7d+%28y_i+-+%5chat%7by%7d_i%29%5e2%7d%7b%5csum_%7bi%3d0%7d%5en+%28y_i+-+%5cbar%7by%7d%29%5e2%7d+%3d%5cfrac%7bssr%7d%7bsst%7d+%3d+1+-+%5cfrac%7bsse%7d%7bsst%7d


进一步化简

equation?tex=r%5e2%28y%2c+%5chat%7by%7d%29+%3d+1+-+%5cfrac%7b%5csum_%7bi%3d0%7d%5e%7bn%7d+%28y_i+-+%5chat%7by%7d_i%29%5e2%2fn%7d%7b%5csum_%7bi%3d0%7d%5en+%28y_i+-+%5cbar%7by%7d%29%5e2+%2fn+%7d+%3d1-%5cfrac%7b%5ctext%7bmse%7d%7d%7b%5ctext%7bvar%7d%7d

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

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

  1. R2_score = 1,样本中预测值和真实值完全相等,没有任何误差,表示回归分析中自变量对因变量的解释越好。
  2. R2_score = 0。此时分子等于分母,样本的每项预测值都等于均值。
  3. R2_score不是r的平方,也可能为负数(分子>分母),模型等于盲猜,还不如直接计算目标变量的平均值。此时数据不存在任何线性相关关系。

四种代码实现:

def mean_squared_error(y_true, y_predict):
"""计算y_true和y_predict之间的MSE"""
assert len(y_true) == len(y_predict),
"the size of y_true must be equal to the size of y_predict"
return np.sum((y_true - y_predict)**2) / len(y_true)
def root_mean_squared_error(y_true, y_predict):
"""计算y_true和y_predict之间的RMSE"""
return sqrt(mean_squared_error(y_true, y_predict))
def mean_absolute_error(y_true, y_predict):
"""计算y_true和y_predict之间的RMSE"""
assert len(y_true) == len(y_predict),
"the size of y_true must be equal to the size of y_predict"
return np.sum(np.absolute(y_true - y_predict)) / len(y_true)
def r2_score(y_true, y_predict):
"""计算y_true和y_predict之间的R Square"""
return 1 - mean_squared_error(y_true, y_predict)/np.var(y_true)

sklearn库实现:

from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_test, y_pred)
from sklearn.metrics import mean_squared_error
mean_squared_error(y_test, y_pred)
from sklearn.metrics import r2_score
r2_score(y_test, y_pred)
# RMSE
np.sqrt(metrics.mean_squared_error(y_true, y_pred))

5、修正决定系数(调整后R平方)

如果两个模型的样本数量和决定系数都相同,变量个数越少说明拟合效果越好。

修正决定系数相当于给变量的个数加惩罚项。考虑到SSE的自由度为n-p-1,SST的自由度为n-1,修正决定系数设置为

equation?tex=%5cbar%7br%5e2%7d%3d1-%5cfrac%7bsse%2f%28n-p-1%29%7d%7bsst%2f%28n-1%29%7d%3d1-%5cfrac%7bsse%7d%7bsst%7d%5cfrac%7b%28n-1%29%7d%7b%28n-p-1%29%7d%3d1-%5cfrac%7b%5csum_%7bi%3d1%7d%5en%7b%28y_i-%5chat+y_i%29%5e2%7d%7d%7b%5csum_%7bi%3d1%7d%5en%7b%28y_i-+%5cbar%7by%7d%29%5e2%7d%7d%5cfrac%7bn-1%7d%7bn-p-1%7d%3d1-%281-r%5e2%29%5cfrac%7bn-1%7d%7bn-p-1%7d

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

调整后R平方的作用就是判断你的模型里该不该加入你想加进来的自变量。如果调整后R平方和R方差异较大,证明你的模型里加入了很多没有用的变量。调整后R平方没有实际含义

R平方表示模型的解释程度,核心还是因为SSR代表着回归模型的解释变异程度,之所以除以SST只是为了进行标准化,使得R平方有一个固定的值域,便于比较。

5370e3ec236f436a64734ca965a49bbd.png

最后

以上就是朴实日记本为你收集整理的线性回归评估的指标_线性回归算法的评估指标的全部内容,希望文章能够帮你解决线性回归评估的指标_线性回归算法的评估指标所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部