上次说到,人有三六九等,模型有好坏之分。对学习器的泛化性能进行评估,不仅需要可行的估计方法,也需要衡量泛化能力的评价标准,this is 性能度量。相同的性能度量可能会对不同的模型有不同的结果,意味着模型好坏是相对的,一个好的模型不仅取决于算法,也取决于需求。比如说你学数学的过程中需要你有理性的思维去解决问题,学语文的过程更多是要有感性的思维,你无法说理性思维和感性思维孰优孰劣,在解决不同的问题时不同的思维会有着不同的效果。
言归正传,让我们看一下性能度量的公式:
给定数据集 ,评估的学习器
,
是
的真实标记
性能度量一:均方误差(适用于回归任务):
很显然均方误差意在把真实值和预测值做差来判断误差大小,至于为什么加了平方,就是为了去负号从而把所有误差相加,那为什么不做绝对值或者做欧氏距离呢,我只能说差不多就得了,都一样的玩意儿,加个平方就很好了。
性能度量二:错误率(e)和精度(acc)(适用于分类任务):
从公式上看错误率就是错误个数比上总数。。。书上非得不设未知数,写了个这么长的。。。
性能度量三:查准率(P)、查全率(R)、P-R曲线、F1(适用于二分类问题):
真实 | 预测结果 | |
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
可以发现查全率和查准率是相互矛盾的度量,查全率高时查准率往往偏低,反之亦然,只有在简单的任务中两者可能同时很高。对于不同的任务,我们需要的也不同,比如医院预测病人是否生病,我们不怕没生病的人预测为生病,我们怕的是生病的人判为没病,这时我们就需要查全率要高。再比如我们生产一批灯泡,灯泡有好坏之分,我们不怕好灯泡预测为坏灯泡,我们怕坏灯泡预测到好灯泡中影响产品质量,这时我们的查准率就要高。
很多情形下,我们为了综合P和R进行考量一个模型,我们可以建立P-R曲线,我们先根据学习器的预测结果对样例进行排序,排在最前面的是最有可能是正例的样本,排在最后的是最不可能是正例的样本,然后我们逐个把样本作为正例进行预测(个人感觉很麻烦,而且要计算出每一个样本的P和R我觉得还需要大量的实验,对于数据少的模型应该可以),计算出当前的P和R,以P为横轴R为纵轴建立直角坐标系:(我们以A、B、C三个学习器为例)
上图就是我们绘制的P-R曲线也称PR图,正常来说一个曲线可以包住另一个曲线,那么前者就是更优的曲线,也就是A学习器要优于B和C,但是B和C两曲线交叉就很难判断出优劣。所以我们需要找出一个平衡点(BEP)来判断,平衡点呢就是P=R的点,也就是我们的曲线与P=R这条直线的交点:
如这个粗糙的图所示,我们平衡点上的P和或R越大我们的学习器越优。由此我们就可以判断出,在综合查准率和查全率的前提下,A学习器优于B学习器优于C学习器。
相对来讲BEP还是差点意思,比如两曲线相交的点刚好是BEP这个点我们怎么区分,总之BEP还是太low了,所以我们引出新的公式F1度量:
上过高中的你一定一眼就看出来了,这是两个式子相加再倒数得来的:
这不就是调和平均数嘛,引用一个比较有趣的例子来理解一下调和平均数(感谢博客园的米太白大佬):
所以说调和平均数考虑的是总和而不是单纯的某一个数值,所以对于综合考虑P和R来讲是不错的选择,至于说为什么不选算数平均和几何平均呢,算数平均和几何平均都没有调和平均更重视较小值。。。
在前面也有叙述,不同的任务可能需要的查全率和查准率各不相同,我们也可以像线性回归、神经网络一样,我们给F1加权,得到一个加权调和平均:
β大于0度量了查全率对查准率的相对重要性,β等于1时就是一般的F1,大于1时查全率有更大影响,小于1时查准率有更大影响。
很多时候我们还会遇到多个混淆矩阵,我们要计算它们的平均F1一般有两种方式,一种是宏F1(macro-F1),一种是微F1(micro-F1),宏就是先计算后平均,微就是先平均后计算:
然后带入到F1的公式就可以了。
性能度量四:ROC曲线:
这就不得不提到PR曲线了,我们的ROC曲线的横纵轴和PR曲线不同,我们的横轴时真正例率(TPR),纵轴是假正例率(FPR):
绘制的ROC曲线理想情况下是上图这种光滑的曲线,一般情况下样本有限画出的是下图这样的:
判断ROC曲线的好坏看的是图中灰色部分的面积,也就是AUC,AUC要如何进行计算呢?我们把上图进行拆分:
这不就是一堆梯形么,我们把这些梯形面积求出来不就得了,我们把相邻两点间的所有梯形面积相加就好了,至于有很多FPR相同的相邻点,我们求梯形面积时它们不就是0了嘛,我们先令FPR为x,TPR为y,按照排序我们点的坐标值为我们其中一个梯形的上底是
,下底是
,高就是
,我们得到我们的AUC粗略的公式:
才疏学浅,请多指教,后续还会更新性能度量指标