自学深度学习(三)机器学习之性能度量

上次说到,人有三六九等,模型有好坏之分。对学习器的泛化性能进行评估,不仅需要可行的估计方法,也需要衡量泛化能力的评价标准,this is 性能度量。相同的性能度量可能会对不同的模型有不同的结果,意味着模型好坏是相对的,一个好的模型不仅取决于算法,也取决于需求。比如说你学数学的过程中需要你有理性的思维去解决问题,学语文的过程更多是要有感性的思维,你无法说理性思维和感性思维孰优孰劣,在解决不同的问题时不同的思维会有着不同的效果。

言归正传,让我们看一下性能度量的公式:

给定数据集D=\left \{(x_1,y_1 ),(x_2,y_2 ),...,(x_m,y_m ) \right \} ,评估的学习器fy_ix_i的真实标记

性能度量一:均方误差(适用于回归任务)

MSE = \frac{1}{m}\sum_{i=1}^{m}(f(x_i)-y_i)^{2}

很显然均方误差意在把真实值和预测值做差来判断误差大小,至于为什么加了平方,就是为了去负号从而把所有误差相加,那为什么不做绝对值或者做欧氏距离呢,我只能说差不多就得了,都一样的玩意儿,加个平方就很好了。

性能度量二:错误率(e)和精度(acc)(适用于分类任务)

e = \frac{1}{m}\sum_{i=1}^{m}\amalg (f(x_i)\neq y_i)

acc = 1-e

从公式上看错误率就是错误个数比上总数。。。书上非得不设未知数,写了个这么长的。。。

性能度量三:查准率(P)、查全率(R)、P-R曲线、F1(适用于二分类问题)

混淆矩阵
真实预测结果
正例反例
正例TP(真正例)FN(假反例)
反例FP(假正例)TN(真反例)

P = \frac{TP}{TP+FP}

R = \frac{TP}{TP+FN}

可以发现查全率和查准率是相互矛盾的度量,查全率高时查准率往往偏低,反之亦然,只有在简单的任务中两者可能同时很高。对于不同的任务,我们需要的也不同,比如医院预测病人是否生病,我们不怕没生病的人预测为生病,我们怕的是生病的人判为没病,这时我们就需要查全率要高。再比如我们生产一批灯泡,灯泡有好坏之分,我们不怕好灯泡预测为坏灯泡,我们怕坏灯泡预测到好灯泡中影响产品质量,这时我们的查准率就要高。

很多情形下,我们为了综合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度量:

F1 = \frac{2*P*R}{P+R}

上过高中的你一定一眼就看出来了,这是两个式子相加再倒数得来的:

\frac{1}{F1}=\frac{1}{2}\left ( \frac{1}{P}+\frac{1}{R} \right )

这不就是调和平均数嘛,引用一个比较有趣的例子来理解一下调和平均数(感谢博客园的米太白大佬):

 所以说调和平均数考虑的是总和而不是单纯的某一个数值,所以对于综合考虑P和R来讲是不错的选择,至于说为什么不选算数平均和几何平均呢,算数平均和几何平均都没有调和平均更重视较小值。。。

在前面也有叙述,不同的任务可能需要的查全率和查准率各不相同,我们也可以像线性回归、神经网络一样,我们给F1加权,得到一个加权调和平均F_\beta

\frac{1}{F_\beta}=\frac{1}{1+\beta^{2}}\left ( \frac{1}{P}+\frac{\beta^{2}}{R} \right )

F_\beta = \frac{\left ( 1+\beta^{2} \right )*P*R}{\left ( \beta^{2}*P \right )+R}

β大于0度量了查全率对查准率的相对重要性,β等于1时就是一般的F1,大于1时查全率有更大影响,小于1时查准率有更大影响。
很多时候我们还会遇到多个混淆矩阵,我们要计算它们的平均F1一般有两种方式,一种是宏F1(macro-F1),一种是微F1(micro-F1),宏就是先计算后平均,微就是先平均后计算:

macroP = \frac{1}{n}\sum P

macroR = \frac{1}{n}\sum R

microP = \frac{\frac{}{TP}}{\frac{}{TP}+\frac{}{FP}}

microR = \frac{\frac{}{TP}}{\frac{}{TP}+\frac{}{FN}}

然后带入到F1的公式就可以了。

性能度量四:ROC曲线:

这就不得不提到PR曲线了,我们的ROC曲线的横纵轴和PR曲线不同,我们的横轴时真正例率(TPR),纵轴是假正例率(FPR):

TPR = \frac{TP}{TP+FN}

FPR = \frac{FP}{TN+FP}

 绘制的ROC曲线理想情况下是上图这种光滑的曲线,一般情况下样本有限画出的是下图这样的:

 判断ROC曲线的好坏看的是图中灰色部分的面积,也就是AUC,AUC要如何进行计算呢?我们把上图进行拆分:

 这不就是一堆梯形么,我们把这些梯形面积求出来不就得了,我们把相邻两点间的所有梯形面积相加就好了,至于有很多FPR相同的相邻点,我们求梯形面积时它们不就是0了嘛,我们先令FPR为x,TPR为y,按照排序我们点的坐标值为\left ( x_1,y_1 \right ),\left ( x_2,y_2 \right ),\left ( x_3,y_3 \right ),...\left ( x_m,y_m \right ),我们其中一个梯形的上底是y_i,下底是y_{i+1},高就是\left ( x_{i+1}-x_i \right ),我们得到我们的AUC粗略的公式:

AUC =\frac{1}{2}\sum_{i=1}^{m-1}\left ( y_i+y_{i+1} \right )\left (x_{i+1}-x_i \right )

才疏学浅,请多指教,后续还会更新性能度量指标

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值