(读书笔记)周志华《机器学习》第2章:模型评估与选择

模型评估与选择

2.1 经验误差与过拟合

错误率(error rate),精度(accuracy)

在分类任务中,通常把错分的样本数占样本总数的比例称为错误率(error
rate)。比如m个样本有a个预测错了,错误率就是a/m;与错误率相对的有精度(accuracy),或者说正确率,数值上等于1-错误率。

误差(error)

更一般地,通常会把模型输出和真实值之间的差异称为误差(error)。在训练集上的误差称为训练误差(training error)或者经验误差(empirical error)。而在新样本上的误差则称为泛化误差(generalization error)。

我们希望模型的泛化误差尽可能小,但现实是,我们无法知道新样本是怎样的,所以只能尽可能地利用训练数据来最小化经验误差。

但是否经验误差小,泛化误差就一定小呢?这不是一定的,如果模型相比训练数据来说过于复杂,那就很有可能把训练数据本身的一些特点当作整个样本空间的特点,从而使得在训练数据上有很小的经验误差,但一旦面对新样本就会有很大误差,这种情况叫做过拟合(overfitting)。相对的是欠拟合(underfitting)。

欠拟合很容易避免,只要适当地增加模型复杂度(比方说增加神经网络的层数)就好。但过拟合是无法彻底避免的,只能缓解(减少模型复杂度/增加训练数据),这也是机器学习发展中的一个关键阻碍。

拓展:如何防止过拟合

从模型&数据角度:

  1. 获取更多数据,或者数据增强
  2. 简化模型

从训练过程角度:

  1. 提前终止
  2. Dropout

从正则化角度:

  1. L1和L2正则化

详情可以参考我的另一篇博文:

在现实任务中,要处理一个问题,我们往往有多种算法可以选择,即使是同一个算法也需要进行参数的选择,这就是机器学习中的**模型选择(model selection)**问题。既然泛化误差无法使用,而经验误差又存在着过拟合问题,不适合作为标准,那么我们应该如何进行模型选择呢?针对这个问题,后面给出回答。

书中将模型选择问题拆解为(1)评估方法;(2)性能度量;(3)比较检验;三个子问题。可以这样理解:

评估方法:用什么数据做评估?如何获得这些数据?

性能度量:评估时如何衡量模型的好坏?有哪些评价标准?

比较检验:如何比较模型的性能?注意不是简单地比大小!在机器学习中性能比较是相当复杂的。

2.2评估方法

前面已经提到了不能把经验误差用作模型评估,否则会存在过拟合的嫌疑。那么很自然地,我们就会想到是否有一种方法能近似泛化误差呢?答案是有的,就是使用测试集(testing set)进行评估,利用测试误差(testing error)来近似泛化误差

测试集和训练集一样,从样本空间中独立同分布采样而得,并且应尽可能与训练集互斥,也即用于训练的样本不应再出现在测试集中,否则就会高估模型的性能。为什么呢?举个例子,老师布置了10道题做课后作业,如果考试还是出这10两题,只能证明大家记住了这10道题;只有出不一样的题,才能看出大家是否真的掌握了知识,具备了举一反三的能力。

测试数据更多地是指模型在实际使用中遇到的数据,为了和模型评估中使用的测试集进行区分,一般会把模型评估用的测试集叫做验证集(validation set)。举个例子,在Kaggle或者天池上参加比赛,一般会拿到一份带标记的原始数据集和一份不带标记的测试数据集。我们需要选用一种评估方法来把原始数据集划分成训练集和验证集,然后进行训练,并按照模型在验证集上的性能表现来进行选择。最后挑出最好的模型对测试集的样本进行预测,并提交预测结果。下文将介绍几种常用的评估方法。

2.2.1 留出法

直接将数据集划分为两个互斥集合,注意保持数据分布的一致性(比如比例相似)。保留类别比例的采样方式又叫分层采样(stratified sampling)。举个例子,原始数据集有100个样本,假设训练集占70个,验证集占30个。若训练集中正例反例各35个,也即比例为1:1,那么验证集中就应该正例反例个15个,同样保持1:1的比例。当然,这个比例最好还是遵循原始数据集中数据的分布规律。

