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

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

 

posted @ 2016-10-17 21:02  2BiTT  阅读(2977)  评论(0编辑  收藏  举报