《大数据架构和算法实现之路:电商系统的技术实战》——1.4 分类效果评估

简介:

本节书摘来自华章计算机《大数据架构和算法实现之路:电商系统的技术实战》一书中的第1章,第1.4节,作者 黄 申,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 分类效果评估

到了这一步,你可能会产生几个疑问:机器的分类准确吗?是否会存在错误?不同的分类算法相比较,孰优孰劣呢?这是个很好的问题,确实,我们无法保证分类算法都是准确有效的。不同的应用场景,不同的数据集合都有可能会影响到算法最终的精准度。为了更加客观地衡量其效果,需要采用一些评估的手段。对于分类问题而言,我们最常用的是离线评估。也就是在系统没有上线之前,使用现有的标注数据集合来进行评测。其优势在于,上线之前的测试更便于设计者发现问题。万一发现了可以改进之处,技术调整后也可以再次进行评估,反复测试的效率非常之高。

值得一提的是,分类有两大类型:二分类和多分类。二分类是指判断数据对象属于或不属于一个给定的分类,而多分类则是指将数据对象判定为多个分类中的一个。多分类的评估策略会更复杂一些,不过,可以将其转化为多个二分类问题来对待。所以,让我们从二分类的评估入手,先了解一下表1-1中的混淆矩阵(Confusion Matrix)这个核心概念。

screenshot

下面就来逐个解释一下这个矩阵中的元素,假设有一组标注好的数据集d,并将其认定为标准答案。其中属于A类的数据称为正例(Positive),不属于A类的另外一部分数据称为负例(Negative),d是正例和负例的并集,而且正例和负例没有交集。这时,可以通过一个分类算法c来判定在这些数据中,是否有一组数据对象属于A类。若c判断属于A类的则称为预测正例(Positive’),而不属于A类的则称为预测负例(Negative’)。如果d标注为正例,c也预测为正例,那么就称为真正例(True Positive,TP)。如果d标注为正例,c预测为负例,那么就称为假负例(False Negative,FN)。如果d标注为负例,c也预测为负例,那么就称为真负例(True Negative,TN)。如果d标注为负例,c预测为正例,那么就称为假正例(False Positive,FP)。

根据混淆矩阵,我们可以依次定义这些指标:精度(Precision)p、召回率(Recall)r、准确率(Accuracy)a和错误率(Error Rate)e。

screenshot

除了定义评估的指标之外,还需要考虑一个很实际的问题:我们该如何选择训练数据集和测试数据集?进行离线评估的时候,并不需要将全部的标注样本都作为训练集,而是可以预留一部分作为测试集。然而,训练和测试的不同划分方式,可能会对最终评测的结论产生很大的影响,主要原因具体如下。

  • 训练样本的数量决定了模型的效果。如果不考虑过拟合的情况,那么对于同一个模型而言,一般情况下训练数据越多,精度就会越高。例如,方案A选择90%的数据作为训练样本来训练模型,剩下10%的数据作为测试样本;而方案B则正好颠倒,只用10%的数据作为训练样本,测试剩下90%的数据。那方案A测试下的模型准确率很可能会比方案B测出的模型准确率要好很多。虽然模型是一样的,但训练和测试的数据比例导致了结论的偏差。
  • 不同的样本有不同的数据分布。假设方案A和B都取90%作为训练样本,但是A取的是前90%的部分,而B取的是后90%的部分,二者的数据分布不同,对于模型的训练效果可能也会不同。同理,这时剩下10%的测试数据其分布也会不相同,这些都会导致评测结果不一致。

鉴于此,人们发明了一种称为交叉验证(Cross Validation)的划分和测试方式。其核心思想是每一轮都拿出大部分数据实例进行建模,然后用建立的模型对留下的小部分实例进行预测,最终对本次预测结果进行评估。这个过程反复进行若干轮,直到所有的标注样本都被预测一次而且仅预测一次。用交叉验证的目的是为了得到可靠稳定的模型,其最常见的形式是留一验证和K折交叉。留一验证(Leave One Out)是交叉验证的特殊形式,意指只使用标注数据中的一个数据实例来当作验证资料,而剩余的则全部当作训练数据。这个步骤一直持续到每个实例都被当作一次验证资料。而K折交叉验证(K-fold Cross Validation)是指训练集被随机地划分为K等分,每次都是采用(K – 1)份样本用来训练,最后1份被保留作为验证模型的测试数据。如此交叉验证重复K次,每个1/K子样本验证一次,通过平均K次的结果可以得到整体的评估值。假设有数据集D被切分为K份(d1, d2, …, dk),则交叉过程可按如下形式表示:

screenshot

如果标注样本的数量足够多,K的值一般取5到30,其中10最为常见。随着K值的增大,训练的成本就会变高,但是模型可能会更精准。当标注集的数据规模很大时,K值可以适当小一些,反之则建议K值适当取值大一些。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
机器学习/深度学习 算法 数据库
KNN和SVM实现对LFW人像图像数据集的分类应用
KNN和SVM实现对LFW人像图像数据集的分类应用
33 0
|
4月前
|
算法 前端开发 程序员
前端算法专栏-数组-75.颜色分类
前端算法专栏-数组-75.颜色分类
前端算法专栏-数组-75.颜色分类
|
5月前
|
机器学习/深度学习 算法
20 机器学习 - Lineage逻辑回归算法分类案例
20 机器学习 - Lineage逻辑回归算法分类案例
32 0
|
4月前
|
机器学习/深度学习 算法 前端开发
【数据挖掘】袋装、AdaBoost、随机森林算法的讲解及分类实战(超详细 附源码)
【数据挖掘】袋装、AdaBoost、随机森林算法的讲解及分类实战(超详细 附源码)
38 0
|
5天前
|
机器学习/深度学习 自然语言处理 算法
|
1月前
|
机器学习/深度学习 自然语言处理 搜索推荐
推荐系统的算法分类和操作流程介绍
推荐系统的算法分类和操作流程介绍
|
1月前
|
机器学习/深度学习 算法
机器学习与深度学习的算法分类
机器学习与深度学习的算法分类
|
2月前
|
机器学习/深度学习 自然语言处理 算法
如何利用机器学习算法提高分类准确率
【2月更文挑战第7天】机器学习在现代科技中扮演着重要的角色。分类是其中一种基本的机器学习任务,而分类准确率是衡量分类模型好坏的重要指标。本文将介绍如何利用机器学习算法来提高分类准确率。
21 0
|
2月前
|
机器学习/深度学习 存储 算法
【模式识别】探秘分类奥秘:K-近邻算法解密与实战
【模式识别】探秘分类奥秘:K-近邻算法解密与实战
34 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
【模式识别】探秘分类奥秘:最近邻算法解密与实战
【模式识别】探秘分类奥秘:最近邻算法解密与实战
37 0