如果你看了前面几篇博客,我们说了决策树,说了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值,更多的提高精度或者召回率。