zoukankan      html  css  js  c++  java
  • 机器学习——2模型评估与选择

    一、误差:

    误差分为经验误差和泛化误差,都是指理论上的期望误差。

    经验误差指在训练集上的误差,泛化误差指得到的模型在新样本上的误差。

    泛化误差是我们比较看重的,泛化误差越小越好。但是,在训练中,我们也希望经验误差越小越好,但是有时候经验误差太小,反而会导致泛化误差没那么好。

    所以,就引出了另一个名词:过拟合。过拟合会导致泛化性能下降。就是把样本学习的“过了头”。与过拟合对应的是欠拟合,指对模型拟合的不够好。

    欠拟合的解决方法:

    扩展学习分支,增加训练层数。

    过拟合解决方法:

    很多种算法中都会提到过拟合的解决方法,并且,由于过拟合是机器学习的主要问题,所以应当在不同的算法中运用不同的方式来解决过拟合问题。

    二、评估泛化误差

    1、首先评估泛化误差需要考虑一个问题,我们评价的时候需要一个训练集来训练模型,同时也需要一个测试集来评价泛化误差。所以我们要解决的第一个问题是区分训练集和测试集。

    A、留出法

    直接将数据集分为两个互斥集合,一个作为训练集另一个作为测试集。测试集大概只占四分之一到三分之一。

    而测试集和训练集的采样过程应注意分层采样,否则正例负例比例不对称,会很忙麻烦。

    B、交叉验证法

    在保证数据一致的情况下(分层采样),将数据集分为K个大小相同的互斥子集。然后每次用K-1个子集来训练,最后一个子集用来测试。从而可以进行k次循环。我们将其称为K折交叉测试。常用的k有5,10,20。

    进一步讲,当一共有m个元素,然而我们将互斥子集分为M份之后,每个子集只有一个元素,这样就变成了一个特例,我么称为留一法。留一法准确性还算好,但是计算开销很大。

    C、自助法

    自助法一般在数据集比较小的时候用。

    方法是从原始数据集中每次取一个,放到集合里面,这个集合称为训练集,经过计算,原始集合中总有占总数的0.368的数据没有被采集到。可以用原始集-训练集得到测试集用来进行测试。

    2、下面进行对一个模型的性能度量时间

    最基础的性能度量方式也是最常用的性能度量方式是均方误差(mean squared error)。

    说白了,就是计算每个数据对应的值和标准的值的方差。

    或者,用概率密度来表示,然后在总的域上积分,也是可以的。

    精度:正确样本占总样本的比率

    错误率:估计错误的样本占总样本的比率

    3、我们要扩展精度和错误率了

    查准率:检索出来的信息有多少是用户喜欢的。偏向我的数据的有效率。

    查全率:用户多少喜欢的东西被我们找到了。偏向我的数据的广泛率。

    真正例(True positive) 真反例(True negative) 假正例(False positive) 假反例(False negative)

    查准率:(TP)/(TP+FP)

    查全率:(TP)/(TP+FN)

    查准率和查全率一般是“互补”的,可以这么考虑,我的数据量越少,真正例的比例就越高,同时查全率就会越低。一般情况下,对于不同的模型,平衡点(Break-Even Point,简称BEP,此时查准率等于查全率)使我们考察的对象,平衡点越往外的,模型越好。

    出去BEP,我们还可以用F1度量,这个更常用。

    F1=((1+β^2 )*P*R)/((β^2*P)+R)

    其中,beta是表示我们对查重率或者查准率的不同偏好。

    4、代价敏感错误率

    我们不仅要猜得准,猜的全之外

    有时候,我们还需要考虑,如果我们猜错了,因此会付出一定代价,所以就有了代价敏感错误率,此处FN和FP都对应一定的cost

    5、我们深入讨论关于学习器的比较问题:

    如果在测试集上表现好的学习器,是不是也意味着泛化性能也更优秀呢

    这里用到了假设检验。

    A、假设检验基本原理的运用

    我们可以很容易地算出来,利用二项分布,当学习器对一个样本预测出错的概率是ε时,那么,m个样本中m*ε个样本被预测错的概率是最大的。

    这里,我们引入t检验,实际上就是本科时候学习的概率统计,t分布类似我们以前的高斯分布。T=√k(μ-ε)/σ,算出t之后,带入显著度表格,查表,看是否有xxx的概率接收或者拒绝该检验。

    t检验,用于检验样本平均数与总体平均数的差异是否显著。

    B、交叉验证t检验

    对两个学习器而言,若要判断他俩是否相同,也可以通过t检验来弄,即,对于同一个测试集,将他们的测试结果求差的绝对值 ,并且求出绝对值的均值和方差,最后带入t检验中。

    C、两个学习器问题

    同样在t检验的基础上,实际上只需要导出他们错误的列联表,将多个错误列联表放一起,求出列联表的均值与方差即可,依然满足t分布即可。

    D、多个学习器问题

    将多个学习器对同一个数据集的预测结果进行评分,依次是123456...k,则最终的结果是,均值和方差都应该是1-k的均值和方差,1-k的均值和方差是绝对可信的,但是,由于其他因素,会导致实际的均值和方差是不同的,再将这个均值和方差带入t分布即可。注意,要先算平均序值的均值,在在这个的基础上算均值和方差。

    6、解释学习算法泛化性能

    泛化误差可分解为偏差、方差与噪声之和。

    偏差刻画了期望预测与真实结果的偏离程度,刻画了学习算法本身的拟合能力。

    方差度量了同样大小的训练集的变动导致的学习性能的变化,刻画了数据扰动的影响。

    噪声刻画了学习问题本身的难度。

  • 相关阅读:
    批处理bat命令--获取当前盘符和当前目录和上级目录
    网页切图div+css命名规则
    Css 切换
    JavaScript的编码规范
    JavaScript原型继承添加方法属性
    使用cookie
    常见元素及其相关事件/创建弹出框
    在JavaScript中什么时候使用==是正确的?
    理解Null和Undefined
    Oracle一列的多行数据拼成一行显示字符
  • 原文地址:https://www.cnblogs.com/baochen/p/9033437.html
Copyright © 2011-2022 走看看