机器学习笔记3 - 模型评估与性能度量

模型在训练集上误差称为训练误差,在测试集上的误差称为测试误差,在未知数据上误差称为泛化误差;测试误差可以作为泛化误差的近似。

评估方法

  • 评估模型的泛化能力,用以指导模型参数的确定。

1. 留出法(hold-out)

  • 将数据集划分为互斥的两部分(训练集和测试集)
  • 数据集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入的额外偏差而对最终的结果产生影响。
  • 单次使用留出法得到的估计结果往往不够稳定可靠,一般要采用若干次不同划分方式的随机划分重复进行试验评估后取平均值作为留出法的评估结果。

2. 交叉验证法(corss validation)

k-fold验证:

将数据集随机均分成k个子集(也要尽可能保证数据分布的一致性),选取k-1个子集作为训练集,余下的1个子集作为测试集,用测试集的数据评估训练的模型,得到一个评估指标(如SSE),总共进行k次这样的测试,然后对k个评估指标进行“一定的处理”(如取均值等),得到最终的模型评估指标。


image.png

p次k-fold验证:

将数据集划分为k个子集有多种划分方式,为减少因样本划分不同而引入的差别,k-fold交叉检验通常要随机使用不同的划分重复p次,最终的评估结果是这p次k-fold交叉检验的结果。

补充

  • k的取值需要考虑算力的问题,极端情况下,可以进行m次(m为样本数)。

3. 自助法(bootstrapping)

  • 留出法和交叉验证法在训练模型时都只使用了部分数据,这可能会引入由训练样本规模不同导致的估计偏差。
  • 自助采样:从原数据集中有放回的取m个样本构成新的数据集,作为训练集(原数据集中会有一些样本在测试集中出现多次,而有的样本则不会出现)。原数据集中去掉训练集的部分作为测试集(约占原数据集的\frac{1}{3})。 需要注意的是,这种方法获得的训练集改变了原来数据集的分布,这会引入偏差。
  • 自助法在数据集较小难以有效划分训练/测试集时很有用,当数据量足够时,最好不要用这种方法。

4、调参(parameter tuning)

  • 对选定的模型涉及的参数在一定范围内按一定步长来设置不同参数,以评估模型的泛化误差。
  • 对于给定的数据集,由于在模型的评估与选择过程中留了一部分数据做测试,也就是说只用了部分数据进行了模型训练;故,在模型选择完成后,学习算法和参数配置已选定,此时应该用全部数据重新训练模型

性能度量

  • 性能度量反应了任务需求,在比较不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;模型的“好坏”不仅取决于数据和算法,还取决于任务需求。
  • 对于有的任务(如回归问题)其模型评估和性能度量用的是一套方法(如用交叉熵来构建的损失函数来评估模型的泛化能力和回归的误差),对于有的任务(如分类问题)其模型评估和性能度量用的并不是一套方法(如用交叉熵评估模型的泛化能力,用准确率、召回率等评估模型的分类效果)。

1. 回归任务常用的性能度量

1.1 残差平方和(SSE)

  • 可用于评估回归模型
  • 衡量预测值与真实值间的差异

损失函数(Loss Function)

  • 损失函数是关于模型参数的函数,其被用来评估需要求参数值的模型
  • SSELoss,计算方法和SSE基本一致,只不过残差平方和中是包含了模型参数的一个变量。
  • 逻辑回归模型的损失函数可采用极大似然估计构建损失函数,也可采用交叉熵来构建损失函数,两者效果是相同的。

1.2 均方误差(MSE)

MSE = \frac{SSE}{n} ; 校正了由于测试样本数引起的误差

1.3 RMSE

RMSE = \sqrt{MSE}

1.4 决定系数(R-squre)

拟合优度检验
在回归分析中,SSR表示聚类中类似的组间平方和概念,表意为Sum of squares of the regression,由预测数据与标签均值之间差值的平方和计算的出:
SSR =\sum^{n}_{i=1}(\bar{y_i}-\hat{y_i})^2
而SST(Total sum of squares)则是实际值和均值之间的差值的平方和计算得到:
SST =\sum^{n}_{i=1}(\bar{y_i}-y_i)^2
并且,SST可由SSR+SSE计算得出。而决定系数,则由SSRSST共同决定:
R-square=\frac{SSR}{SST}=\frac{SST-SSE}{SSE}=1-\frac{SSE}{SST}
故,决定系数是一个鉴于[0,1]之间的值,并且约趋近于1,模型拟合效果越好。

  • 并不是模型评估指标好,该模型就可以被应用;还需要考虑到评估指标的可信度

