常用的模型评价指标以及他们的一些问题
0x01 常用指标
混淆矩阵 Confusion Matrix
T和F表示预测结果是True还是False,P和N则表示正样本和负样本。
TP表示正样本被预测正确的数目,TN表示负样本被预测正确的数目。
FP表示正样本被预测为负样本的数目,FN表示负样本被预测为正样本的数目。
sklearn的混淆矩阵示例是一个三分类,所以考虑了多分类的混淆矩阵应该怎么表示。
混淆矩阵M的每一行表示真实的类,每一列表示预测的类。
重点关注混淆矩阵的对角线区域,它表示实际类别和预测类别相一致,即TP
区域。
准确率
- 公式 :$ Accuracy = \frac{n{correct}}{n{total}} $
- 预测正确的占全部比例,最简单的指标
精确率
- 公式 :$Precision = \frac{TP}{TP+FP}$
- “你认为是对的里,有多少是对的”
召回率
- 公式 :$Recall = \frac{TP}{TP+FN}$
- “所有对的里,你找到了多少”
精确率和召回率是一对欢喜冤家
- Precision值和Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低。反之亦然。
- 基于以上特点,就出现了F1-Score评价指标。
F1-Score
从公式的后半部分可以看出,F1-Score的目的就是同时提高精确率和召回率。
P-R 曲线 (附图右图)
- 横坐标为召回率,纵坐标为精确率
- 根据不同阈值下获得的每一个结果作为每一个点,绘制曲线图。(存在先排序,切分坐标系,直接填结果的画图方式,不需要不同阈值反复统计)
FPR 误报率 假阳性率(False Positive Rate,FPR)
假的里有多少被判为真了
TPR 检出率 真阳性 率(True Positive Rate,TPR)
真的里有多少检测出来了
ROC 曲线 (附图左图)
- 横坐标FPR,纵坐标TPR
- 同样根据不同阈值下的预测结果来确定FPR TPR,即一对坐标
- Receiver Operating Characteristic Curve | 受试者工 作特征曲线 起源见附录
AUC
- Aera Under Curve,曲线下的面积
- AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
ROC曲线 P-R曲线区别
- ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。
- 若选择不同的测试集,P-R曲线的变化就会非常大,而ROC曲线则 能够更加稳定地反映模型本身的好坏。ROC曲线的适用场景更多,被广泛 用于排序、推荐、广告等领域。
- 如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够更直观地反映其性能。
MSE 均方误差 (Mean Squared Error )
RMSE 平方根误差
- 容易受离群点(Outlier)影响
- 离群点要么过滤,要么加入建模(复杂),要么使用其他误差评估指标,比如MAPE
MAE (Mean Absolute Error) 平均绝对误差是绝对误差的平均值
MAPE
标准差 SD
马修斯相关系数 —- MCC
“马修斯相关系数 —- MCC 主要用于衡量二分类问题,其综合考虑了 TP TN, FP , FN, 是一个比较均衡的指标, 对于样本不均衡情况下也可以使用。MCC的取值范围在 [-1, 1], 取值为1 表示预测与实际完全一致, 取值为0表示预测的结果还不如随机预测的结果, -1 表示预测结果与实际的结果完全不一致。因此我们看到, MCC 本质上描述了预测结果与实际结果之间的相关系数。”
0x02 模型评估方法
- Holdout检验
- 正常划分 训练集验证集
- 交叉检验
- k-fold交叉验证
- 留一验证(留P验证)
- 必须进行$C^{P}_{N}$次训练和验证
- 自助法
- 又放回抽取N次抽取
- 当N趋近去无穷大时,未被抽取的概率:
- 某一个样本N次都未被抽取的改率
- $(1-\frac{1}{n})^{n}$
- 根据重要极限$\lim_{x \to \infty} (1+\frac{1}{n})^{n} = e$
- 最终结果等于$\frac{1}{e}$,约等于0.368
- 某一个样本N次都未被抽取的改率
0x03 过拟合 欠拟合
统计学习方法里说过,模型能够学习的必要条件,就是存在绝对误差下届,也是拟合的前提。
解决过拟合
- 更多数据(保证质量)
- 降低模型复杂度,减少参数
- 正则化
- 集成学习
解决欠拟合
- 的反方法。
0x04 其他问题
4-1 调参方法
- 网格搜索
- 全局搜索,可以调整步长跳跃尝试,但目标函数通常非凸,容易跳过最优点
- 随机搜索
- 贝叶斯优化
- 会根据先验分布假设搜集函数,根据后验分布,给出最优值可能的点
- 容易陷入局部最优,会尝试新区域继续探索或者该区域继续利用
- Google Vizier
- ACCESS审稿过一篇文章说过一种调参方法
- The Slap Swarm Algorithm (SSA) is a heuristic algorithm that simulates the foraging of slaps in the biological world [28]. “ There should be “salp” instead of “slap”.
- AutoML/DL
4-2 余弦相似度
- 余弦相似度
- 余弦距离
4-3 A/B测试
独立 互不影响
无偏 随机抽取
参考文献
- 精确率,召回率,F1值的通俗解释
- 《百面机器学习》
- 《统计学习方法》
- 【机器学习】均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)
- python实现混淆矩阵
附图:
附录:
ROC曲线最早是运用在军事上的,后来逐渐运用到医学领域,并于20世纪80年代后期被引入机器学习领域。相传在第二次 世界大战期间,雷达兵的任务之一就是死死地盯住雷达显示器,观察是否有敌机来袭。理论上讲,只要有敌机来袭,雷达屏幕上 就会出现相应的信号。但是实际上,如果飞鸟出现在雷达扫描区域时,雷达屏幕上有时也会出现信号。这种情况令雷达兵烦恼不 已,如果过于谨慎,凡是有信号就确定为敌机来袭,显然会增加误报风险;如果过于大胆,凡是信号都认为是飞鸟,又会增加漏 报的风险。每个雷达兵都竭尽所能地研究飞鸟信号和飞机信号之间的区别,以便增加预报的准确性。但问题在于,每个雷达兵都 有自己的判别标准,有的雷达兵比较谨慎,容易出现误报;有的雷达兵则比较胆大,容易出现漏报。 为了研究每个雷达兵预报的准确性,雷达兵的管理者汇总了所有雷达兵的预报特点,特别是他们漏报和误报的概率,并将 这些概率画到一个二维坐标系里。这个二维坐标的纵坐标为敏感性(真阳性率),即在所有敌机来袭的事件中,每个雷达兵准确 预报的概率。而横坐标则为1-特异性(假阳性率),表示在所有非敌机来袭信号中,雷达兵预报错误的概率。由于每个雷达兵的 预报标准不同,且得到的敏感性和特异性的组合也不同。将这些雷达兵的预报性能进行汇总后,雷达兵管理员发现他们刚好在一 条曲线上,这条曲线就是后来被广泛应用在医疗和机器学习领域的ROC曲线。