分类问题使用accuracy来评价分类结果。
回归问题怎样评价预测结果?

MSE RMSE MAE

均方误差 MSE Mean Squared Error

问题:量纲

均方根误差 RMSE Root Mean Squared Error

与MSE本质上是一样的
放大了最大的错误

平均绝对误差 MAE Mean Absolute Error

训练过程中,没有把这个函数定义成目标函数,是因为它不是处处可导。
但它仍可以用于评价算法
评价一个算法所使用的标准可以和训练时所用的标准不同

编程实现三种

波士顿房产数据

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

boston = datasets.load_boston()
x = boston.data[:, 5] # 5代码房间数,保使用房间数量这个特征
y = boston.target

plt.scatter(x, y)
plt.show()

图中最上面有一排点比较奇怪,把它们去掉

x = x[y < 50.0]
y = y[y < 50.0]
plt.scatter(x, y)
plt.show()

训练模型,预测结果

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=666)

reg = SimpleLinearRegression()  #见5-4
reg.fit(x_train, y_train)

plt.scatter(x_train, y_train)
plt.plot(x_train, reg.predict(x_train), color='r')
plt.show()

评价预测效果

y_predict = reg.predict(x_test)

mse_test = np.sum((y_predict - y_test) ** 2) / len(y_test)

from math import sqrt
rmse_test = sqrt(mse_test)

mae_test = np.sum(np.absolute(y_predict-y_test)) / len(y_test)

使用scikit-learn中的MSE和MAE

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error

mean_squared_error(y_test, y_predict)
mean_absolute_error(y_test, y_predict)

scikit-learn中没有提供RMSE

RMSE vs MAE

量纲相同
RMSE比MSE大
RMSE有放大y_hat与y较大差距的那个值的趋式
让RMSE更小的意义更大