机器学习笔记(二)第二章 模型评估与选择

机器学习笔记(二)第二章 模型评估与选择

2.1经验误差与过拟合

实际预测输出与真实输出之间的差异叫做误差

  • 训练误差(经验误差)
  • 泛化误差

训练误差小泛化能力差——过拟合:无法避免只能缓解
我们需要泛化误差小的模型,因此模型选择十分重要,通过模型评估的方法选择

2.2实验评估方法

理想的解决方案是直接对泛化误差进行评估,选最小的模型,但无法直接获得泛化误差
方法:在数据集中划分出验证集,使用验证集计算测试误差作为泛化误差的近似
原则:验证集的选择尽量与训练集互斥
验证集选择方法

  1. 留出法:直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T。选择时采用“分层采样”,保证不同集中样本的类别比例相似,并采用若干次随机划分、重复进行实验评估后去平均值。常见将2/3~4/5做为训练集

  2. 交叉验证法:将D划分为k个大小相似的互斥子集,每个子集通过分层采样得到,包含智能数据分布比例一致。每次用k-1个子集的并作为训练集,剩下的一个作为测试集,可以进行k次训练和测试——k折交叉验证,k常取10、5、20。同时,划分k个子集有多种方法,可以随机进行p次划分,这样就是p*k次训练/测试。
    交叉验证法的特例,留一法:k=m(样本总数)

  3. 自助法:定包含m个样本的数据集 D,我们对它进行采样产生数据集 D’: 每次随机从 D 中挑选一个样本, 将其拷贝放入 D’, 然后再将该样本放回初始数据集 D 中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行 m 次后,我们就得到了包含 m 个样本的数据集 D’,这就是自助采样的结果.显然,D 中有一部分样本会在 D’ 中多次出现,而另一部分样本不出现.即通过自助来样,初始数据集 D 中约有 36.8% 的样本未出现在采样数据集 D’ 中.于是我们可将 D’ 用作训练、集, D\D’ 用作测试集;这样,实际评估的模型与 期望评估的模型都使用 m 个训练样本,而我们仍有数据总量约 1/3 的、没在训练集中出现的样本用于测试.用于数据集较小的情况。

调参:对参数选定变化范围和步长,从而改变模型,并进行测试
最后,在模型选择完成后,要重新使用数据集D重新训练(选择模型过程中使用的训练集样本个数小于m),这才是最终模型
真实使用模型时的数据被称为测试集

2.3性能度量(泛化能力指标)