单独一次留出法的结果往往不可靠,一般是进行多次随机划分,然后取各次评估的平均值作为评估结果。

留出法最大的缺点就是要进行划分,当训练集占的比例较大时,模型可以更准确地刻画原始数据集的特征,但是因为验证集较小,评估的结果往往不稳定也不准确;当训练集占的比例较小时,训练出的模型又不能充分学习到原始数据集的特征,评估结果可信度不高。这个问题没有完美的解决方案,一般取数据集2/3~4/5的样本作为训练集,余下的作为验证集。

2.2.2 交叉验证

将数据集D划分为k个大小相同的互斥子集,满足D=D1∪D2∪…∪Dk,Di∩Dj=∅(i≠j),同样地尽可能保持数据分布的一致性,即采用分层抽样的方法获得这些子集。交叉验证法的思想是:每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就有K种训练集/测试集划分的情况,从而可进行k次训练和测试,最终返回k次测试结果的均值。交叉验证法也称“k折交叉验证”,k最常用的取值是10,下图给出了10折交叉验证的示意图:

(读书笔记)周志华《机器学习》第2章:模型评估与选择_第1张图片

类似于留出法,因为存在多种划分k个子集的方式,为了减少因不同的样本划分而引入的差别,需要进行多次k折交叉验证。例如10次10折交叉验证,指的是进行了总计100次训练和100次评估。

与留出法类似,将数据集D划分为K个子集的过程具有随机性,因此K折交叉验证通常也要重复p次,称为p次k折交叉验证,常见的是10次10折交叉验证,即进行了100次训练/测试。特殊地当划分的k个子集的每个子集中只有一个样本时,称为“留一法”,显然,留一法的评估结果比较准确,但对计算机的消耗也是巨大的。

2.2.3 自助法

我们希望评估的是用整个D训练出的模型。但在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模变化的影响较小,但计算复杂度又太高了。“自助法”正是解决了这样的问题。

自助法的基本思想是:给定包含m个样本的数据集D,每次随机从D 中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D 中,使得该样本在下次采样时仍有可能被采到。重复执行m 次,就可以得到了包含m个样本的数据集D’。可以得知在m次采样中,样本始终不被采到的概率取极限为:
在这里插入图片描述
这样,通过自助采样,初始样本集D中大约有36.8%的样本没有出现在D’中,于是可以将D’作为训练集,D-D’作为测试集。自助法在数据集较小,难以有效划分训练集/测试集时很有用,但由于自助法产生的数据集(随机抽样)改变了初始数据集的分布,因此引入了估计偏差。在初始数据集足够时,留出法和交叉验证法更加常用。

2.2.4 调参和最终模型

调参(parameter tuning)一般先选定一个范围和变化步长,比如(0,1],步长0.2,这样就有五个参数候选值。然后进行评估,选出最好的一个。这样选出的未必是全局最优的参数,但为了在开销和性能之间折中,只能这么做,毕竟我们无法试尽参数的所有取值。而且多个参数组合的情况是指数上升的,比方说有3个参数,每个参数评估5种取值,就需要测试多达 5 3 5^3 53 种情形。

特别注意,训练/验证这个过程是为了让我们确定学习算法和算法的参数,确定了这些之后,我们需要再利用整个源数据集进行训练,这次训练所得的模型才是最终模型,也即提交给用户,进行测试的模型。

2.3 性能度量

性能度量(performance measure)指的是用于衡量模型泛化能力的评价标准。使用不同的性能度量往往导致不同的评判结果。比方说搭建推荐系统,两个模型中一个精度高,一个覆盖度高,如果我们想让更多的商品得到推荐可以就会选后一个模型。所以说,模型的好坏是相对的,取决于我们采用什么性能度量,而采用什么性能度量则应取决于我们的任务需求。

2.3.1 错误率和精度

