开发者学堂课程【高校精品课-北京理工大学-数据仓库与数据挖掘(上):模型评估和选择(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/921/detail/15648
模型评估和选择(二)
三、分类器评估的框架
再看一下对分类器的评估的一些框架。
1.Holdout method
首先第一种常用的框架叫做 Holdout 就是留余法,那一般,会把数据分成两部分,其中2/3作为训练集1/23作为测试集。重复上面的过程就可以得到多个训练集合,多个测试集,然后利用每一个训练好的分类集的精度。作为每一轮的精度,然后把每一轮的精度加起来,取平均,就得到这个分类区最终的进度。
2.Cross-validation
和 Holdout method 所对应的,就是 Cross-validation 叫做交叉验证,采用的k值,一般设置为十,也就是说一般是喜欢采用十折交叉验证。
(1)、那对于十折交叉验证来说,它主要是首先对数据集进行有放回的采样,然后将采样后的数据分为k个部分,然后把每一次从k个部分中取一部分作为测试集,其余的作为训练集后,得到一个分类器计算它的精度,然后依次把所有的精度加起来取平均。
(2)那对于 Cross-validation 类型来说,它有一个特例叫做 Leave-one-out,就是留余法语,是指的是在每一次中只取它的一个作为测试集,其余的作为训练集,也就是留余法其实是一种特定的 Cross-validation,它是将数据集划分为K份这个时候k的值是等于数据元素的值。
(3)、这里通过一个图像介绍三折交叉验证。三折交叉验证是属于一次,首先从数据集中,进行有放回的采样,得到一个抽样集,然后把抽样集分为三个部分,每一次取其中的一个部分作为测试集,其余两个部分作为训练集,也就是说,在每一个 fold 中就会得到一个分类器,有三个fold会得到,三个分类器,然后把这三个分类器的,accuracy 去平均得到这一次循环的精度。
(4)那比如说要经过十折,可能抽样十次就会有十个精度,然后把这十个精度再加起来取平均作为分类器的精度。这个是关于 Cross-validation。
四、orc 曲线
最后介绍如何使用 orc 曲线进行分类器模型的比较和选择。
1. orc 曲线概念
首先来看一下什么是 orc 曲线。Orc 曲线被称之为叫做接收者操作曲线。主要是用来表示每一个分类器,它的真的正事例率和假的正事例率之间的平衡关系。
2. orc 曲线图像及计算
对于 orc 曲线来说,它的个横坐标,代表的是假的正事例率,而它的纵坐标代表是真的正事例率。
(1)、计算。对于假的正事例率是用这样的公式去计算就是 fp÷fp+tn。真的真事例率呢?就是用 tp÷(tp+fn)。在于这个图上就显示了一条 roc 曲线。这种 orc 曲线表示的分类器。
(2)它什么样的曲线代表的是一种好的分类器?用一个对角线表示的是一个随机猜测的一个分类的性能,比如说对于某一个固定的这样的一个 fpr,那肯定是希望,比如在0.3这个 ftr 的基础上,如果这个分类器它的 tpr 越高越好,所以可以利用,曲线下面的面积来代表这个分类器的性能。那如果在固定的这样的一个 fpr 的条件下,它的 tpr 越高,就意味着这个曲线下的面积越大。因此,就把这样的一个orc曲线下的这部分面积,把它称之为叫做 aUC,也就是一个分类器它所对应 orc 曲线的 AOC 面积越大,这个分类器就越好,可以看一下,在图上有两条分类所对应的。
Or c 曲线一个是 a,一个是b。那很明显,b 所对应的这个分类器,它的 AOC 面积比较大,那所以说这个分类器,它肯定是比 a 分类器要好。
3.绘制or c曲线
在了解了 or c 曲线比较分类器的原理之后,就来学习一下如何去绘制 or c 曲线。
对于一个分类器的 roc 曲线来说,它的每一点就是代表了这个分类器的 tpr 和 fpr。
(1)、那如何得到一个分类器的多个的 tpr 和fpr 呢?主要是通过调节它的分类阈值来达到。
(2)、可以对测试级的每一个示例计算它的分 数,这个分数的含义是什么呢?就是指的是这个是的,它被判断为正事例的分数,分数越高就表明它被判断为正事例的可能性越大。
(3)、把这些分数计算出来之后,把它从高到低进行排序,然后一次选择每一个分数作为预值来判断势力的类别,从而可以得到多个 roc 曲线上点,然后再将这些点把它连接起来并平滑就可以得到这个分类区的 or c 曲线。
(4)计算这种分数有多种方法。比如说之前介绍过朴素的贝叶斯分类器,朴素的贝叶斯分类器可以计算每一个事例,它为正事例的概率和为负事例的概率,那可以把它为正事例的概率作为这样的一个 score。还有一些别的其它的方法。
(5)那来看一下这个曲线是怎么画的?首先,计算了每一个测试集中它的分数,然后把分数呢从低到高进行排列,首先从得分最高的这个分数来看,那也就是如果设置这个阈值为一的话,如果当它的分数必须要大于等于一的时候,才判断这个事例为正根据这样的一个阈值条件,那我所有的这些数据对象都被划分为了什么负事例,也就意味着 tpr和我的 fpr 的取值都为零就是对应到 or c 曲线上的第一个点。在调整这样的一个阈值假设设0.95为阈值,也就是只有它的分数大于等于0.95才是正事例,这个时候,只有一个事例被判断为正事例,它和它的类别是一致的也就是正确的,这个时候,它的所有的事例都为负事例,所以 fp 的值是零,根据 tp、fp 的值,就可以算出 tp r 和 f pr,对应的这个值就是0.2,比如说它的 tpr 会增加但是 f pr 依然为零。那一次再往前一个阈值设置,设置为0.93的时候就有两个事例被判断为正事例而且这两个事例它的初始的标签,本来就是真的,所以 tp的值是二,所有的事例都被判断为负事例所以f p依然为零如果设置阈值可以得到曲线上的一个点就是(0.4,0),然后再向前,进行阈值的选择到0.87这里,大于等于0.87才是正事例,可以得到三个正事例,其中有两个是被正确判断的,一个是被错误判断的,所以就得到分类器上的另外一个 ro c 曲线上的点,就是(0.4,0.2),依次的取这样的一些阈值,就可以得到若干个点,把这若干个点连接起来,并且进行平滑,就可以得到最后的关于这个分类器的 roc 曲线。
五、模型选择因素
然后再来看一下,在模型选择中还有一些其它的因素,是需要考虑的。
1.accuracy
那之前主要考虑的是 accuracy 就是分类器的准确度。
2.speed
那其实在模型选择的时候,除了要考虑它的准确率,可能还要考虑这个模型的它的速度,也就是如果这个分类器比较复杂,它的分类准确度可能会比较高,但它的时间需要的时间比较多,速度比较慢,也会考虑是否去选择这个分类器,
3.robustness
其余还需要考虑的就是这个分类器的鲁棒性,就是如果数据中噪音比较多,这个分类器是不是会受比较大的影响。
4.scalability
还有这个可扩展性,也就是数据可能是会更新的,这样的一个分类器,它是不是可以方便的更新,那有可能训练集的数量会非常非常大,这个分类器它是不是对于这种大数据级是不是能够非常快速地进行构建和分类。
5.interpretability
此外,可能还需要考虑这个分类器的可解释性,因为一个分类器它只有具有可解释性,人们才能更好的理解它,才能更好的去利用它,除了之前的一些指标,可能还有一些其它的指标用于帮助去选择分类器。