• 训练模型和衡量模型的好坏


    如果你看了前面几篇博客,我们说了决策树,说了adaboost,这次我们说下模型训练和衡量模型的好坏

    其实我们已经训练了模型了,例如决策树的生成时模型训练,adaboost的实现也是模型训练的过程,所以我们已经训练了好几个模型,只是那个具体的模型,并且我们没有把模型保存下来

    可能觉得自己不是在训练模型。

    模型训练的输出是模型,什么是模型呢?

    我们生成的决策树是模型,adaboost的那几条加权直线也是模型。

    模型里面是什么?

    模型里面是一系列的判断或者计算,对于任何一个预测数据,通过模型最终得到一个预测值。

    如何衡量模型的好坏?我们着重讨论这个问题,下面我们就二分类问题讨论模型好坏的衡量

    精度和召回率

    大的矩形是正负样本组成的训练集,右边的半矩形是正样本,左边的半矩形是负样本,中间的圆圈是预测为正的样本,那么精度precision和召回率recall的计算方法如右图所示

    精度描述的是预测为正的结果里面真正正样本的比例,召回率描述的是:正样本里面被预测为正的比例

    准确度

    (true positive + true negative)/all:描述的是整个训练集预测正确的比例

    那么如何利用这些指标衡量模型的好坏呢?

    理想情况下,肯定是希望模型可以预测为正的全部都是正样本,并且全部的正样本都预测为正,精度和召回率都是100%

    现实情况是,如果我们提高了精度,让预测为正的都是正样本,很可能就导致很多正样本没有被召回;如果我们提高了召回率,让更多的正样本被预测为正,很可能就会误把一些负样本预测为正,降低了精度。

    精度和召回率升高到一定程度时,在一定范围是此起彼伏的关系, 那么如何衡量精度和召回率之间的关系呢?

     fbeta

     

    fbeta定义了一个衡量精度和召回率的可调函数,我们可以通过调整beta的值来更倾向于提高精度还是召回率

    我们的目标都是希望fbeta值越大越好。

    当beta=1时:希望fbeta越大越好的同时,同时提高进度和召回率

    当beta<1时:希望在提高fbeta的同时,更多的提高召回率

    当beta>1时:希望在提高fbeta的同事,更多的提高精度。

    总结,对于二分类问题,我们可以用精度或者召回率来衡量模型的好坏,如果我们想用一个统一的评价,我们可以使用fbeta,还可以设定beta值,更多的提高精度或者召回率。

  • 相关阅读:
    [codevs2800]送外卖
    python JSON处理
    python系统编码格式
    python,django,mysql版本号查询
    django开发总结:
    python之---类和实例
    django Q和F查询
    合并多个python list以及合并多个 django QuerySet 的方法
    python学习之---匿名函数,返回函数,偏函数
    python学习之---生成器
  • 原文地址:https://www.cnblogs.com/qwj-sysu/p/5970803.html
Copyright © 2020-2023  润新知