在回归任务中,即预测连续值的问题,最常用的性能度量是“均方误差”(mean squared error),很多的经典算法都是采用了MSE作为评价函数,想必大家都十分熟悉。
(读书笔记)周志华《机器学习》第2章:模型评估与选择_第2张图片
在分类任务中,即预测离散值的问题,最常用的是错误率和精度,错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例,即:精度=1-错误率。

(读书笔记)周志华《机器学习》第2章:模型评估与选择_第3张图片
关于数据分布和概率密度函数不懂的可以参考应该如何理解概率分布函数

2.3.2 查准率、查全率与F1

假设我们正常处理一个二分类问题,按照模型预测值和真实值可以把测试样本划分为四种情形:真正例(true positive),假正例(false positive),真反例(true negative),假反例(false negative)。可以把结果表示为下图这个矩阵——混淆矩阵(confusion matrix)。
(读书笔记)周志华《机器学习》第2章:模型评估与选择_第4张图片
为了方便理解,做一下详细说明:
(读书笔记)周志华《机器学习》第2章:模型评估与选择_第5张图片

举个例子:

数据标签 1 2 3 4 5 6 7 8 9 10
真实标签 N N N T T N N N N T
预测结果 N N T T N N N N N T

我们来看一下正 样本的准确率和召回率。
准确率P:预测结果一共有三个预测为T,其中两个真实标签为T,所以2/3
准确率R:真实标签一共有三个预测为T,其中两个预测结果为T,所以2/3

查准率,又称准确率(precision),用于衡量模型避免错误的能力,分母是模型预测的正例数目。

查全率,又称召回率(recall),用于衡量模型避免缺漏的能力,分母是测试样本真正包含的正例数目。

一般来说,正如天下没有免费的午餐,查准率和查全率是一对矛盾的度量。例如我们想让推送的内容尽可能用户全都感兴趣,那只能推送我们把握高的内容,这样就漏掉了一些用户感兴趣的内容,查全率就低了;如果想让用户感兴趣的内容都被推送,那只有将所有内容都推送上,宁可错杀一千,不可放过一个,这样查准率就很低了。

因此,排序本身的质量很能体现出一个模型的泛化性能,“P-R曲线”正是描述查准/查全率变化的曲线,P-R曲线定义如下:根据学习器的预测结果(一般为一个实值或概率)对测试样本进行排序,将最可能是“正例”的样本排在前面,最不可能是“正例”的排在后面,按此顺序逐个把样本作为“正例”进行预测,每次计算出当前的P值和R值,如下图所示:
(读书笔记)周志华《机器学习》第2章:模型评估与选择_第6张图片
P-R曲线如何评估呢?若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优。

F1,是查准率和查全率的调和平均,用于综合考虑这两个性能度量。

1 F 1 = 1 2 × ( 1 p r e c i s i o n + 1 r e c a l l ) ⇒ F 1 = 2 × p r e c i s i o n × r e c a l l p r e s i o n + r e c a l l \frac{1}{F1} = \frac{1}{2} \times (\frac{1}{precision} + \frac{1}{recall}) \Rightarrow F1 = \frac{2 \times precision \times recall}{presion + recall} F11=21×(precision1+recall1)F1=presion+recall2×precision×recall

有时候我们对查准率,查全率的需求是不同的。比方说广告推荐,要尽量避免打扰用户,因此查准率更重要;而逃犯检索,因为漏检的危害很大,所以查全率更重要。这时就需要使用 F β F_\beta Fβ了。

F β F_\beta Fβ,是查准率和查全率的加权调和平均,用于综合考虑这两个性能度量,并采用不同的权重。

1 F β = 1 1 + β 2 × ( 1 p r e c i s i o n + β 2 r e c a l l ) ⇒ F β = ( 1 + β 2 ) × p r e c i s i o n × r e c a l l ( β 2 × p r e s i o n ) + r e c a l l \frac{1}{F_\beta} = \frac{1}{1+\beta^2} \times (\frac{1}{precision} + \frac{\beta^2}{recall}) \Rightarrow F_\beta = \frac{(1+\beta^2) \times precision \times recall}{(\beta^2 \times presion) + recall} Fβ1=1+β21×(precision1+recallβ2)Fβ=(β2×presion)+recall(1+β2)×precision×recall

