回归问题是机器学习中一种常见的监督学习问题。最终的目标是预测量化的数值--例如,连续的数值,如汽车的价格、狗的重量等等。
但为了确保你的模型在预测中表现良好,你需要对模型进行评估。
有一些评估指标可以帮助你确定模型的预测是否准确到一定的性能水平。
在本教程中,你将学习回归问题的顶级评估指标,以及何时使用每个指标。不多说了,让我们开始吧。
什么是残差?
在我们进入顶级评估指标之前,你需要了解当你评估一个回归模型时,"残差 "意味着什么。
在回归问题中,一个模型要准确地预测一个连续变量的值是不理想的,也是不可能的。一个回归模型只能预测比实际值低或高的数值。因此,确定模型准确性的唯一方法是通过残差。
残差是实际值和预测值之间的差异。你可以把残差看成是一种距离。因此,残差越接近于零,我们的模型在进行预测时的表现就越好。
这里是计算残差的公式:
In the above formula:
ei -- stands for the residual value.
yi -- stands for the actual value.
y^i -- stands for the predicted value.
So say, for instance, that the actual value in the dataset is 5 and the predicted value is 8. The residual value will be -3.
对于回归问题,你需要知道的首要评价指标包括。
R2得分
R2得分(读作R平方得分)是一个统计指标,它告诉我们我们的模型在零到一的范围内进行所有预测的情况。
如上所述,在回归问题中,模型预测实际值并不理想(相对于有离散的价值水平的分类问题而言)。
但我们可以用R2得分来确定我们的模型在距离或残差方面的准确性。你可以用下面的公式来计算R2得分。
何时使用R2得分
你可以使用R2得分来获得你的模型在百分比上的准确性,也就是0-100,就像在分类模型中一样。
让我们来看看如何在Python中实现R2得分。我们有一个包含实际值和预测值的小数据集:
为了在Python中实现R2得分,我们将利用Scikit-Learn的评估指标库:
from sklearn.metrics import r2_score
score = r2_score(data["Actual Value"], data["Preds"])
print("The accuracy of our model is {}%".format(round(score, 2) *100))
r2_score 需要两个参数--实际值和预测值,我们已经在上面传给了它。衡量标准的结果是这样的。
所以我们可以说,我们的模型以82%的准确率预测了这些数值。
平均绝对误差(MAE)
MAE被简单地定义为所有距离/剩余s的总和(实际值和预测值之间的差异)除以数据集中的总点数。
它是我们模型预测的绝对平均距离。
你可以用下面的公式来计算MAE:
我们可以看到,上述公式中有两个由绝对符号代表的管道。绝对符号确保负的残差(可能是预测值大于实际值的结果)被转换为正的,这样它就不会抵消其他正的残差。
何时使用MAE
如果你想知道模型在进行预测时的平均绝对距离,你可以使用MAE。换句话说,你想知道预测与实际模型的平均接近程度。
只要记住,低的MAE值表明模型的预测是正确的。较大的MAE值表明模型的预测能力很差。
现在让我们看看如何在Python中实现MAE。我们将使用之前用于寻找r2_score的数据集:
为了在Python中实现MAE,我们将利用Scikit-Learn的评估指标库:
from sklearn.metrics import mean_absolute_error
score = mean_absolute_error(data["Actual Value"], data["Preds"])
print("The Mean Absolute Error of our Model is {}".format(round(score, 2)))
MAE也需要两个参数,实际值和预测值:
均方根误差(RMSE)
另一个常用的指标是均方根误差,它是平均平方距离(实际值和预测值之间的差异)的平方根。
RMSE被定义为距离的所有平方的平方根除以总点数:
RMSE的功能与MAE相似(也就是说,你用它来确定预测值与实际值的平均接近程度),但有一个小的区别。
你用RMSE来确定如果模型高估了预测值(即模型预测值明显高于实际值)或低估了预测值(即预测值小于实际预测值),是否有可能造成大的误差或距离。
何时使用RMSE
如果你担心大的误差,RMSE是一个很好的衡量标准。如果模型高估或低估了预测中的某些点(因为残差会是正方形,导致大的误差),你应该使用RMSE。
RMSE是回归问题的一个流行的评价指标,因为它不仅可以计算出预测值与实际值的平均接近程度,而且还可以表明大误差的影响。大误差会对RMSE的结果产生影响。
让我们来看看如何在Python中实现RMSE:
Scikit-learn评估指标库没有RMSE指标,但它确实包括了均方误差法。平均平方误差的平方根被称为RMSE。
为了得到RMSE,我们可以使用Numpy的平方根方法来寻找平均平方误差的平方根,得到的结果就是我们的RMSE。
from sklearn.metrics import mean_squared_error
import numpy as np
score = np.sqrt(mean_absolute_error(data["Actual Value"], data["Preds"]))
print("The Mean Absolute Error of our Model is {}".format(round(score, 2)))
我们可以看到,RMSE值比MAE大。这是数据集中一些大的误差造成的。
结论和学习更多
在本教程中,你已经学到了一些你每天都会用到的回归问题的顶级评估指标。
谢谢你的阅读。