性能度量衡量泛化能力的评价标准
误差:预测结果f(x)与真实x对应的标记y进行比较
回归任务最常用的性能度量:均方误差
在这里插入图片描述
更一般的,对于D和概率密度函数p(·),均方误差可描述为
在这里插入图片描述
分类任务中常用的性能度量:

  1. 错误率与精度:
    错误率:
    错误率
    精度:
    在这里插入图片描述
    一般的:
    在这里插入图片描述
    在这里插入图片描述
  2. 查准率、查全率与F1
    对于二分类问题,有:
    在这里插入图片描述
    查准率 P (预测出来的正例中有多少确实是正例)与查全率 R(真实的正例有多少被预测出来) 分别定义为
    在这里插入图片描述
    不同学习器可绘制各自的P-R曲线,一个学习器的的 P-R 曲线被另一个学习器的曲线完全"包住" ,则可断言后者的性能优于前者。如果两个 学习器的 P-R 曲线发生了交叉, 这时一个比较合理的判据是比较 P-R 曲线下面积的大小,它在一定程度上表征了学习器在查准率和查全率上取得相对"双高"的比例.但这个值不太容易估算, 因此人们设计了一些综合考虑查准率、 查全率的性能度量
    平衡点BEP:"查准率=查全率"时的取值,越高越好
    F1度量
    在这里插入图片描述
    在这里插入图片描述
    查准率和查全重视程度不同,β>1,查全率影响大,反之,查准率影响大;等于1,退化。
    进行多次训练/测试,得到多个二分类混淆矩阵,就可得到多个TP\FP\TN\FN\P\R和F1,综合考虑采用求平均值方法,得到宏查准率、宏查全率、宏F1
    在这里插入图片描述
    以及微查准率、微查全率、微F1
    在这里插入图片描述
    在这里插入图片描述
  3. ROC与AUC
    ROC:受试者工作特征曲线
    选取不同的截距预测正反例,计算真正例率和假正例率。
    给定 m+ 个正例和 m- 个反例,根据学习器预测结果对样例进行排序,然后把分类阔值设为最大, 即把所有样例均预测为反例,此时真正例率和假正例率均为 0, 在坐标 (0, 0) 处标记一个点然后,将分类阐值依次设为每个样例的预测值,即依次将每个样例 划分为正例.设前一个标记点坐标为 (x, y), 当前若为真正例,则对应标记点的 坐标为 (x,y + 1/m+);当前若为假正例,则对应标记点的坐标为 (x+ 1/m-,y),然 后用线段连接相邻点即得.
    AUC:曲线包围面积
    在这里插入图片描述
    梯形面积计算
  4. 代价敏感错误率与代价曲线
    有时分类错误的代价是不均等的.在非均等代价下,我们所希望的不再是简单地最小化错误次数,而是希望最小化"总体代价" (total cost).
    代价矩阵
    在这里插入图片描述
    代价敏感的错误率
    在这里插入图片描述
    并且此时需要通过代价曲线
    横轴正例概率代价
    在这里插入图片描述
    纵轴是归一化代价
    在这里插入图片描述
    正例中有一部分会被预测为反例,概率为p*FNR,反例中同理,这个为一条线段经过 (0, FPR) 和 (1, FNR)
    ROC 曲线上点的坐标为 (TPR, FPR),则可相应计算出 FNR,然后在代价平面上绘制 一条从 (0, FPR) 到 (1, FNR) 的线段,线段下的面积即表示了该条件下的期望总体代价,将 ROC 曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的自积即为在所有条件下学习器的期望总体代价,越小越好。

2.4比较检验

使用某种实验评估方法(留出法、交叉验证法、自助法或更改参数)测得学习器的某个性能度量(错误率精度、AUC/ROC、代价曲线、R-P曲线/F1等)结果,然后需要对这些结果进行比较。
比较不是简单“比大小”:1.我们希望比较泛化性能,而我们测得的是测试集上的性能,二者有区别;2.测试集的选择影响性能;3.机器学习算法本身有随机性。
依据:统计假设检验概率学推断
默认性能度量使用错误率,符号ε

1. 假设检验
对单个学习器,假设泛化错误率ε=ε0,通过测试错误率ε^估推泛化错误率,验证假设。
泛化错误率为ε的学习器被测得测试错误率为ε^的概率
(将m*ε^个样本误分类的概率):

在这里插入图片描述
可以看出,给定泛化错误率,测试错误数满足二项分布。
在这里插入图片描述

  • 只进行一次训练,得到一个测试错误率,使用二项检验,计算当前假设ε0下的临界值,与所得测试错误率作对比。
    假设H0:ε≤ε0;H1:ε>ε0
    在置信度1-α的概率内所能观测到的最大错误率如下:
    在这里插入图片描述
    若测试错误率小于临界值,则在1-α的置信度下,假设H0不能被拒绝;否则可被拒绝。
  • 多次进行留出法或交叉验证法进行训练、测试,得到k个测试错误率,此时使用t检验。k个测试错误率平均值 μ 和方差 σ2为:
    在这里插入图片描述
    预先期望的泛化错误率为ε0,k个测试误差率可看做泛化误差率的随机采样,则变量Tt服从自由度为k-1的t分布:
    在这里插入图片描述
    根据假设和预先设计的显著度α,查表可得临界值b,若Tt<b,则不能拒绝假设。