其中 β > 0 \beta>0 β>0 度量了查全率对查准率的相对重要性,等于1时 F β F_\beta Fβ退化为F1,小于1时查准率更重要,大于1时查全率更重要。

有时候我们会有多个二分类混淆矩阵,例如:多次训练或者在多个数据集上训练,那么估算全局性能的方法有两种,分为宏观和微观。简单理解,宏观就是先算出每个混淆矩阵的P值和R值,然后取得平均P值macro-P和平均R值macro-R,在算出Fβ或F1,而微观则是计算出混淆矩阵的平均TP、FP、TN、FN,接着进行计算P、R,进而求出Fβ或F1。

(读书笔记)周志华《机器学习》第2章:模型评估与选择_第7张图片

2.3.3 ROC与AUC

学习器对测试样本的评估结果一般为一个实值或概率,设定一个阈值,大于阈值为正例,小于阈值为负例,因此这个实值的好坏直接决定了学习器的泛化性能,若将这些实值排序,则排序的好坏决定了学习器的性能高低。ROC曲线正是从这个角度出发来研究学习器的泛化性能,

ROC,全称受试者工作特征(Receiver Operating Characteristic)。ROC曲线与P-R曲线十分类似,都是按照排序的顺序逐一按照正例预测,不同的是ROC曲线以“真正例率”(True Positive Rate,简称TPR)为横轴,纵轴为“假正例率”(False Positive Rate,简称FPR),ROC偏重研究基于测试样本评估值的排序好坏。

T P R = T P T P + F N TPR = \frac{TP}{TP+FN} TPR=TP+FNTP

F P R = F P T P + F N FPR = \frac{FP}{TP+FN} FPR=TP+FNFP

(读书笔记)周志华《机器学习》第2章:模型评估与选择_第8张图片
简单分析图像,可以得知:当FN=0时,TN也必须0,反之也成立,我们可以画一个队列,试着使用不同的截断点(即阈值)去分割队列,来分析曲线的形状,(0,0)表示将所有的样本预测为负例,(1,1)则表示将所有的样本预测为正例,(0,1)表示正例全部出现在负例之前的理想情况,(1,0)则表示负例全部出现在正例之前的最差情况。对角线,这对应于随机猜测模型,可以理解为真正例和假正例轮换出现,即每预测对一次接下来就预测错一次,可以看作是随机猜测的结果。

现实中的任务通常都是有限个测试样本,因此只能绘制出近似ROC曲线。绘制方法:首先根据测试样本的评估值对测试样本排序,接着按照以下规则进行绘制。
(读书笔记)周志华《机器学习》第2章:模型评估与选择_第9张图片
同样地,进行模型的性能比较时,若一个学习器A的ROC曲线被另一个学习器B的ROC曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。ROC曲线下的面积定义为AUC(Area Uder ROC Curve),不同于P-R的是,这里的AUC是可估算的,即ROC曲线下每一个小矩形的面积之和。易知:AUC越大,证明排序的质量越好,AUC为1时,证明所有正例排在了负例的前面,AUC为0时,所有的负例排在了正例的前面。

A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)\cdot(y_i+y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)

补充一点,ROC曲线上的面积等于排序损失(loss)。也即有:

A U C = 1 − ℓ r a n k AUC = 1 - \ell_{rank} AUC=1rank

2.3.4 代价敏感错误率与代价曲线

现实任务中,有时会遇到不同类型错误造成后果不同的状况。比如医生误诊,把患者诊断为健康人的影响远大于把健康人诊断为患者,因为可能因为这次误诊丧失了最佳治疗时机。为了权衡不同类型错误带来的不同损失,可以为这些错误类型赋以非均等代价(unequal cost)。

还是举二分类为类,可以根据任务的领域知识来设定一个代价矩阵(cost matrix):
(读书笔记)周志华《机器学习》第2章:模型评估与选择_第10张图片
预测值与真实值相等时,自然错误代价为0。但把第0类错预测为第1类和把第1类错预测为第0类这两种错误的代价是不同的。注意,重要的不是代价在数值上的大小,而是它们的比值。比方说 c o s t 01 c o s t 10 > 1 \frac{cost_{01}}{cost_{10}} > 1 cost10cost01>1, 这就说明把第0类错预测为第1类的代价更高。

