模型评估与选择
2.1经验误差与过拟合
经验误差(empirical error)为训练误差(training error),即在训练集上得到的误差,
在新样本上的误差为泛化误差(generalization error)
当学习器把训练样本学习的太好时,会产生过拟合(overfitting),于此相对的是欠拟合(underfitting)即对训练样本的一般性质上尚未学好
过拟合最常见的情况是学习能力过于强大,以至于把训练样本所有的不太一般的性质也学会了,而欠拟合通常是由于学习能力低下导致的
因为数据的不确定和不准确性,所以没法得到一个完全正确的模型,所以过拟合不可避免。即因为数据的随机性和其他原因,经验误差等于0,但是泛化误差也等于0的情况基本上是不存在的
2.2 评估方法
通过实验来得到的泛化误差来评估并进行选择
通常需要一个测试集(testing set)来测试学习器对新样本的判断能力,用测试误差(testing error)作为泛化误差的一个近似
对于一个m个样本的数据集D,得到一份训练集S和一份测试集T
2.2.1 留出法
即将数据集分成两份数据集,当做测试集和训练集,这两个数据集的样本都不一样
需要注意的是S和T的分布需要一致,避免划分是引入额外的误差,列如分类中,各分类的比例保持一致
从采样(sampling)的角度就是分层采样(stratified sampling),即按照类别分别采集相同比例的样本
假设D有三个类别,分别占有4,4,2的比例,那假设训练样本抽取80%的数据,则对于占40%的class1取其中的80%,同理对其他的类别
但是留出法得到的结果往往不稳定,因为根据采样的方法不同,得到的D,T样本也不同,因为如果对D进行排序,则取前面的80%数据和取后面80%的数据,得到的不一样,
一般采用若干次随机划分、重复进行实验评估后取平均值
但是实际是评估数据集D训练出来的学习器性能,所以常用的比例大约是2/3到4/5的数据用于当做训练集,来保证能尽可能接近于训练集D的分类器,但是又有一定数据来评估,得到较准确的评估值
2.2.2 交叉验证法
将数据集D划分为k个大小类似的互斥子集,每个子集都能保持一样的数据分布,也就是用了分层采样得到。
将k-1个子集当做训练集,1个当做测试集,那就能得到k个评估,取平均值作为整体的评估结果。
常用的k值为10,也就是k-折交叉验证,其他常用的k值为5,20。
其中如果将k定为m,则测试集只是其中一个样本,叫做留一法,这样可以保证得到的学习器可以和D训练出来的近似一致,
但是没法保证得到的估计结果会比其他评估方法好,并且计算量太大
2.2.3 自助法
上面的方法因为都划分了一部分当成测试集,导致实际学习器训练的数据比实际数据D小,所以必然引入了一些因训练样本规模不一样导致的估计偏差,留一法虽然影响较小,但是计算量提高了。
为了解决训练规模的影响,可使用自助法
自助法(bosststrapping)是以自助采样法(boostrap sampling)为基础,给定m个数据集D,对D进行采样产生数据集D’,然后在将该样本放回D中,使得样本在下次采样中可以被采集到,就是放回的采样;重复m次后,得到了m个样本的数据D’;就是对数据D进行放回采样,每次采集m个样本。
这样样本D’的数据规模和原本的一样,并且因为有些数据被重复抽到导致一部分的数据并没有包括
数据在m次采样中始终不包括的概率是$(1-\frac{1}{m})^m$,取极限得到
即通过自助法,还有大概36.8%的样本没有被抽到,可以用D’做训练集,D\D’当测试集,这样的测试结果为包外估计(out-of-bag estimate)
自助法在数据集较小、难以有效划分训练集/测试集时很有效;此外,自助法能从初试数据集中产生不同的训练集,对集成学习等方法有很大的好处,但是因为改变了原本数据的分布,所以引入了估计偏差。因此在初试数据量足够时,留出法和交叉验证法较为常用
2.2.4 调参和最终模型
大部分的算法都有参数(parameter)需要设置,除了对模型算法进行选择,还需要对算法参数进行设置,叫做参数调节即调参(parameter tuning)
许多参数都是在一个范围内选择的,参数往往不是最佳的,这是在计算开销和性能估计做的折中选择。
通常得到的最终模型还需要对整个训练进行训练,用的就是得到的最佳参数和算法模型,因为在之前得到的模型和算法参数都是根据部分数据集训练得到的。
为了和最终测试的测试集加以区分,训练数据中来估计的数据集称之为验证集(validation set)
2.3 性能度量
除了实验估计方法还需要衡量模型泛化能力的评价标准,就是性能度量(performace measure)。在任务需求下,使用不同的性能度量,可以得到不同的结果。所以模型的好坏除了算法和数据,还取决于任务需求。
回归任务最常用的性能度量是 均方误差(mean squared error)
更一般的,对于数据分布$\mathcal{D}$和概率密度函数$\mathcal{p}(\cdot)$,均方误差可描述为
2.3.1 错误率和精度
对于数据集D,分类错误率定义为
精度则为
更一般的,对于数据分布$\mathcal{D}$和概率密度$\mathcal{p}(\cdot)$来说,错误率和精度为
精度则为
2.3.2 查准率、查全率和F1
如果不为了得到准确率,而是关心判断正确的样本中正确的比例,或者 有多少正例的样本被判断对了,则需要其他性能度量方法
查准率(precision)和查全率(recall)亦称为召回率更适合用于这类需求的性能度量
对于二分问题,根据真实类别和学习器判断的类别组合成四个分类
- 真正例(true positive) 真实为 正,预测也为 正 TP
- 假正例(false positive) 真实为 负,预测为 正 FP
- 真反例(true negative) 真实为 负, 预测为 负 TN
- 假反例(false negative) 真实为 正,预测为 负 FN
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
查准率P和查全率R分别为
查准率和查全率互相制约,基本上一个比较高时,另一个则较低,因为如果想要查全率高,则需要尽量的判断为正,但是会增加假正例,所以降低了查准率。如果要查准率高,则尽量选择有把握的正例,则导致了真正例在所有正例的比例降低,所以查全率会降低。
P-R曲线
根据学习器对样本的为正例的判断可信度排序,得到从最有可能是正例到最有可能是负例排序的样本,根据每个样本为阀值进行划分,判断前面的为正例,后面的为负例,得到查准率和查全率,用查全率作为横坐标,查准率作为纵坐标,得到曲线就是P-R曲线
1 | import numpy as np |
[<matplotlib.lines.Line2D at 0x1a1b31d198>]
1 |
|
[<matplotlib.lines.Line2D at 0x1a1b2a14a8>]
如果学习器A的P-R曲线包裹学习器B的曲线,则表明A优于B,但是曲线相交,则用曲线下的面积来判断,但是这个值很难判断,所以有其他判断方式
平衡点(Break-Even Point 简称BEP),即查准率=查全率的时候.
BEP过于简单,所以一般使用F1度量,
通过对查准率和查全率的偏向,得到一个更一般的$F_\beta$,定义为
其中$\beta>0$,度量了查全率对查准率的相对重要程度,当$\beta=1$就是标准的F1,$\beta >1$则说明查全率更重要,$\beta<1$说明查准率更重要
假设进行了多次的训练/测试,就获得了多个二分类的混淆矩阵,要综合判定,则有两种方法
一种是分别计算查准率和查全率,记为(P1,R1),(P2,R2),…$(P_n,R_n)$,在计算平均值,得到宏查准率(macro-P),宏查全率(macro-R),得到相应的宏F1(macro-F1)
另一种为对混淆矩阵的元素,求平均值,得到对应的$\overline{TP}$,$\overline{TN}$,$\overline{FP}$,$\overline{FN}$
求得微查准率(micro-P),微查全率(micro-R),和对应的微F1(micro-F1)
$$micro-R = \frac{\overline{Tp}}{\overline{TP} +\overline{FN}}$$
$$micro-F1 = \frac{2 \times micro-P \times micro-R}{micro-P + micro-R}$$
2.3.3 ROC和AUC
P-R曲线对于样本不均衡的情况下,不稳定,所以可以使用ROC来判断
ROC(Receiver Operation Characteristic)全称是受试者工作特征曲线,与P-R曲线类似,但是横纵坐标分别是 假正例率(False Positive Rate FPR)和 真正例率(True Positive Rate TPR)分别表示为
如果学习器A的ROC曲线包裹学习器B的曲线,则表明A优于B,但是如果曲线交叉,则用去线下的面积AUC(Area Under ROC Curve)来判断好坏。
假设ROC曲线是由{$(x_1,y_1),(x_2,y_2),…,(x_n,y_n$}的点组成的,则AUC可以估计为
可以看到AUC和样本预测的排序质量有关,假设有$m^+$,$m^-$个正反例,$D^+,D^-$表示正反例集合,则排序的损失(loss)函数为
即考虑每对正反例,若正例预测值小于反例,则记一个”罚分”,若相等,则记半个”罚分”,因为学习器是预测正例的,所以理想的状态是,正例的最小预测值大于反例的最大预测值,$\ell_{rank}$对应的就是ROC曲线之上的面积;
若一个正例在ROC曲线上对应标记点坐标为(x,y),则x恰好是排序在其之前的反例所占的比例,即假正例率,因此有
ROC曲线与P-R曲线的区别
最主要的区别是ROC可以在样本不均衡的情况下做判断,而P-R曲线会有很大的影响,但是P-R曲线更加直观
2.3.4代价敏感错误率与代价曲线
不同哦该的错误造成的后果也不同,为不同类型错误所造成的不同损失,可为错误赋予非均等的代价(unqeual cost).
根据领域知识得到一个代价矩阵(cost matrix),其中$cost_{ij}$表示第i类被预测为j类,一般来说$cost_{ii}$为0
真实类别 | 预测类别 | |
第0类 | 第1类 | |
第0类 | 0 | $cost_{01}$ |
第1类 | $cost_{10}$ | 0 |
在非均等代价下,我们需要的不再是简单的最小化错误次数,而是最小化总体代价(total cost),将第0类作为正例,第1类作为反例,则代价敏感(cost-sensitive)的错误率为
在非均等代价下,ROC不能直接反应处学习器的期望总体代价,所以需要用代价曲线(cost curve)来达到目的,
横坐标为取值在[0,1]的正例概率代价
其中p为样例为正例的概率,纵坐标为取值为[0,1]的归一化代价
其中FPR为假正率,而FNR=1-TPR为假反例率
2.4 比较检验
统计假设检验(hypothesis test)为我们在学习器性能比较提供了重要的依据,默认以错误率作为性能度量,用$\epsilon$表示
2.4.1 假设检验
假设检验中的”假设”是对学习器泛化错误分布的某种判断或猜测,例”$\epsilon=\epsilon_0$”。在实际任务中,并不知道泛化错误率,只能知道其测试错误率$\hat{\epsilon}$,泛化错误率和测试错误率未必相同,但是两者接近的可能性较大,相差很远的可能性很小。因此可根据测试错误率推出泛化错误率的分布
假设泛化错误为$\epsilon$,测试错误率为$\hat{\epsilon}$,$\hat{\epsilon}$意味着如果有m个样本,则会有$\hat{\epsilon}\times m$个样本会被分错。
假设测试样本,有$m’$个样本被分错,则泛化错误率为$\epsilon$的学习器将$m’$个样本分错的概率为$\tbinom{m}{m’}\epsilon^{m’}(1-\epsilon)^{m-m’}$,因此可以估计出恰好将$\hat{\epsilon}\times m$个样本分错的概率为
对此求导,解$\frac{\partial P(\hat{\epsilon};\epsilon)}{\partial \epsilon}=0$得到$p(\hat{\epsilon};\epsilon)$在$\epsilon=\hat{\epsilon}$时最大,这符合二项分布(binomial)
使用二项检验(binomial test)来对『$\epsilon \leq \epsilon_0$』这样的假设进行验证
在$1-\alpha$的概率内所能得到的最大错误率为
其中$1-\alpha$反映了置信度(confidence),因为二项分布,随着p的变大,会向右偏,所以随着p的变大,会不满足条件,所以有个极值,就是需要得到这个最大值错误率,如果测试错误率小于这个最大错误率,则说明,在$1-\alpha$的置信度里,假设成立的,不能被拒绝,即认为在$1-\alpha$的置信度下,测试错误率为$\hat{\epsilon}$的学习器的泛化错误率不大于$\epsilon_0$。反之则需要拒绝
但是一般不止做一次留出法估计,或者其交叉验证中k取2的估计,会进行很多次训练/测试,所以会得到很多错误率,这时可以用t验证(t-test)。
假设得到了k个测试错误率$\hat{\epsilon_1},\hat{\epsilon_2},…,\hat{\epsilon_k}$,可以求的错误率$\mu$,方法$\sigma^2$为
考虑到k个测试错误率可以看做繁华错误率$\epsilon_0$的独立采样,则t统计量为
服从自由度为k-1的t分布
得到的$\tau_t$如果小于查表得到的t值,则接受原假设,否则拒绝原假设
2.4.2 交叉验证t检验
对于两个学习器A和B,使用k折交叉验证法得到的测试错误率分别为$\epsilon_1^A,\epsilon_2^A,…,\epsilon_k^A$和$\epsilon_1^B,\epsilon_2^B,…,\epsilon_k^B$,其中$\epsilon_i^A$和$\epsilon_i^B$是相同的第i折训练/测试集上得到的结果,则可用k折交叉验证”成对t验证”(paired t-tests)来进行比较。这里的思想为如果两个学习器的性能相同,则它们使用相同的训练/测试集得到的测试错误率应相同,即$\epsilon_i^A=\epsilon_i^B$
对于k折交叉验证产生的k对测试错误率,先对每对的测试错误率求差,得到$\Delta_i=\epsilon_i^A-\epsilon_i^B$,若两个学习器性能相同,则差值均值应为0,因此对$\Delta_1,\Delta_2,…,\Delta_k$来对”学习器A和学习器B性能相同”的假设进行t验证,计算出$\Delta$的均值$\mu$和方差$\sigma^2$,在显著度$\alpha$下,若
小于临界值$t_{\alpha/2,k-1}$则假设不能被拒绝,认为两个学习器的性能没有显著差异;否则则认为两个学习器有显著差异,且平均错误率较小的学习器性能更好,其中$t_{\alpha/2,k-1}$为自由度为k-1的t分布上尾部累积分布为$\alpha/2$的临界值
进行有效的假设验证的一个重要的前提是测试错误率均为泛化错误率的独立 采样。但是通常情况下由于样本有限,在使用交叉验证等实验估计时,不同轮次的训练集都有不定程度的重叠,这使得测试错误率实际上并不独立,会导致过高估计假设成立的概率,为缓解这一问题,可采用”5$\times$2交叉验证”法。
就是做5次2折交叉验证,在每次2折交叉验证之前水机将数据打乱,使得5次交叉验证中的数据划分不重复。对于学习器A和B,第i次2折交叉验证将产生两对测试错误率,对他们分别求差,得到1折的差值$\Delta_i^1$和2折的差值$\Delta_i^2$,为了缓解测试错误率的非独立性,我们仅计算第1次2折交叉验证的两个结果的平均值,$\mu=0.5(\Delta_1^1+\Delta_1^2)$,但对每次2折实验的结果都计算其方差$\sigma_i^2=(\Delta_i^1-\frac{\Delta_i^1+\Delta_i^2}{2})^2+ (\Delta_i^2-\frac{\Delta_i^1+\Delta_i^2}{2})^2$,变量
服从自由度为5的t分布,其双边检验的临界值$t_{\alpha/2.5}$当,$\alpha=0.05$时,为2.5706,$\alpha=0.1$时,为2.0150
2.4.3 McNemar检验
对于二类问题,使用留出法不仅可估计出学习器A和B的测试错误率,还能获得两个学习器分类结果的差别
表: 两学习器分类差别列联表
算法B | 算法A | |
正确 | 错误 | |
正确 | $e_{00}$ | $e_{01}$ |
错误 | $e_{10}$ | $e_{11}$ |
假设两个学习器性能相同,则应有$e_{01}=e_{10}$,那么$\left|e_{01}-e_{10}\right|$应当服从正态分布,McNemar检验考察变量
因为$e_{01}+e_{10}非常小,需要考虑连续性校正,所以分子中有-1$
服从自由度为1的$\mathcal{X}^2$分布,即标准正态分布变量的平方,盖顶显著度$\alpha$,当以上变量值小于临界值$\mathcal{X}^2$时,不能拒绝假设,认为两个学习器性能没有显著区别,否则拒绝原假设,认为两个学习器有限制差别,并且平均错误率小的那个学习器性能更好。
2.4.4 Friedman检验与Nemenyi后续检验
交叉验证T检验和McNemar检验都是在一个数据集上比较两个算法的的性能,但是很多情况下会在一组数据集上对多个算法进行比较,当有多个算法参与比较时,种方法是在每个数据集上分别列出两两比较的结果,而在亮亮比较上可以用前面的方法;另一种方法更为直接,使用基于算法排序的Friedman检验
假设用$D_1,D_2,D_3,D_4$四个数据集对算法A、B、C进行比较,首先使用留出法或交叉验证法得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋值1,2,…;若算法的测试性能相同,则平分序值。列如得到如下的算法比较序值表
数据集 | 算法A | 算法B | 算法C |
---|---|---|---|
$D_1$ | 1 | 2 | 3 |
$D_2$ | 1 | 2.5 | 2.5 |
$D_3$ | 1 | 2 | 3 |
$D_4$ | 1 | 2 | 3 |
平均序值 | 1 | 2.125 | 2.875 |
然后,使用Friedman检验来判断这些算法是否性能相同,若相同,则他们的平均序值应当相同,假设我们在N个数据集上比较k个算法,令$\mathcal{r}_i$表示第i个算法的平均序值,为了简化讨论,暂不考虑评分序值的情况,则$\mathcal{r}_i$的均值和方差分别为(k+1)/2和$(k^2-1)/12$.变量
在k和N都较大时,服从自由度为k-1的$\mathcal{X}^2$分布
然而上述的”原始Friedman检验”过于保守,因为原始检验需要k较大(例如k>30),现在通常使用变量
$\tau_F$服从自由度为k-1和(k-1)(N-1)的F分布
若”所有算法的性能相同”这个假设被拒绝,则说明算法的性能显著不同,这是需要进行”后续检验”(post-hoc test)来进一步区分各算法,常用的有Nemenyi后续检验
Nemenyi检验计算出平均序值差别的临界值域
其中qa为Tukey分布的临界值,可以通过算法个数k和$\alpha$这两个参数查表得到,若两个算法的平均序值之差超过了临界值域CD,则以相同的置信度拒绝”两个算法性能相同”这一假设
根据这一系列内容,可以得到上述例子的关系
求出$\tau_F$的值为24.429,查F检验的表,得到$\alpha=0.05$临界值为5.143,因为大于临界值,所以拒绝原假设,然后使用”后续检验”,根据$\alpha=0.05$和k=3得到CD值为1.657,根据平均序值的差,可以得到A与B、B与C这两对算法没有显著区别,但是A与C是有显著区别的
2.5偏差和方差
除了估计其泛化性能之外,还需要了解具有这样的泛化性能的本质,所以”偏差-方差分解”(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具
偏差-方差分解试图对学习算法的期望泛化错误率进行拆解。对于测试样本x,令$y_D$为数据集中的标记,y为x的真实标记(因为有噪声,所以有可能$y_D\neq y$)$f(x;D)$为训练集D上学的模型f在x上的预测输出,以回归任务为例,
学习算法的期望预测为
使用样本数相同的不同训练集产生的方差为
噪声为
期望输出与实际标记的差别称为偏差(bias),即
为了方便讨论,假定噪声期望为0,即$\epsilon^2=\mathbb{E}_D\left[(y_D-y)^2\right]=0$,通过简单的多项式展开合并,可以对算法的期望泛化误差进行分解
也就是说泛化误差可分解为偏差、方差和噪声之和
偏差度量了学习算法预测与真实结果的偏离程度,刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法能达到的期望泛化误差的下限,即刻画了学习问题本身的难度。
偏差-方差分解说明了泛化性能是由学习算法的能力、数据的充分性及学习任务本身的难度所共同决定的。为了获得好的泛化性能,则需要使偏差较小,即能够充分拟合数据,并且使得方差较小,即使得数据扰动影响小
一般而言,偏差和方差是有冲突的,称之为偏差-方差窘境(bias-variance dilemma)
一个训练模型主要有三个阶段,当训练不足时,因为学习器的拟合能力不强,所以训练数据的扰动不足以影响学习器,所以偏差主导泛化错误率,当训练的加深,学习器的拟合能力加强,训练数据的扰动渐渐被学习器所获取,方差主导泛化错误率,但随之逐步加深,学习器的拟合能力过强,导致一些数据局部性的特性被学习器学习到,导致发生过拟合,即把数据独有的特性当成了共同的特性。
习题
- 数据集包含1000个样本,其中正例和反例都是500个,用留出法获取70%的训练数据和30%的测试数据,共有多少种划分方式?
留出法就是等比获取,也就是说在正例和反例都随机获取150个作为测试数据,不管训练数据,因为测试数据定好了,训练数据就是唯一得了。所以是$C_{150}^{500} C_{150}^{500}=\dbinom{500}{150}^2$个方式
- 训练集包含100个样本,其中正反例各一半,假定学习算法所产生的模型是将新样本预测为训练样本较多的类别(训练样本数相同时进行随机猜测),试给出10折交叉验证法和留一法分别对错误率进行估计所得的结果
k折交叉验证,因为分出的数据是尽量保持和原本数据集的分布一致性,所以都是正反例各一半,所以错误率是50%,
留一法,因为是选择一个数据样本当做测试集,所以根据训练样本反而因为测试集的那个样本的缺失,导致学习算法预测的是与测试集相反的结果,所以错误率是100%
- 若学习器A的F1值比学习器B高,则A的BEP是否也比B高?
BEP是把训练得到的正例可能性将真实数据从高到低进行排序,在根据各个阀值进行阶段,得到的曲线中找到P和R一样的点。
F1则是根据混淆矩阵来的到P和R进行计算得到的。
根据https://blog.csdn.net/icefire_tyh/article/details/52065867 提供的例子可以看出BEP和F1并不想对等
真实数据排序 | 1/+ | 2/+ | 3/+ | 4/+ | 5/+ | 6/- | 7/- | 8/- | 9/- | 10/- |
---|---|---|---|---|---|---|---|---|---|---|
学习器A的排序 | 1/+ | 2/+ | 3/+ | 4/+ | 6/- | 5/- | 7/- | 8/- | 9/- | 10/- |
学习器B的排序 | 1/+ | 2/+ | 3/+ | 4/+ | 6/+ | 5/- | 7/- | 8/- | 9/- | 10/- |
可以看出因为根据学习器A和学习器B的排序,将真实数据从高到低进行排序,得到的顺序是一致的,所以BEP一致,但是按照F1计算,则可以得到
学习器A和B的混淆矩阵
学习器A | 学习器B | ||
4 | 1 | 4 | 1 |
0 | 5 | 1 | 4 |
学习器A和B的P、R、F1值
学习器A | 学习器B | |
P | 1 | 0.8 |
R | 0.8 | 0.8 |
F1 | 0.88888889 | 0.8 |
- 试述正例率(TPR),假正例率(FPR),和查准率(P)、查全率(R)之间联系
TPR和R是一样的,都是预测的正确正例在所有真实正例的比例。
FPR是预测是正例但是实际是反例在所有真实反例的比例。P是预测正确的正例在所有预测为正例的比例,并没有实际关系
- 试证明$AUC = 1 - \ell_{rank}$
首先解析AUC公式,AUC公式是根据求线下的面积得到的。
根据南瓜书(https://datawhalechina.github.io/pumpkin-book/#/chapter2/chapter2 )得知,书上的图为一个特例,即根据预测度进行排序后,根据每一个样本点是正例或者反例从而垂直或者水平前进;如果两个点都在阀值上,并且是一个正例和反例时,那则直线应该是斜方向前进的。不过无论是那种情况,都可以使用 $(上底+下底)高 \cfrac{1}{2}$来获取阀值间隔内的面积。
$\ell_{rank}=\frac{1}{m^+m^-}\sum_{x^+\in D^+}\sum_{x^-\in D^-}(I(f(x^+)<f(x^-))+ \frac{1}{2}I(f(x^+)=f(x^-)))$
根据南瓜书提供的图例,可以得到3个情况
绿线为垂直向上,表示1个正例被正确判断,在y轴上的投影为”$\frac{1}{m^+}$”
红线为水平向右,表示一个反例被错误判断成了正例,在x上的投影为”$\frac{1}{m^-}$”
蓝线为朝着右上方向的斜线,表示有a个正例和b个反例被判断成了正例,则在x轴的投影为”$b\frac{1}{m^-}$”,在y轴上的投影为”$a\frac{1}{m^+}$”
其中图像的每条折线的预测值相同,并且从0点开始逐渐较小。
将公式拆分开来,
$\sum_{x^+ \in D^+}$可以看做对所有正例的一个遍历,分解成
for $x_i^+ \;in \;D^+: \\
\qquad \frac{1}{m^+m^-}\sum_{x^-\in D^-}(I(f(x^+)<f(x^-))+ \frac{1}{2}I(f(x^+)=f(x^-)))\qquad 记为公式S$
其中$x_i^+$对应着每条绿线或者蓝线线段,遍历$x_i^+$可以看做遍历所有绿线和蓝线,S求出对应的绿线或蓝线和y轴组成的面积。
详细内容,先看绿线
对于每条绿线线段,因为是单一的绿线,所以没有预测点既有正例和反例的情况,所以去除后半段,只看反例的预测点大于正例的预测点的情况。
所以S简化为
其中每一个空格的长度为$\frac{1}{m^-}$高度为$\frac{1}{m^+}$,$\sum_{x^-\in D^-}I(f(x_i^+)<f(x^-))$为预测点大于正例的反例的个数,对应的就是空格的数量,乘以高和长,得到绿线左面的面积。
对于蓝线,公式S展开为
有两个部分,其中前面的一部分就是蓝线左边的空格的面积,而右边的为自身的格子的左边的面积的,即为自身格子的左边的三角形面积。
因为总面积为1,所以可以得到$AUC = 1 - \ell_{rank}$
- 试述错误率和ROC曲线的关系
错误率为$\frac{FP+FN}{FP+FN+TP+TN}$
ROC有两个值为TPR和FPR,分别为$\frac{TP}{TP+FN}$,$\frac{FP}{FP+TN}$
每个点对应着一对TPR和FPR。
因为$m^+ = TP+FN,\;m^-=TN+FP$,所以用来代替,得到
所以每个点可以用错误率来代替。错误率最小的点为FPR为0,TPR为1的时候
代价敏感的错误率为$\frac{cost_{01}\times FN + cost_{10}\times FP}{m}$
所以代价敏感的错误率为
- 证明任意一条ROC曲线都有一条对应代价曲线与之对应,反之亦然
以后补充
- Min—max规范化和z-score规范化两种常见的规范化方式。这两者有何优缺点。
令x为规范化前的取值,x’为规范化后的取值,其中$x_{min},x_{max}$为规范化前的最小值和最大值,$x_{min}’,x_{max}’$为规范化后的最小和最大取值,$\bar{x},\sigma_x$为规范化前的均值和标准差,则:
Min-max的规范化公式为
z-score的规范化公式为
Min-max规范化的优势是,每次新的数据如果在$x_{min}$ $x_{max}$的范围内,则不需要重新计算其他值,并且得到规范化的值都是大于0的;但是如果有极小(大)值,会有影响
z-score的优势是,极值对于规范化的影响不大,但是每次有新值时,都需要重新计算$\bar{x}$ $\sigma_x$
- 试述$\mathcal{X}^2$检验过程
适用于定类和定类的检验。
以后补充
- 试述Friedman检验中使用的两个方程区别
即
和的区别
只知道$\tau_{\mathcal{X}^2}$需要满足k较大(k>30)的情况下,在k较小的情况下,会倾向于认为无显著区别。但是$\tau_F$并没有这个影响
详细的以后补充