模型评价指标,精确,精准,召回真的那么难么?

引言

一般做机器学习任务,以预测某一个类别为原则来评价原则。常用的术语。以病人为例, 分为 癌症患者, 非癌症患者, 确诊的癌症患者, 误诊的癌症患者

  • positive :正样本 – 癌症患者
  • negtive : 负样本 – 非癌症患者
  • true :正确分类 – 明确确诊,也就是模型判断的正负
  • false : 错误分类 – 误诊
None Positive Negtive
True TP TN
False FP FN

评估指标

分类

故事: 一万个影集模型检查出来小黄片,小黄片一共有9000部,正常片 1000 部,用训练好的模型识别出来了 8000部小黄片,其中200部是岛国老师拍的非黄片,正常片模型识别出来 2000部, 其中1200 部是小黄片,可能因为老师换了新人。

None 黄片 非黄片
7800 800
1200 200
  • 准确率:模型分类正确的样本,占了多少比例,这里 86%
    模型评价指标,精确,精准,召回真的那么难么?
  • 精确率: 在模型判别的正样例中,多少是正确的 86.666 %
    模型评价指标,精确,精准,召回真的那么难么?
  • 召回 :判断对的正样本在所有***真实正样本***中的比例 97.5 %
    模型评价指标,精确,精准,召回真的那么难么?

回归

RMSE

直观看出模型好坏方案

ROC曲线. AUC 值

横坐标:False Positive Rate

  • FP / N 负样本被判成正的,这些负样本占总体的比例

纵坐标: True Positive Rate

  • TP / P 正确分类的正样本占正样本的比例

如何绘制ROC

这里有个很关键的评判标准,一个样本,大于多少评为正合适,ROC曲线就是这样来的,这个评价的标准成为截断点。通过动态的调整截断点,从最高的得分开始,逐渐调整到最低分,每个阶段点都会对应一个FPR 和 TP,在ROC图上绘制出每个截断点对应的位置, 链接起来就得到最终的 ROC

模型的评估方法

留出法:将数据集 划分为两个互斥的集合,其中⼀个集合作为训练集,另⼀个作为测试集。在训练集上训练模型,在测试
集上测试误差,作为对泛华能⼒的评估。

k折交叉验证:将数据集 划分为 个⼤⼩相似的互斥⼦集。每次
⽤ k - 1 个⼦集的并集作为训练集,余下的⼦集作为测试集。可得到 组训练集、测试集。最终返回的是k个测试结果的均值。

自助法:对于样本为n 的集合, 进行 n 次有放回随机采样, 得到大小为 n 的训练集, n次采样过程中,有的样本会被重复采样,有的没有被抽出过,将这些没有被抽出的样本作为验证集。

拟合问题

过拟合会发生,训练误差小,测试误差高,模型的泛化能力很低。

从公式的角度出发,顺带复习结构风险最小化和经验风险最小化

经验风险最小化

模型评价指标,精确,精准,召回真的那么难么?

结构风险最小化

模型评价指标,精确,精准,召回真的那么难么?
加入偏差与方差来看两个风险函数, 经验风险函数仅仅只有偏差,并没有考虑到泛化能力,而结构风险函数考虑到泛化问题,加入了方差(也是正则化)。常说的 l0 normal l1 normal l2 normal,顺带说,l0 l1 更容易得到稀疏向量。模型评价指标,精确,精准,召回真的那么难么?

  • 偏差大,说明模型学习的能力还不足,没有学习到模型的特征,也叫欠拟合。对应图像来说就是,打的太偏了,虽然很密集
    • 解决办法
      • 做特征工程,添加跟多的特征项。如果欠拟合是由于特征项不够,没有足够的信息支持模型做判断。
      • 增加模型复杂度。如果模型太简单,不能够应对复杂的任务。可以使用更复杂的模型,减小正则化系数。比如说可以使用SVM的核函数,增加了模型复杂度,把低维不可分的数据映射到高维空间,就可以线性可分,减小欠拟合。还可以使用一些集成学习方法。
      • 集成学习方法boosting(GBDT)
      • 减小正则化系数
  • 方差大,测试集过度学习,很大程度上学习到了噪声的特征,所以在验证集上表现很差。虽然打到了,但是太散了,太散就说明,啥也学,过了。
    • 原因
      • 训练数据集样本单一,样本不足。如果训练样本只有负样本,然后那生成的模型去预测正样本,这肯定预测不准。所以训练样本要尽可能的全面,覆盖所有的数据类型
      • 噪声影响过大
      • 模型过于复杂
    • 解决办法
      • 在训练和建立模型的时候,从相对简单的模型开始,不要一开始就把特征做的非常多,模型参数跳的非常复杂。
      • 增加样本,要覆盖全部的数据类型。数据经过清洗之后再进行模型训练,防止噪声数据干扰模型。
      • 正则化。在模型算法中添加惩罚函数来防止过拟合。常见的有L1,L2正则化。
      • 集成学习方法bagging(如随机森林)能有效防止过拟合
      • 减少特征个数(不是太推荐)

问:如果训练样本无穷大,模型在训练集上的趋势是什么? bias 减小