个人觉得机器学习算法的好坏主要由4个因素决定:
- 模型精度
- 判别速度
- 模型占用资源情况
- 模型训练速度
后面三个的情况的好坏都比较直观(判别速度就是模型的吞吐量,每秒可以处理多少条数据;模型占用资源就是模型需要占用多少内存;训练速度就是模型训练需要花费多长时间),而精度的评价指标却比较多,而且评价指标在一定程度上相当于损失函数,模型优化的对象。现在就来总结一下常见的模型精度的评价指标。
回归问题
回归问题常见的评价指标有:
RMSE(Root Mean Square Error)
MSE (Mean Square Error)
前面两个由于误差是平房形式的,所以对某一两个异常值特别敏感,一两个异常值会使得整个模型有所偏斜。但是他们的好处是方便求导,符合高斯分布的假设,用的是最多的。
MAE(mean absolute error)
MAPE(mean absolute percentage error)
改进的MAPE
避免了 yi y i 为0的情况,但会比“直观感受”偏小一点。MAPE相当于相对误差,MAE和MSE相当于绝对误差。
拟合优度(Goodness of Fit)
这个是越大越好。
分类问题
分类问题的评价指标比回归要丰富的多,因为分类的场景不同,需要的评价指标也不同。分类问题对错最基础的概念就是混淆矩阵:
混淆矩阵 | 真实值为真 | 真实值为假 |
---|---|---|
预测值为真 | TP | FP |
预测值为假 | TN | FN |
同理可以推广到多分类问题上,各种评价指标都是依赖于这个矩阵产生的。
准确率(Accuracy)
精确率(Precision)
感觉他另一个名字“查准率”更能体现这个指标的意思,当不要误判成为很关键的因素的时候,就需要重点看这个指标了。用通俗的话解释他就是A类别的精确率等于预测为A且正确的样本数除以预测为A的样本总数。
召回率(Recall)
另外一个名字“查全率”更容易理解。当不要漏判成为很关键的因素的时候,就需要重点看这个指标了。用通俗的话解释他就是A类别的精确率等于预测为A且正确的样本数除以A的样本总数。
F1 score
Fα F α score
F系列的指标是精确率、召回率的调和平均,体现了对精确率和召回率的权衡,加入 α α 相当于一个对精确率召回率的偏好。
Gini系数
Gini系数相当于纯度, pi p i 是集合中数据为 i i 类的概率
交叉熵
交叉熵也是从概率的角度来确定损失函数的,直观
准确率、 Gini系数、交叉熵的各个类别类是平权的,精确率更在意的预测为真的不要预测错了,召回率更在意的是本来是真的不要预测错了。 f1 f 1 、 fα f α 是精确率和召回率的权衡。
等错误率(EER, Equal Error Rate)
FA(False Acceptance)错误接受率:
FA=FPTP+FP=1−P
F
A
=
F
P
T
P
+
F
P
=
1
−
P
FR(False Rejection)错误拒绝率:
FR=FNTN+FN
F
R
=
F
N
T
N
+
F
N
等错误率(EER, Equal Error Rate): 当
FA=FR
F
A
=
F
R
时,
EER=FA=FR
E
E
R
=
F
A
=
F
R
ROC曲线与AUC值
纵轴为真阳性率(TPR),即,灵敏度、命中率、召回,定义为
TPR=TPTP+FN
T
P
R
=
T
P
T
P
+
F
N
。
横轴假阳性率(FPR),即,误检率,定义为
FPR=FPFP+TN
F
P
R
=
F
P
F
P
+
T
N
。
如果ROC是光滑的,那么基本可以判断没有太大的overfitting。
ROC曲线下方的面积为AUC值。
PRC曲线与mAP
PRC(precision recall curve):如果只能选一个指标的话,肯定是选PRC了。可以把一个模型看的一清二楚。在正负样本分布得极不均匀(highly skewed datasets)的情况下,PRC比ROC能更有效地反应分类器的好坏。mAP值是PRC的面积。
检验分布的评价指标
卡方分布:n个独立同分布的随机变量,都服从标准正态分布,那么平方和服从的分布就是自由度为n的卡方分布。
卡方检验
卡方检验是用来检验一个分布是否满足一个已知的分布。具体计算公式是
fi f i 是落在某一区间的实验频次, npi n p i 为理论值,他应该服从自由度为 K−1 K − 1 的卡方分布,查表判断是否拒绝设定的分布假设。
K-S检验
K-S检验时判断两个分布是否同为相同分布。计算需要做比较的两组观察数据的累积分布函数,然后求这两个累积分布函数的差的绝对值中的最大值D。最后通过查表以确定D值是否落在所要求对应的置信区间内。
t检验
t分布:n个标准正态分布的均值的分布
t检验:比较两个平均数的差异是否显著,主要用于样本含量较小(例如n<30),总体标准差
σ
σ
未知的正态分布。
- 步骤1.计算统计量
- 单总体t检验: t=x¯−μs/n√ t = x ¯ − μ s / n , s=∑ni=1(xi−x¯)n−1−−−−−−−−√ s = ∑ i = 1 n ( x i − x ¯ ) n − 1
- 双总体t检验: t=x¯1−x¯2(n1−1)s21+(n2−1)s22n1+n2−2(1n1+1n2)√ t = x ¯ 1 − x ¯ 2 ( n 1 − 1 ) s 1 2 + ( n 2 − 1 ) s 2 2 n 1 + n 2 − 2 ( 1 n 1 + 1 n 2 ) , s=∑ni=1(xi−x¯)n−1−−−−−−−−√ s = ∑ i = 1 n ( x i − x ¯ ) n − 1
- 配对样本t检验:若二群配对样本满足 xi=y1i−y2i x i = y 1 i − y 2 i , t=x¯−μs/n√ t = x ¯ − μ s / n , s=∑ni=1(xi−x¯)n−1−−−−−−−−√ s = ∑ i = 1 n ( x i − x ¯ ) n − 1 , μ μ 为本身配对的常数差距。
- 步骤2.满足n-1的t分布,查表判断是否拒绝
F检验
两个分布的方差的比满足f分布,查表判断两组数据的方差没有显著差异
Ad-Fuller test(augmented Dickey–Fuller test (ADF) tests)
检验过程是否平稳。 yt+1=ρyt+ut⇒Δyt=δyt+ut y t + 1 = ρ y t + u t ⇒ Δ y t = δ y t + u t ,回归之后查表看 δ δ 是否满足平稳。