2.1 经验误差与过拟合
- 分类错误的样本数占样本总数的比例称为“错误率(error rate)”,即m个样本中有a个样本分类错误,则错误率为E=a/mE = a/mE=a/m。
- 1−a/m1-a/m1−a/m则称为“精度(accuracy)”。
- 学习器的实际预测输出与样本的真实输出之间的差异称为“误差(error)”或“误差期望”。
- 学习器在训练集上的误差称为“训练误差(training error)”或“经验误差(empirical error)”,在新样本上的误差称为“泛化误差(generalization error)”。
- “过拟合(overfitting)”是指学习器把训练样本学习学得太好了,把训练样本自身的一些特点当做所有潜在样本都会具有的一般性质,这样会导致泛化性能下降。
- 相对的“欠拟合(underfitting)”是指对训练样本的一般性质尚未学好。欠拟合可以通过增加训练轮数或在决策树中扩展分支等解决。
- P类问题:存在多项式时间算法的问题,是NP问题的子集。
- NP类问题:对于一类问题,我们可能没有一个已知的快速的方法得到问题的答案,但是如果给我们一个确切答案,我们能够在多项式的时间内验证这个确切答案到底是不是我们已知问题的答案。
2.2 评估方法
- 可以通过实验测试来对学习器的泛化误差进行评估并进而做出选择,因此需要一个测试集来测试学习器对新样本的判别能力,然后以测试误差作为泛化误差的近似。
- 测试集应该与训练集尽量互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。
2.2.1 留出法
- 直接将数据集D划分为两个互斥的集合,一个作为训练集S,一个作为测试集T,即D=S∪T,S∩T=∅D=S \cup T,S \cap T= \emptysetD=S∪T,S∩T=∅
- 在分类任务中要保持数据分布的一致性,保留类别比例的的采样方式称为“分层采样(stratified sampling)”,如D中含有500个正例、500个反例,则S和T中应该包含同等比例的正例和反例。
2.2.2 交叉验证法
- 将数据集D分成k个大小相似的互斥子集,即D=D1∪D2∪D3∪...Dk,Di∩Dj=∅(i≠j)D=D_1 \cup D_2\cup D_3\cup ... D_k,D_i\cap D_j= \emptyset(i\neq j)D=D1∪D2∪D3∪...Dk,Di∩Dj=∅(i=j),每次用k-1个子集的并集作为训练集,余下的子集作为测试集,这样可以获取k组训练/测试集,从而可以进行k次训练和测试,最终返回的是k个测试结果的均值。
- 该方法稳定性和保真性很大程度上取决于k的取值,因此亦称为“k倍交叉验证”,k常取10。
- 与留出法相似,将数据集D划分为k个子集同样有多种划分方式,用p种不同的划分方式进行K折交叉验证就会进行p*k次训练/测试。
2.2.3 自助法
- 对包含m个样本的数据集D,对D进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放入初始数据集D中,使得该样本在下次采样时仍有可能被采到。该过程重复m次后,得到包含m个样本的数据集D’。
- 显然D中有一些样本会在D’中重复出现,一些样本不会出现。于是估计样本在m次采样中都不被采到的概率是
limm→0(1−1m)→1e≈0.368\lim_{m \to 0} (1-\frac 1 m)\to \frac 1 e \approx0.368limm→0(1−m1)→e1≈0.368
于是可以将D’作为训练集,D-D’作为测试集。 - 实际评估的模型与期望估计的模型都使用m个训练样本,而我们仍有1/3的没在训练集中出现的样本用于测试,这样的测试结果亦称为“包外估计(out-of-bag estimate)"。
- 自助法适用于数据集较小、难以有效划分训练训练集和测试集,还能从初始数据集中产生多个不用的训练集。但是自助法产生的数据集改变了初始数据集的分布,会引入估计偏差。
2.2.4 调参 与 最终模型
2.3 性能度量
- 衡量模型泛化能力的评价标准,称之为“性能度量(performance measure)”。
- 回归任务最常用的性能度量是“均方误差(mean squared error)”
E(f;D)=1m∑i=1m(f(xi)−yi)2E(f;D)= \frac 1 m\sum_{i=1}^m(f(x_i)-y_i)^2E(f;D)=m1i=1∑m(f(xi)−yi)2 - 对于数据分布σ\sigmaσ和概率分布函数p()p()p(),均方差可描述为
E(f;D)=∫x∼σ(f(x)−y)2p(x)dx E(f;D)= \int_{x\sim\sigma} (f(x)-y)^2p(x) dx E(f;D)=∫x∼σ(f(x)−y)2p(x)dx
2.3.1错误率与精度
- 对样本集D分类错误率的定义为
E(f;D)=1m∑i=1mⅡ(f(xi)≠yi)E(f;D)= \frac 1 m\sum_{i=1}^mⅡ(f(x_i)\neq y_i)E(f;D)=m1i=1∑mⅡ(f(xi)=yi) - 精度定义为:
E(f;D)=1m∑i=1mⅡ(f(xi)=yi)=1−E(f;D)E(f;D)= \frac 1 m\sum_{i=1}^mⅡ(f(x_i)= y_i)=1-E(f;D)E(f;D)=m1i=1∑mⅡ(f(xi)=yi)=1−E(f;D)
2.3.2 查准率、查全率与F1
- 真正例(true positive) TP:查出来是正例,实际上是正例所以是对的;假正例(false positive)FP:查出来是正例,实际上是反例所以是错的(之后的以此类推);真反例(true negative) TN;假反例(false negative) FN。
TP+FP+TN+FN=样例总数TP+FP+TN+FN=样例总数TP+FP+TN+FN=样例总数 - 查准率 P:查出的真正例与所有查出的正例(这个正例不一定是真的)的比。P=TPTP+FPP= \frac {TP} {TP+FP}P=TP+FPTP
- 查全率 R:查出的真正例与所有正例的比。R=TPTP+FNR= \frac {TP} {TP+FN}R=TP+FNTP
- 以查准率为纵轴、以查全率为横轴作图得到P-R曲线,表示两者关系。
若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。如图中,A性能优于C,B优于C。
当发生交叉时,P-R曲线下的面积越大,性能越好。 - 平衡点(Break-Even Point,简称BEP),是P=R是的取值。如图基于BEP的比较,A优于B。
- F1是基于查准率和查全率的调和平均值。
1F1=12(1P+1R)\frac 1 {F1}=\frac 1 2(\frac 1 P+\frac 1 R)F11=21(P1+R1)
FβF_\betaFβ是加权调和平均。
1Fβ=11+β2(1P+β2R)\frac 1 {F_\beta}=\frac 1 {1+\beta^2}(\frac 1 P+\frac {\beta^2} R)Fβ1=1+β21(P1+Rβ2)
F1度量的一般形式——FβF_\betaFβ=查准率/查全率.
Fβ=(1+β2)∗P∗R(β2∗P)+RF_\beta= \frac {(1+\beta^2)*P*R} {(\beta^2*P)+R}Fβ=(β2∗P)+R(1+β2)∗P∗R
其中β>0\beta>0β>0度量了查全率对查准率的相对重要性。β=1\beta=1β=1时退化为标准的F1;β>1\beta>1β>1时全查率影响更大;β<1\beta<1β<1查准率影响更大。
2.3.3 ROC与AUC
- 很多学习器是为测试验本产生一个实值或概率预测,将该值与一个分类阈值(threshold)进行比较,若大于阈值则分为正类,否则为反类。
- 根据该值可以将测试样本进行排序,“最可能”是正例的排在最前面,“最不可能”是正例的排在最后面。于是就根据一个“截断点(cut point)”将样本分为两部分,前半部分是正例,后半部分是反例。
- ROC(受试者工作特征曲线)纵轴为“真正例率 TPR”,横轴为“假正例率 FPR”。
TPR=TPTP+FNTPR= \frac {TP} {TP+FN}TPR=TP+FNTP (分母为所有正例)与R相同:在所有正例中找到正例并判断正确的比率;
FPR=FPTN+FPFPR= \frac {FP} {TN+FP}FPR=TN+FPFP (分母为所有反例):在所有反例中把样本作为正例判断错误的比率。 - 比较ROC曲线的优劣与P-R曲线相同,ROC曲线下的面积为AUC(Area Under ROC Curve)
2.3.4 代价敏感错误率与代价曲线
- 非均等代价:为权衡不同类型错误所造成的的不同损失,而为错误赋予的评价标准。
- 代价矩阵:costijcost_{ij}costij表示第i类样本预测称为第j类样本的代价。
- 一般来说,costii=0cost_{ii}=0costii=0,;若将第i类判别为第j类所造成的损失更大,则costij>costji=0cost_{ij}>cost_{ji}=0costij>costji=0;损失程度越大,两值差别越大。重要的是代价的比值而非绝对值,如costij:costji=5:1cost_{ij}:cost_{ji}=5:1costij:costji=5:1与costij:costji=50:10cost_{ij}:cost_{ji}=50:10costij:costji=50:10效果相当。
2.4 比较经验
2.4.1假设检验
- 假设检验中的“假设”是对学习器泛化错误率分布的某种判断或猜想