文章目录
1、选择合适的模型评估指标的依据
通常在模型训练完之后,我们想要查看模型训练的效果以验证模型的好坏,并根据评估结果来继续调整模型的参数、特征或者算法,以达到满意的结果。在回归算法中评价模型好坏的指标很明确主要有:拟合优度 R 2 R^2 R2,均方误差 M S E MSE MSE,均方根误差 R M S E RMSE RMSE,以及平均绝对误差 M A E MAE MAE。
但是,在分类算法中评估模型效果的指标往往就不那么明确了。分类算法的评估指标多种多样,在诸多的评价指标中,大部分指标只能片面的反应模型的一部分性能,如果不能合理的运用评估指标,不仅不能发现模型本身的问题,而且会得出错误的结论。一般分类算法评价一个模型最简单也是最常用的指标就是准确率(Accuracy),但是在没有任何前提下准准确率(Accuracy)往往不能反映一个模型性能的好坏,例如在不平衡的数据集上,正类样本占总数的95%,负类样本占总数的5%;那么有一个模型把所有样本全部判断为正类,该模型也能达到95%的准确率,但是这个模型没有任何的意义。
因此,对于一个模型,我们需要从不同的方面去判断它的性能。在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评价结果;这意味着模型的好坏是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。例如医院中检测病人是否有心脏病的模型,即检测出少数类,那么这个模型的目标是将所有有病的人给检测出来,即使会有许多的误诊也在所不惜(将没病检测为有病);又比如在警察追捕罪犯的模型上,该模型的目标是将罪犯准确的识别出来,而不希望有过多的误判(将正常人认为是罪犯)。
所以不同的任务需求,模型的训练目标不同,因此评价模型性能的指标也会有所差异。
也就是说,单纯地追求捕捉出少数类,就会成本太高,而不顾及少数类,又会无法达成模型的效果。所以在现实中,我们往往在寻找捕获少数类的能力和将多数类判错后需要付出的成本的平衡。如果一个模型在能够尽量捕获少数类的情况下,还能够尽量对多数类判断正确,则这个模型就非常优秀了。为了评估这样的能力,我们将引入新的模型评估指标:混淆矩阵和ROC曲线来帮助我们。
2、混淆矩阵(Confusion Matrix)
混淆矩阵是二分类问题的多维衡量指标体系,在样本不平衡时极其有用。在混淆矩阵中,我们将少数类认为是正例,多数类认为是负例。在决策树,随机森林这些普通的分类算法里,即是说少数类是1,多数类是0。在SVM里,就是说少数类是1,多数类是-1。普通的混淆矩阵,一般使用{0,1}来表示。如图所示:
预测值 | |||
---|---|---|---|
1 | 0 | ||
真实值 | 1 | TP(11) | FN(10) |
0 | FP(01) | TN(00) |
- TP:预测为正样本,实际也为正样本的特征数
- FP:预测为正样本,实际为负样本的特征数
- TN:预测为负样本,实际也为负样本的特征数
- FN:预测为负样本,实际为正样本的特征数
混淆矩阵中,永远是真实值在前,预测值在后。其实可以很容易看出,11和00的对角线就是全部预测正确的,01和10的对角线就是全部预测错误的。基于混淆矩阵,我们有六个不同的模型评估指标,这些评估指标的范围都在[0,1]之间,所有以11和00为分子的指标都是越接近1越好,所以以01和10为分子的指标都是越接近0越好。
2.1 模型整体效果:准确率
准确率是分类问题中最为原始的评价指标,准确率的定义是预测正确的结果占总样本的百分比,通常来说越接近1越好。其公式如下:
A c c u r a c y = T P ( 11 ) + T N ( 00 ) T P ( 11 ) + T N ( 00 ) + F P ( 01 ) + F N ( 10 ) Accuracy = \frac{TP(11)+TN(00)}{TP(11)+TN(00)+FP(01)+FN(10)} Accuracy=TP(11)+TN(00)+FP(01)+FN(10)TP(11)+T