使用了非均等代价之后,我们在使用性能度量时自然也需要作出相应的改变,比方说代价敏感(cost-sensitive)版本的错误率:

E ( f ; D ; c o s t ) = 1 m ⟮ ∑ x i ∈ D + I ( f ( x i ) ≠ y i ) × c o s t 01 + ∑ x i ∈ D − I ( f ( x i ) ≠ y i ) × c o s t 10 ⟯ E(f;D;cost) = \frac{1}{m}\lgroup\sum_{x_i \in D^+}\mathbb{I}(f(x_i) \neq y_i) \times cost_{01} + \sum_{x_i \in D^-}\mathbb{I}(f(x_i) \neq y_i) \times cost_{10}\rgroup E(f;D;cost)=m1xiD+I(f(xi)̸=yi)×cost01+xiDI(f(xi)̸=yi)×cost10

由于ROC曲线不能反应使用非均等代价之后的期望总体代价,所以改用代价曲线(cost curve)来取替。

代价曲线图的纵轴为归一化代价(将代价映射到 [0,1] 区间),横轴为正例概率代价。画法类似于ROC曲线,它是将ROC曲线的每一个点转为图中的一条线。依次计算出ROC曲线每个点对应的FPR和FNR,然后把点 (0,FPR) 和点 (0,FNR) 连线。最终所得的图中,所有线的下界所围成的面积就是该模型的期望总体代价。

(读书笔记)周志华《机器学习》第2章:模型评估与选择_第11张图片

2.4 比较检验

偏差与方差

除了估计算法的泛化性能,我们往往还希望知道为什么有这样的性能?这时一个有用的工具就是偏差-方差分解(bias-variance decomposition)。

偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据,如下图第二行所示。

方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散,如下图右列所示。
(读书笔记)周志华《机器学习》第2章:模型评估与选择_第12张图片
也可以参考知乎:机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?

对学习算法的期望繁华错误率进行拆解,最终会发现能拆解为三个项(需要推导):

E ( f ; D ) = E D [ ( f ( x ; D ) − f ‾ ( x ) ) 2 ] + ( f ‾ ( x ) − y ) 2 + E D [ ( y D − y ) 2 ] E(f;D) = \mathbb{E}_D[(f(x;D) - \overline{f}(x))^2] + (\overline{f}(x) - y)^2 + \mathbb{E}_D[(y_D - y)^2] E(f;D)=ED[(f(x;D)f(x))2]+(f(x)y)2+ED[(yDy)2]

依次对应于方差(variance)、偏差(bias)、噪声(noise):

E ( f ; D ) = v a r ( x ) + b i a s 2 ( x ) + ϵ 2 E(f;D) = var(x) + bias^2(x) + \epsilon^2 E(f;D)=var(x)+bias2(x)+ϵ2

这三者的含义是这样的:

方差:使用同规模的不同训练集进行训练时带来的性能变化,刻画数据扰动带来的影响;

偏差:学习算法的期望预测与真实结果的偏离程度,刻画算法本身的拟合能力;

噪声:当前任务上任何算法所能达到的期望泛化误差的下界(即不可能有算法取得更小的误差),刻画问题本身的难度;

也即是说,泛化性能是有学习算法的拟合能力,数据的充分性以及问题本身的难度共同决定的。给定一个任务,噪声是固定的,我们需要做得就是尽量降低偏差和方差。

但是这两者其实是有冲突的,这称为偏差-方差窘境(bias-variance dilemma)。给定一个任务,我们可以控制算法的训练程度(如决策树的层数)。在训练程度较低时,拟合能力较差,因此训练数据的扰动不会让性能有显著变化,此时偏差主导泛化错误率;在训练程度较高时,拟合能力很强,以至于训练数据自身的一些特性都会被拟合,从而产生过拟合问题,训练数据的轻微扰动都会令模型产生很大的变化,此时方差主导泛化错误率。

