1.MSE - 均方误差
\[MSE = \displaystyle\frac{1}{m}\sum_{i=1}^{m}(y_i - \hat{y_i})^2 \]MSE是用 真实值 - 预测值 然后平方后求和平均,常用线性回归的损失函数。
在线性回归时我们希望损失函数最小,从而判断测试集的损失值有多少。
# 数学公式计算
MSE = np.sum((y_pred-y_test)**2)/len(y_test)
# scikit-learn对应的指标
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression
reg = LinearRegression().fit(X_train,y_train)
y_pred = reg.predict(X_test)
# 调用mean_squared_error
MSE = mean_squared_error(y_test,y_pred)
2.RMSE - 均方根误差
\[MSE = \sqrt{\displaystyle\frac{1}{m}\sum_{i=1}^{m}(y_i - \hat{y_i})^2} \]RMSE在MSE基础上开根号,更好的描述真实值和预测值的数据
常用于衡量模型预测结果的标准
# 接着上面的例子MSE开根号计算得到RMSE
RMSE = MSE ** 0.5
3.MAE - 平均绝对误差
\[MAE = \displaystyle\frac{1}{m}\sum_{i=1}^{m}|(y_i - \hat{y_i})| \]平均误差的绝对值
常用来反映预测值误差的实际情况(风险度)
# 数学公式计算
MAE = np.sum(np.absolute(y_pred-y_test))/len(y_test)
# scikit-learn对应的指标
from sklearn.metrics import mean_absolute_error
# 调用mean_absolute_error
MAE = mean_absolute_error(y_test, y_pred)
4.R2 - 判别系数
\[R^2 = 1 - \frac{SS_{residual}}{SS_{total}}=\frac{\sum_{i}(y_i - f_i)^2}{\sum_{i}(y_i - \bar{y})^2},其中\bar{y}是观数据的平均值:\bar{y} = \frac{1}{n}\sum_{i=1}^{n}y_i \]其中f
是拟合(或建模)值,y
是真实值,SSR
(Sum of squares of the regression)是残差平方和,由预测数据与标签均值之间差值的平方和构,SST
(Total sum of squares)是实际值和均值之间的差值的平方和
判定系数R2测量了回归直线对预测数据拟合的程度,即:
1 - 模型没有捕获到的信息量占真实标签重所带的信息量的比例,所以,两者越接近1越好
调整R2考虑添加更多预测变量(特征)来改善模型
# 3种调用方式
# 方式1:从sklearn.metrics导入r2_score
from sklearn.metrics import r2_score
# 调用r2_score
r2 = r2_score(y_test, y_pred)
# 方式2:使用线性回归LinearRegression的score方法
reg = LinearRegression().fit(X_train,y_train)
# 调用score
r2 = reg.score(X_test,y_test)
# 方式3:从sklearn.metrics导入r2_score
from sklearn.metrics import explained_variance_score
r2 = explained_variance_score(y_test, y_pred)
5.在哪里使用哪个指标来确定机器学习模型的性能?
-
MAE:通常用于在连续变量数据上测量性能。它对异常值不是很敏感,因为它不会惩罚错误。
-
MSE:最常用的指标之一,当数据集包含大量噪声时,它最没用。但当数据集包含异常值(太高或太低)时,它最有用。
-
RMSE:在RMSE中,误差在平均之前先平方,这意味着RMSE为更大的错误分配更高的权重。这表明当存在大错误并且它们会极大地影响模型的性能时,RMSE更有用。RMSE比MSE更广泛用于评估回归模型于其他随机模型的性能,因为它的因变量(Y轴)具有相同的单位。
-
R2: R2评估性能最容易让人一目了然地了解你的模型的性能。
总体来说,MAE、MSE 和 RMSE 的值越低,意味着回归模型的准确度越高。然而,R 平方值越高被认可越高。
相关参考:
https://www.jianshu.com/p/9ee85fdad150
https://www.cnblogs.com/nxf-rabbit75/p/10415812.html
https://en.wikipedia.org/wiki/Coefficient_of_determination