1, MSE, RMSE, MAE
均方误差,即Mean Square Error (MSE),表达式为:
均方根误差,即Root Mean Square Error (RMSE),是在均方误差的基础上开根号,表达式为:
平均绝对误差,即Mean Absolute Error (MAE),表达式为:
自己实现及sklearn中的调用:
代码语言:javascript复制from sklearn import datasets
boston = datasets.load_boston()
x = boston.data[:, 5] # 只用了其中房间数量一个特征
y = boston.target
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y)
from sklearn.linear_model import LinearRegression
reg = LinearRegression()
reg.fit(x_train, y_train)
y_pred = reg.predict(x_test)
# MSE
mse = np.sum((y_pred - y_test)**2) / len(y_pred)
print('MSE = {}'.format(mse))
# RMSE
rmse = np.sqrt(mse)
print('RMSE = {}'.format(rmse))
# MAE
mae = np.sum(np.absolute(y_pred - y_test)) / len(y_pred)
print('MAE = {}'.format(mae))
# sklearn中的调用
from sklearn.metrics import mean_absolute_error, mean_squared_error
print(mean_squared_error(y_pred, y_test))
print(mean_absolute_error(y_pred, y_test))
2. R-squared
RMSE与MAE有个局限性,就是对于分类的种类不同的情况很难去比较谁的效果好,比如预测学生的成绩和预测房价,得到的RMSE/MAE是并不能比较的。
但是R^2是可以解决这个问题的,不同分类种类可以互相比较。
即:
或者:
分子可以理解为使用这个模型产生的错误,分母可以理解为使用[图片上传失败...(image-4b22f8-1604762508813)]
时产生的错误(Baseline Model)。
因此我们可以得到以下结论: 1). R^2的取值小于等于1; 2). R^2越大越好,当模型没有任何错误的时候,其值为1; 3). 当模型为Baseline model时,其值为0; 4). 如果R^2<0时,说明这个模型甚至还不如Baseline model,很有可能该数据不存在任何线性关系。