注意,将泛化性能完美地分解为方差、偏差、噪声这三项仅在基于均方误差的回归任务中得以推导出,分类任务由于损失函数的跳变性导致难以从理论上推导出分解形式,但已经有很多方法可以通过实验进行估计了。

习题

2.1

问:数据集包含1000个样本,其中500个正例,500个反例,将其划分为包含70%样本的训练集和30%样本的测试集用于留出法评估,试估算共有多少种划分方式。

首先为了保证训练集和测试集的类别比例一致,使用分层采样,训练集包含正例反例各350个;测试集包含正例反例个150个。排列组合问题: C 500 350 C_{500}^{350} C500350 * C 500 350 C_{500}^{350} C500350

2.2

问:数据集包含100个样本,其中正反例各一半,假定学习算法所产生的模型是将新样本预测为训练样本数较多的类别(训练样本数相同时进行随机猜测),试给出用10折交叉验证法和留一法分别对错误率进行评估所得的结果。

(1)10折交叉验证法:通过分层采样获得10个互斥子集,每个子集包含10个样本,正反例各5个。每次取其中9个子集做训练,1个子集做测试。因为取出正列或者反例的概率相同,所以只能进行随机猜测,错误率为50%。

(2)留一法:每次取一个样本做测试,若取出的样本为正例,那么剩下的训练集中有50个反例,49个正例,因此预测结果为反例,反之若取出的样本为反例,那么剩下的训练集中有49个反例,50个正例,因此预测结果为正例,错误率都为100%。

2.3

问:若学习器A的F1值比学习器B高,试析A的BEP值是否也比B高。

F 1 = 2 × p r e c i s i o n × r e c a l l p r e s i o n + r e c a l l F1=\frac{2 \times precision \times recall}{presion + recall} F1=presion+recall2×precision×recall

BEP是查准率precision与查全率recall相等时的取值,令式中的 p r e c i s i o n = r e c a l l = B E Q precision = recall = BEQ precision=recall=BEQ,则

F 1 = B E Q F1=BEQ F1=BEQ
模型A的F1值高于模型B的F1值:

2.4

问:试述真正例率(TPR)、假正例率(FPR)与查准率(P)、查全率(R)之间的联系。

真正例率是真正例占真实正例的比例;

假正例率是假正例占真实反例的比例;

查准率是真正例占预测正例的比例;

查全率是真正例占真实正例的比例;

其中,真正例指模型预测为正例并且预测正确的样例,假正例指模型预测为正例并且预测错误的样例。前缀真实表明在数据集中的真实标记,前缀预测表明模型预测出的标记。

特别地,查全率与真正例率是相等的。

2.5

问:试证明 A U C = 1 − ℓ r a n k AUC=1-\ell_{rank} AUC=1rank

先回顾一下AUC的计算方法:

A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)\cdot(y_i+y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)

计算方法类似于积分,把ROC曲线下的面积分解为m(样本个数)个小矩形,然后对这些小矩阵的面积求和。每个矩形的宽等于相邻的两个点横坐标的差值,每个矩形的高等于相邻两个点纵坐标之和的 1 2 \frac{1}{2} 21。上式把常数 1 2 \frac{1}{2} 21 提到求和项外了。

再看看排序损失(指按算法预测值排序时带来的损失):

ℓ r a n k = 1 m + ⋅ m − ∑ x + ∈ D + ∑ x − ∈ D − ( I ( f ( x + ) < f ( x − ) ) + 1 2 I ( f ( x + ) = f ( x − ) ) ) \ell_{rank} = \frac{1}{m^+ \cdot m^-} \sum_{x^+ \in D^+}\sum_{x^- \in D^-} (\mathbb{I}(f(x^+) < f(x^-)) + \frac{1}{2}\mathbb{I}(f(x^+) = f(x^-))) rank=m+m1x+D+xD(I(f(x+)<f(x))+21I(f(x+)=f(x)))

其中 m + m^+ m+ m − m^- m 分别表示测试集中的正例集和反例集。

这题目前还没有头绪,AUC曲线上的面积是:

