计算基分类器在训练集上的分类误差率_模型评价——训练误差与测试误差、过拟合与欠拟合、混淆矩阵...

4274b71008ddf12ace31b631410ee7b8.png

模型评价的内容较多,所以会分为两篇文章来写。这篇文章主要涉及训练误差与测试误差,过拟合与欠拟合,混淆矩阵。首先分享一点点经验,在实际应用中,我们往往无法找到标准的评测集,因此我们一般会迭代地进行评测,在每次评测后,应该保留校对结果作为标准测试集,这样在后续迭代中,就可以使用这份不断增加的测试集来计算评价指标了。

训练误差与测试误差

在拿到一份已标注数据集后,一般将它按照6:2:2的比例分为训练集、验证集和测试集。为什么要这么做呢。因为三种数据集都有各自的用途训练集是用来训练模型参数的。验证集是用来比较不同模型算法效果的。测试集是在确定了分类模型后评价效果的。所以一般情况下,当确定了分类模型后,只需要训练集和测试集即可。而实践中本身的标注训练集就已经很少了,因此会全部拿来做训练。并且到目前为止,在分类模型上并没有一种所谓的通用领域模型,我们往往是针对自己的业务的特定领域来进行训练。

训练误差就是模型在训练集上的误差平均值,度量了模型对训练集拟合的情况。训练误差大说明对训练集特性学习得不够,训练误差太小说明过度学习了训练集特性,容易发生过拟合。

测试误差是模型在测试集上的误差平均值,度量了模型的泛化能力。在实践中,希望测试误差越小越好。

过拟合与欠拟合

如同上面的阐述,过拟合就是模型过度学习了训练集所有特性,导致模型认为训练集中的某些特性也是潜在测试实例具有的一般性质。从误差角度来说,过拟合时训练误差小但测试误差却很大。

欠拟合就是说模型尚未学习完整训练集实例的普适特性。从误差角度来说,欠拟合时训练误差大,测试误差也大。为了防止过拟合出现,需要根据不同模型采用不同的方法。对于优化损失函数的模型比如感知机、逻辑回归、SVM等可以在损失函数中加入正则化项(罚项),正则化项一般是模型参数的范数。对于决策树这样的模型,可以通过剪枝达到避免过拟合的目的。下面用下边的示例来说明欠拟合和过拟合:

363165aa81bbc29d2195640dd9b4f716.png

上图中,左边是欠拟合(underfitting),也称为高偏差(high bias)因为我们试图用一条直线来拟合样本数据。右边是过拟合(overfitting),也称为高方差(high variance),用了十阶多项式来拟合数据,虽然模型对现有的数据集拟合得很好,但对新数据预测误差却很大。只有中间的模型较好地拟合了数据集,可以看到虚线和实线基本重合。

示例代码

https://github.com/baiziyuandyufei/text_classification/blob/master/过拟合欠拟合.py​github.com

混淆矩阵

混淆矩阵是为了用来计算下一篇文章将要介绍的评价指标用的。它的每一行表示的是实际类别,每一列表示的是预测的类别,对应的元素xij表示的是实际类别为i预测类别为j的文本数量。因此对角线上的元素表示的是正确预测各类别的文本数量,而非对角线上的元素表示误分类文本数量。对角线元素值之和越大,表示正确预测的文本数量越多。

计算混淆矩阵的sklearn示例。这里在鸢尾花iris数据集上训练一个分类器,并用混淆矩阵来评价。代码分别对未经规范化和经过规范化的混淆矩阵进行了可视化。这种规范化后的可视化有利于评价不平衡分类。这里故意使分类器不能达到其应有的准确率,方法是设置不合适的正则化参数C。在真实的应用中,通常通过`grid_search`来确定C的值。

35fc5b38077d3cca8da7192f2ba372db.png

示例代码

https://github.com/baiziyuandyufei/text_classification/blob/master/混淆矩阵.py​github.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值