2. 分类任务常用的性能度量

2.1 正确率

正确率=\frac{分类正确的样本数}{总样本数}
错误率 = 1 - 正确率

  • 精度受样本集构成的影响,在极端的分类样本构成时(如样本集中阳性样本比例极低),模型的精度很高所代表的意义主要是精确的识别出了阴性样本,然而这并不是分类问题所期待的结果(希望精确的识别出阳性样本)。

2.2 混淆矩阵(confusion matrix)

  • 对于二分类问题,可将样本根据真实类别与模型预测的类别的组合划分为以下4种情况,表示成这样的表格被称为“混淆矩阵”
    image.png

2.3 精确率/查准率 (precision)

阳性预测结果中阳性样本的比例
查准率(P)= \frac{TP}{TP + FP}

2.4 查全率/召回率(recall)

阳性样本中预测结果为阳性的比例
查全率(R)= \frac{TP}{TP + FN }

  • 查准率和查全率是一对矛盾的度量,两者不可兼顾。
  • 以查准率为纵轴、查全率为横轴绘制的曲线被称为“P-R曲线”;简便起 见,可以取P=R的点(平衡点)的大小来比较不同模型的性能。

2.5 F1

  • F1是查准率与查全率的调和平均。
    F1 = \frac{2 * P * R}{P + R} = \frac{2 * TP}{m + TP - TN}, m为样本总数
  • 更一般的,
    F_\beta = \frac{(1 + \beta^2) * P * R}{(\beta^2 * P) + R}
  • \beta > 0F_\beta度量了查全率对查准率的相对重要性;当\beta > 1时查全率有更大的影响,当\beta < 1时查准率有更大的影响,当\beta = 1时,即F1,查全率和查准率影响相同。
  • 很多时候,我们会得到多个混淆矩阵(进行了多次训练或测试),此时希望在多个混淆矩阵上综合考察查全率和查准率,则可以先在每一个混淆矩阵上计算出R_i,P_i,然后对R_iP_i分别取均值,得到macro-Rmacro-P,此时有
    macro-F1 = \frac{2 * macro-P * macro-R}{macro-P + macro-R }
  • 也可以先对各个混淆矩阵中的元素进行平均,然后计算出micro-Rmicro-P,此时有
    micro-F1 = \frac{2 * micro-P * micro-R}{micro-P + micro-R }

