回归模型的评估指标和调用方法
这里评估指标一般用于对经过训练集训练后的模型来使用的,以各项指标的评估得分来比较模型的性能。因为模型上线后,一般的未知样本的标签是较难得到的。
这里注意要与参数估计中的公式区分开,虽然有些参数估计的公式用到了诸如MSE的方法,但只是方法相同,用处却不一样。
回归模型的评估指标有平均绝对值误差、均方误差、均方根误差、R平方值、Huber损失、Log-Cosh损失函数。
平均绝对值误差
也称L1损失(MAE)是预测值与真实值之差的绝对值,计算公式如下:
以下是sklearn中调用MAE的示例代码:
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_test,y_pred)
均方误差
也称L2损失(MSE)是指的参数估计值与参数真实值之差平方的期望值。MSE是衡量平均误差的一种较方便的方法,可以用来评价数据的变化程度。MSE的值越小,说明预测模型描述实验数据具有越好的精确度,计算公式如下:
以下是sklearn中调用MAE的示例代码:
from sklearn.metrics import mean_squared_error
mean_squared_error(y_test,y_pred)
但存在一些问题,假设误差的单位是万,则MSE的单位就万的平方。会带来量纲上的影响。因此采用下面的均方根误差。
均方根误差(RMSE)是MSE的平方根,计算公式如下:
以下是sklearn中调用RMSE的示例代码:
from sklearn.metrics import mean_squared_error
Pred_Error = mean_squared_error(y_test,y_pred)
Sqrt(Pred_Error)
上述的三个评价指标均方误差、
均方对数差损失(Mean Squared Log Error,MSLE)
R平方值(R-Squared)
反映了回归模型在多大程度上解释了因变量的变化,或者说模型对观测值的拟合程度如何。计算公式如下:
式中分子表示模型预测产生的错误。分母
就是将
替换为
。表示使用模型
预测产生的错误。可以将模型
称为Baseline Model称为最基本的模型(类似于瞎猜吧,用均值做预测值,和样本特征无关)
R平方值是评价回归算法性能较好的评价方式。
以下是sklearn中调用R平方值的示例代码:
from sklearn.metrics import r2_score
r2_score(y_test,y_pred)
Adjusted R-Square(校正决定系数)
Huber损失(Huber loss)
Log-Cosh损失函数(Log-Cosh loss)
趋于0时退化成了L1损失,当
趋于无穷时则退化为L2损失。
决定了模型处理局外点的行为,当残差大于
时使用L1损失,很小时则使用更为合适的L2损失来进行优化。Huber损失函数克服了L1损失和L2损失的缺点,不仅可以保持损失函数具有连续的导数,同时可以利用L2损失梯度随误差减小的特性来得到更精确的最小值,也对局外点具有更好的鲁棒性。但Huber损失函数的良好表现得益于精心训练的超参数
。Log-Cosh损失拥有Huber损失的所有优点,并且在每一个点都是二次可导的,这在很多机器学习模型中是十分必要的。
更多的回归指标请参照sklearn回归指标
分类模型的评估指标和调用方法
错误率与精度:
错误率表示分类错误的样本数占样本总数的比例,精度表示分类正确的样本数占样本总数的比例。
查准率、查全率
查准率(precision)、查全率(recall,召回率)与F1:在推荐系统、信息检索、Web搜索中需求较大。
对于二分类问题,可以通过样本预测类别和真实类别组合为下列的分类结构混淆矩阵(confusion matrix)
其中查准率与查全率
分别定义为:
查准率与查全率
为一对矛盾的度量,一般情况下,查准率较高时,查全率较低。我们可以将查准率理解为“不可冤枉一个好人”,查全率理解为“宁可错杀一千,不可放过一人”
P-R曲线
在很多情况下,可以根据分类器的预测结果对样本进行排序,排在最前面的是学习器认为“最可能”是正例的样本,排在最后的则是认为“最不可能”的样本。按此顺序逐个对样本作为正例进行预测,则每次可以计算出当前的查准率、查全率。进而得到下面的P-R曲线。
对于线性模型来说,可以设置一个阈值,当模型输出大于阈值时,判定为正例。然后不断提高模型阈值,每次阈值都会对应一个Precision和Recall。这样就可以画出P-R曲线
当需要对比两个学习器的性能时
- 若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者
- 当曲线发生交叉
- 比较曲线下面积大小—但不太容易计算。
- 比较平衡点(Break-Even Point,BEP):当查准率=查全率的取值,但过于简化。
- 常用的F1度量:
当P=R时,F1达到最大值。最大值为1,最小值为0.
例如,在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确实是用户感兴趣的,此时查准率更重要;在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要。
的一般形式——
以下情形中,进行多次训练/测试,每次得到一个混淆矩阵;或是在多个数据集上进行训练/测试,希望估计算法的“全局”性能;或是执行多分类任务。我们得到多个二分类混淆矩阵,希望可以综合考察查准率和查全率。
- 现在各混淆矩阵上分别计算出查准率和查全率,记为
,再计算平均值,这样就得到**“宏查准率”(macro-P)、“宏查全率”(macro-R),以及“宏F1”(macro-F1)**。
- 或者先计对混淆矩阵各元素进行平均,得到
,再基于平均值计算出**“宏查准率”(macro-P)、“宏查全率”(macro-R),以及“宏F1”(macro-F1)**。
ROC与AUC
真正例率:真实正例被预测为正例的比例
假正例率:真实反例被预测为正例的比例
sklearn调用方式:
Logistic损失(Logistic loss)
负对数似然损失(Negative Log Likelihood loss)
交叉熵损失(Cross Entropy loss)
Logistic损失用于解决每个类别的二分类问题,为了方便数据集把最大似然转化为负对数似然,而得到负对数似然损失,交叉熵损失从两个类别扩展到M个类别,交叉熵损失在二分类时应当是负对数似然损失。
更多的分类指标请参照[sklearn分类指标](
参考资料
R-squared or coefficient of determination