损失函数or评价函数
-
均方误差MSE
前面的损失函数其实有个缺陷,因为损失函数最终会和m有关所以我们需要把损失函数最后除以m,这样损失就和样本数无关了。而形成的新的损失函数就是我们说的均方误差
image原理
np.sum((y_predict - y_test)**2) / len(y_test)
scikit-learn
from sklearn.metrics import mean_squared_error mean_squared_error(y_test, y_predict)
-
均方根误差RMSE
因为MSE会放大误差,量纲和原Y的量纲相差较大,所以有的时候会在MSE上在加一个根号来解决这个问题
image原理
from math import sqrt sqrt(np.sum((y_predict - y_test)**2) / len(y_test))
-
平均绝对误差MAE (因为绝对值不适合求导所以不适合做损失函数,但是可以做评价函数)
image原理
np.sum(np.absolute(y_predict - y_test))/len(y_test)
scikit-learn
from sklearn.metrics import mean_absolute_error mean_absolute_error(y_test, y_predict)
-
R Squared
RMSE和MAE最终计算出来结果的量纲和预测结果的量纲时相近的,而分类的准确度是用0~1之间的数来评价准确度的。
image推导
image原理
1 - mean_squared_error(y_test, y_predict)/np.var(y_test)
scikit-learn
from sklearn.metrics import r2_score r2_score(y_test, y_predict) #LinearRegression中的score返回就是r2_score