2.6 ROC(Recevier Operating Characteristic)和AUC(Area Under ROC Curve)

  • 很多模型(如神经网络)为测试样本产生一个实值或概率预测,然后将这个预测值与一个阈值(截断点,cut point)进行比较,大于阈值的为阳性样本,否则为阴性样本。
  • 截断点的选取与任务和排序方式都有关系。
  • ROC曲线的纵轴为“真阳性率”(TPR),横轴为“假阳性率”(FPR
    TPR =\frac{TP}{TP + FN}, FPR =\frac{FP}{TN + FP }
  • 实际操作过程中往往是根据有限个样本来ROC曲线,此时绘制的曲线并不光滑。绘制过程如下:1、根据预测结果(一个实值或概率预测)对样本进行排序;2、把分类阈值设到最大,即将所有样本均预测为阴性样本,也就是再(0,0)处有一个点;3、将分类阈值依次设为每个样本的预测值,即将每个样本依次划分为阳性样本,计算对应的TPRFPR;4、依次连接相邻的点。
  • 可通过比较ROC曲线下的面积(AUC)来比较两个不同模型的性能。
  • AUC可通过对ROC曲线下各部分(以样本进行划分,需要考虑样本的排序)的面积求和而得到。


    48d8759fff5b317d7af2eb524110e05.png

2.7 代价敏感错误率与代价曲线

  • 不同类型的错误(取伪、弃真)造成的后果是不同的,为衡量不同类型错误造成的不同损失,可为错误赋以“非均等代价”,即不同的错误根据实际需求赋以不同的罚分或代价。


    image.png
  • 代价敏感错误率 = \frac{1}{m}* \sum(犯某类错误的样本数 * 对应的罚分)
  • 在非均等代价下,ROC曲线不能直接反应出模型的期望总代价,此时需要用到“代价曲线”(cost curve);代价曲线的纵轴为归一化代价,横轴为正例概率代价
  • ROC曲线上每一个点((FPR,TPR))对应代价曲线上一条线段:绘制从(0,FPR)(1,FNR)的一条线段。取ROC曲线上所有的点,绘制所有的线段,然后取所有线段的下界,围成的面积就是在所有条件下该模型的期望总体代价
    p(+)cost = \frac{p * cost_{01}}{p * cost_{01} + (1 - p) * cost_{10}}
    cost_{norm} = \frac{FNR * p * cost_{01} + FPR * (1-p) * cost_{10}}{p * cost_{01} + (1-p) * cost_{10}}, FNR = 1 - TPR
    image.png

3. 聚类任务常用的性能度量

比较检验

这部分需要复习一下假设检验相关的统计学基础

  • 在对模型进行性能评估和比较时,我们希望比较的是模型的泛化性能,然而这是一个极其复杂的问题:1、前面提到的评估都是在测试集上进行的,然后将“测试误差”近似“泛化误差”;2、测试集上的性能与测试集的选取有很大关系;3、很多模型本身具有一定的随机性,即使使用同样的参数和数据,运行多次也不一定能得到一致性的结果。 此时需要引入统计假设检验来衡量’用前面提到的评估方法计算出不同模型的度量指标‘以比较不同模型性能所得到差异 是否在统计学意义上具有显著差异。

假设检验

  • 在一个数据集上对对单个模型的泛化性能进行假设检验?
  • “假设”是对模型泛化错误分布的某种判断或猜想
  • 由测试错误的分布推断泛化错误的分布
  • 二项检验(只做了依次测试/验证时)
  • t检验(当有多次测试/验证时)

交叉验证t检验

  • 在一个数集上比较不同模型的泛化性能
  • 成对t检验,假设两个模型性能相同

McNemar检验

  • 针对二分类问题,假设两个模型的性能相同,定义McNemar检验需要考虑的变量,其满足卡方分布。

Friedman检验与Nemenyi后续检验

  • 当需要在一个数据集上比较多个算法/模型的性能时,可以采用两两比较;也可使用基于算法排序的Friedman检验。
  • Friedman检验时,1、在每个数据集上计算出每种算法的测试结果;2、根据测试结果对该数据集上不同算法进行排序并标上排序的序号,若若干个模型测试结果相同,则它们平分排序值(如,有两个模型测试结果一致被排在2和3位置,则这两个模型的排序值均为2.5);3、列出来算法(行)* 排序值(列)的表格,在最后一行对列求均值;4、使用Friedman检验来判断这些模型的性能是否相同。
  • 原始的Friedman检验中用到的变量近似服从卡方分布;修正后变量服从F分布。
  • 若”所有算法性能相同“的这个假设被拒绝,则说明所发的性能显著不同,此时需要进行‘后续检验’以区分不同算法。
  • 常用的后续检验方法是Nemenyi检验,其变量服从Tukey分布。
  • Friedman检验图:纵轴为不同算法,横轴为平均序值;图中的线段以该算法的平均序值为中心,两端为临界区域。若算法对应的线段在图中有重叠,则表示它们的性能没有显著差异。

偏差与方差

  • ‘偏差与方差分解’是解释学习算法泛化性能的一种重要工具。
  • 泛化误差可以分解为偏差方差噪声之和;其中偏差度量了学习算法的期望预测与真实结果的偏离程度,衡量算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,衡量了数据扰动所造成的影响;噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,衡量了学习问题本身的难度。
  • 泛化性能由学习算法的能力、数据的充分性、学习任务本身的难度共同决定;因此对于给定的学习任务,为了获得好的泛化性能,需要使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响较小。
  • 类似P和R,偏差和方差也存在一定的冲突,两者不可兼得。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容