2. 交叉验证t检验

在一组数据集上对两个学习器(算法)的性能进行比较(通过测试错误率)
两个学习器A、B使用K折交叉验证法的各得到k个测试错误率,使用成对t验证进行比较检验,所需验证的假设是两个学习器的性能相同,则他们使用的相同训练/测试集得到的测试错误率应相同
在这里插入图片描述
先对每对结果求差, △i=εiA-εiB,计算k个差值的均值μ和方差σ2,在显著度α下,若变量
在这里插入图片描述
小于临界值,则假设不能被拒绝,即认为两个学习器的性能没有显著差异;否则可认为两个学习器的性能有显著差别,且平均错误率较小的那个学习器性能较优.
进行n次k折交叉验证,在每次k折交叉验证前,将数据打乱。分别对所有第i折交叉验证产生的一对错误率求差。平均值仅取第一次k折交叉验证的k个差值的平均,但每次(共n次)都计算方差(方差中平均值按当次平均值计算,不简单使用μ),计算变量是否在临界值内:
在这里插入图片描述
在临界值内,表示该置信度下两个学习器性能无差假设不能被拒绝。

3. McNemar 检验
在一组数据集上对两个学习器(算法)性能进行比较(通过分类结果的差别):对二分类问题,使用留出法不仅可以估计A,B的测试错误率,还可获得两学习器分类结果的差别,即通过分类结果的差别估计性能的差异,“列联表”其中数据为样本数:
在这里插入图片描述
我们做的假设是若两学习器性能相同,应有e01=e10,变量|e01-e10|应是服从正态分布,计算变量
在这里插入图片描述
当小于临界值时,不能拒绝假设。

4. Friedman 检验与 Nemenyi 后续检验
对多个学习器(算法)进行比较:一种是两两比较,使用前述方法;另一种即为:

  • 基于算法排序的Friedman检验(使用多个数据集):
    用 D1、 D2、 D3 和 D4 四个数据集对算法 A、 B、 C 进行比较.每个算法在每个数据集上测试结果,在每个数据集上根据测试性能的好坏排序,赋序值。若测得的性能相同,平分序值。最后求出平均序值,例如:
    在这里插入图片描述
    假设:若学习器的性能相同,则它们的平均序值应该相同。
    假定在N个数据集上比较k个算法,令ri表示第i个算法的平均序值,则ri服从正态分布,使用变量
    在这里插入图片描述
    其中
    在这里插入图片描述
    Tf服从自由度为k-1和(k-1)(N-1)的F分布,若检验得到所有的算法性能相同这个假设被拒绝,即算法性能显著不同。这时需:
  • 进行“后续检验”来进一步区分各算法:Nemenyi后续检验
    计算变量:
    在这里插入图片描述
    其中qα查表
    计算每个算法两两间的平均序值差值,若大于CD则有显著差异

2.5偏差和方差

"偏差方差分解" (bias-variance decomposition)是解 释学习算法泛化性能的一种重要工具.
对测试样本x,令yD为x在数据集中的标记,y为x的真实标记,f(x;D)为训练集D上学得的模型f在x上的预测输出。(期望=均值)
期望预测为
在这里插入图片描述
方差为
在这里插入图片描述
噪声为
在这里插入图片描述
期望输出与真实的差别为偏差:
在这里插入图片描述
有(令期望噪声 ED[yD -y] =0. ),则泛化误差的期望即预测值与标记值的偏差期望为:
在这里插入图片描述
即:
在这里插入图片描述
也就是说,泛化误差可分解为偏差、方差与噪声之和.
偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力(对给定数据的拟合能力);方差度量了同 样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响(数据的多少带来的扰动);噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度(本身采集的数据与实际情况就有差别).,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的.
偏差和方差是有冲突的
在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率,将发生过拟合.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值