文章目录
相关文章:
1. 回归评估指标
1.1 平均绝对误差 MAE
MAE
:(Mean Absolute Error)平均绝对误差,从图形上看,MAE 就相当于将数据点与拟合之间之间的距离绝对值之和。
(1) M A E = 1 m ∑ i = 1 m ∣ y ( i ) − y ^ ( i ) ∣ MAE=\frac{1}{m}\sum_{i=1}^m|y^{(i)}-\hat{y}^{(i)}| \tag{1} MAE=m1i=1∑m∣y(i)−y^(i)∣(1)
MAE 缺点 :绝对值函数是不可微分的,这不利于使用诸如梯度下降方法,因此我们将使用更常见的 MSE 均方误差。
1.1.1 Sklearn 计算 MAE
from sklearn.metrics import mean_absolute_error
from sklearn.linear_model import LinearRegression
classifier = LinerRegression()
classifier.fit(X, y)
guesses = classifier.predict(X)
error = mean_absolute_error(y, guesses)
1.2 均方误差 MSE
MSE
:(Mean Squared Error)均方误差,从图形上看,为数据点到拟合直线之间的距离的平方。
(2) M S E = 1 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 MSE=\frac{1}{m}\sum_{i=1}^m(y^{(i)}-\hat{y}^{(i)})^2 \tag{2} MSE=m1i=1∑m(y(i)−y^(i))2(2)
MSE 和 MAE 有局限性:同一个算法模型,解决不同的问题,不能体现此模型针对不同问题所表现的优劣。因为不同实际应用中,数据的量纲不同,无法直接比较预测值,因此无法判断模型更适合预测哪个问题,因此我们将使用衡量线性回归最好的指标: R 2 R^2 R2。[1]
1.2.1 Sklearn 计算 MSE
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression
classifier = LinerRegression()
classifier.fit(X, y)
guesses = classifier.predict(X)
error = mean_squared_error(y, guesses)
1.3 判定系数 R^2
为了拟合一组数据,最简单的方法就是取这组数据的均值并作直线,已知这个简单模型的 MSE 大于线性回归的 MSE ,然而大多少呢?因此类似于假设检验的检验统计量,我们将线性回顾的 MSE 除以简单模型的 MSE,用1减去这个分数,就得到了 R 2 R^2 R2 :
(3) R 2 = 1 − ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 ∑ i = 1 m ( y ˉ − y ( i ) ) 2 R^2=1-\frac{\sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)})^2}{\sum_{i=1}^m(\bar{y}-y^{(i)})^2} \tag{3} R2=1−∑i=1m(yˉ−y(i))2∑i=1m(y^(i)−y(i))2(3)
(4) = 1 − ( ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 ) / m ( ∑ i = 1 m ( y i − y ˉ ) 2 ) / m \quad\quad\quad=1-\frac{(\sum_{i=1}^m(\hat{y}^{(i)}-y^{(i)})^2)/m}{(\sum_{i=1}^m(y^{i}-\bar{y})^2)/m} \tag{4} =1−(∑i=1m(yi−yˉ)2)/m(∑i=1m(y^(i)−y(i))2)/m(4)
(5) = 1 − M S E ( y ^ , y ) V a r ( y ) =1-\frac{MSE(\hat{y}, y)}{Var(y)} \tag{5} =1−Var(y)MSE(y^,y)(5)
- R 2 ∈ [ − ∞ , 1 ] R^2\in [-\infty,1] R2∈[−∞,1]
-
如果这个回归模型不太好,则两个 MSE 将很接近,则 R 2 R^2 R2将趋于0;
-
如果这个回归模型很好,则回归模型的 MSE 应比简单模型的 MSE 小得多,因此 R 2 R^2 R2将趋于1
-
若 R 2 ≤ 0 R^2 \le 0 R2≤0,则说明这个回归模型还不如简单模型(很可能数据不存在线性关系)。
-
因此, R 2 R^2 R2越接近于1,则说明回归模型越好; R 2 R^2 R2越接近于0,则说明回归模型越不好。
1.3.1 Sklearn 计算 R^2
from sklearn.metrics import r2_score
y_true = [1, 2, 4]
y_pred = [1.3, 2.5, 3.7]
r2_score(y_true, y_pred)
0.9078571428571429
参考资料
[1] Volcano!.机器学习:衡量线性回归法的指标(MSE、RMSE、MAE、R Squared)[EB/OL].https://www.cnblogs.com/volcao/p/9104183.html, 2018-05-29.