1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( ( 1 − y i ) + ( 1 − y i + 1 ) )   = − 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 − 2 ) \frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)\cdot((1-y_i)+(1-y_{i+1})) \ = -\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)\cdot(y_i+y_{i+1}-2) 21i=1m1(xi+1xi)((1yi)+(1yi+1)) =21i=1m1(xi+1xi)(yi+yi+12)

怎么证明这个表达式和 ℓ r a n k \ell_{rank} rank 相等呢?

2.6

问:试述错误率与ROC曲线之间的关系

错误率 ϵ \epsilon ϵ

ϵ = F P + F N m \epsilon = \frac{FP + FN}{m} ϵ=mFP+FN

其中 m m m 为样本总数, F P FP FP 为假正例个数, F N FN FN 为假反例个数。因为给定测试集,正例反例的数目是固定的。当我们以ROC曲线上的一个点作为阈值划分预测的正例和反例时,该点的真正例率(y轴)越高,那么假反例就会越少;该点的假正例率(x轴)越低,那么假正例就越少,从而使得错误率越低。归纳起来就是,在ROC曲线上距离左上角 (0,1) 点越近的点错误率越低。

2.7

问:试证明任意一条ROC曲线都有一条代价曲线与之对应,反之亦然。

回顾代价曲线的作法,求ROC曲线上每一点对应的FPR和FNR,在代价平面连接点 (0,FPR) 和点 (1,FNR),代价曲线由所有连线的下界确定。由于ROC曲线是连续的,故必然有一条对应的代价曲线。 反过来,对代价曲线上的任何一点作切线,都可以得到对应的FPR与FNR,从而计算出ROC曲线上对应点的坐标。因此代价曲线也必然有一条对应的ROC曲线。

2.8

问: M i n − M a x Min-Max MinMax 规范化和 z − s c o r e z-score zscore 规范化是两种常用的规范化方法。令 x x x x ′ x' x
分别表示变量在规范化前后的取值,相应的,令 x m i n x_{min} xmin x m a x x_{max} xmax 表示规范化前的最小值和最大值, x m i n ′ x_{min}' xmin
x m a x ′ x_{max}' xmax 表示规范化后的最小值和最大值, x ˉ \bar{x} xˉ σ x \sigma_x σx
分别表示规范化前的均值和标准差。试析二者的优缺点。

M i n − M a x Min-Max MinMax 规范化:

x ′ = x m i n ′ + x − x m i n x m a x − x m i n × ( x m a x ′ − x m i n ′ ) x' = x_{min}' + \frac{x-x_{min}}{x_{max}-x_{min}} \times (x_{max}' - x_{min}') x=xmin+xmaxxminxxmin×(xmaxxmin)

z − s c o r e z-score zscore 规范化:

x ′ = x − x ˉ σ x x' = \frac{x - \bar{x}}{\sigma_x} x=σxxxˉ

M i n − M a x Min-Max MinMax 规范化比较简单,缺点在于当有新数据输入时,可能导致max和min的变化,需要重新定义。

z − s c o r e z-score zscore 规范化能把数据的原分布转换为标准正态分布,即均值为0,标准差为1,对于某些任务可能会有帮助。比如分类时,规范化后取值靠近-1的认为是负类,取值靠近1的认为是正类。注意!它并非是把数据映射到 [-1,1] 区间,会有超出的部分(回想正态分布曲线两段的延伸段),实际处理时一般把超出部分都修改为-1和1以满足映射到区间内的要求。这种规范化的缺点就是改变了数据的分布,这可能会引入某种误差。

2.9

问:试述卡方检验过程。

根据概率论与数理统计中的内容(交大版本,P239)。卡方检验适用于方差的检验。步骤如下:

1)分均值已知与均值未知两种情况,求得卡方检验统计量;

2)根据备选假设以及α,求得所选假设对应的拒绝域(临界值区间);

3)根据1)中求得的卡方统计量与2)中求得的拒绝域,判断假设成立与否;

参考:https://github.com/familyld/Machine_Learning/blob/master/02model_evaluation_and_model_selection.md

你可能感兴趣的:(读书笔记)