机器学习的评价指标

个人觉得机器学习算法的好坏主要由4个因素决定:

  • 模型精度
  • 判别速度
  • 模型占用资源情况
  • 模型训练速度

后面三个的情况的好坏都比较直观(判别速度就是模型的吞吐量,每秒可以处理多少条数据;模型占用资源就是模型需要占用多少内存;训练速度就是模型训练需要花费多长时间),而精度的评价指标却比较多,而且评价指标在一定程度上相当于损失函数,模型优化的对象。现在就来总结一下常见的模型精度的评价指标。

回归问题

回归问题常见的评价指标有:

RMSE(Root Mean Square Error)

Ermse=i=1N(y^iyi)2N

MSE (Mean Square Error)

Emse=i=1N(y^iyi)2N

前面两个由于误差是平房形式的,所以对某一两个异常值特别敏感,一两个异常值会使得整个模型有所偏斜。但是他们的好处是方便求导,符合高斯分布的假设,用的是最多的。

MAE(mean absolute error)

Emae=i=1N|y^iyi|N

MAPE(mean absolute percentage error)

Emape=1Ni=1N|y^iyi||yi|

改进的MAPE

Emape=2Ni=1N|y^iyi||yi|+|y^i|

避免了yi为0的情况,但会比“直观感受”偏小一点。MAPE相当于相对误差,MAE和MSE相当于绝对误差。

拟合优度(Goodness of Fit)

GoF=1i=1N(yiy^i)2i=1N(yiy¯i)2

这个是越大越好。

分类问题

分类问题的评价指标比回归要丰富的多,因为分类的场景不同,需要的评价指标也不同。分类问题对错最基础的概念就是混淆矩阵:

混淆矩阵 真实值为真 真实值为假
预测值为真 TP FP
预测值为假 TN FN

机器学习的评价指标

同理可以推广到多分类问题上,各种评价指标都是依赖于这个矩阵产生的。

准确率(Accuracy)

acc=TP+TNTP+FP+TN+FN=

精确率(Precision)

P=TPTP+FP

感觉他另一个名字“查准率”更能体现这个指标的意思,当不要误判成为很关键的因素的时候,就需要重点看这个指标了。用通俗的话解释他就是A类别的精确率等于预测为A且正确的样本数除以预测为A的样本总数。

召回率(Recall)

R=TPTP+FN

另外一个名字“查全率”更容易理解。当不要漏判成为很关键的因素的时候,就需要重点看这个指标了。用通俗的话解释他就是A类别的精确率等于预测为A且正确的样本数除以A的样本总数。

F1 score

f1=2PRP+R

Fα score

fα=(1+α2)PRα2P+R

F系列的指标是精确率、召回率的调和平均,体现了对精确率和召回率的权衡,加入α相当于一个对精确率召回率的偏好。

Gini系数

Gini=1ipi2

mean(Gini)=1Nk=1KnkGinik

Gini系数相当于纯度,pi是集合中数据为i类的概率

交叉熵

loss=iyilny^i

交叉熵也是从概率的角度来确定损失函数的,直观

准确率、 Gini系数、交叉熵的各个类别类是平权的,精确率更在意的预测为真的不要预测错了,召回率更在意的是本来是真的不要预测错了。 f1fα是精确率和召回率的权衡。

等错误率(EER, Equal Error Rate)

FA(False Acceptance)错误接受率:FA=FPTP+FP=1P
FR(False Rejection)错误拒绝率:FR=FNTN+FN
等错误率(EER, Equal Error Rate): 当FA=FR时,EER=FA=FR

ROC曲线与AUC值

纵轴为真阳性率(TPR),即,灵敏度、命中率、召回,定义为TPR=TPTP+FN
横轴假阳性率(FPR),即,误检率,定义为FPR=FPFP+TN
如果ROC是光滑的,那么基本可以判断没有太大的overfitting。
ROC曲线下方的面积为AUC值。
机器学习的评价指标

PRC曲线与mAP

PRC(precision recall curve):如果只能选一个指标的话,肯定是选PRC了。可以把一个模型看的一清二楚。在正负样本分布得极不均匀(highly skewed datasets)的情况下,PRC比ROC能更有效地反应分类器的好坏。mAP值是PRC的面积。
机器学习的评价指标

检验分布的评价指标

卡方分布:n个独立同分布的随机变量,都服从标准正态分布,那么平方和服从的分布就是*度为n的卡方分布。

卡方检验

卡方检验是用来检验一个分布是否满足一个已知的分布。具体计算公式是

χ2=i=1Kfinpinpi

fi是落在某一区间的实验频次,npi为理论值,他应该服从*度为K1的卡方分布,查表判断是否拒绝设定的分布假设。

K-S检验

K-S检验时判断两个分布是否同为相同分布。计算需要做比较的两组观察数据的累积分布函数,然后求这两个累积分布函数的差的绝对值中的最大值D。最后通过查表以确定D值是否落在所要求对应的置信区间内。
机器学习的评价指标

t检验

t分布:n个标准正态分布的均值的分布
t检验:比较两个平均数的差异是否显著,主要用于样本含量较小(例如n<30),总体标准差σ未知的正态分布。

  • 步骤1.计算统计量
    • 单总体t检验:t=x¯μs/n, s=i=1n(xix¯)n1
    • 双总体t检验:t=x¯1x¯2(n11)s12+(n21)s22n1+n22(1n1+1n2), s=i=1n(xix¯)n1
    • 配对样本t检验:若二群配对样本满足xi=y1iy2it=x¯μs/n, s=i=1n(xix¯)n1, μ为本身配对的常数差距。
  • 步骤2.满足n-1的t分布,查表判断是否拒绝

F检验

两个分布的方差的比满足f分布,查表判断两组数据的方差没有显著差异

Ad-Fuller test(augmented Dickey–Fuller test (ADF) tests)

检验过程是否平稳。yt+1=ρyt+utΔyt=δyt+ut,回归之后查表看δ是否满足平稳。