误分类样本占总样本的比例
正确分类样本数与总样本数的比;
等于1减去错误率
第一行表示真实的正例,第二行表示真实的反例;第一列表示模型预测的正例,第二列表示模型预测的反例。
真实正例,且被模型判为正例。混淆矩阵的(1,1)
元素。
真实正例,但被模型误判为反例。混淆矩阵的(1,2)
元素。
真实反例,但被模型误判为正例。混淆矩阵的(2,1)
元素。
真实反例,且被模型判为反例。混淆矩阵的(2,2)
元素。
以信息检索为例,就是“检索出的信息中有多少比例是用户真正感兴趣的”,或者说检索出的正例中,有多少是真正的正例。
P = T P T P + F P P = \frac{TP}{TP + FP} P=TP+FPTP
当有多个混淆矩阵,要综合他们的结果,可以计算出各自的查准率然后平均,得到宏查准率。
macro- P = 1 n ∑ i = 1 n P i \text { macro- } P=\frac{1}{n} \sum_{i=1}^{n} P_{i} macro- P=n1i=1∑nPi
当有多个混淆矩阵,要综合他们的结果,可以计算出平均混淆矩阵,再得到微查准率。
micro- P = T P ‾ T P ‾ + F P ‾ \text { micro- } P=\frac{\overline{T P}}{\overline{T P}+\overline{F P}} micro- P=TP+FPTP
以信息检索为例,就是“用户感兴趣的信息中有多少被检索出来了”,或者说真正的正例中,被模型检测出来的有多大比例。
R = T P T P + F N R = \frac{TP}{TP + FN} R=TP+FNTP
当有多个混淆矩阵,要综合他们的结果,可以计算出各自的查全率然后平均,得到宏查全率。
macro- R = 1 n ∑ i = 1 n R i \text { macro- } R=\frac{1}{n} \sum_{i=1}^{n} R_{i} macro- R=n1i=1∑nRi
当有多个混淆矩阵,要综合他们的结果,可以计算出平均混淆矩阵,再得到微查全率。
micro − R = T P ‾ T P ‾ + F N ‾ \operatorname{micro}-R=\frac{\overline{T P}}{\overline{T P}+\overline{F N}} micro−R=TP+FNTP
综合查准率与查全率进行的性能评估(performance measure)
F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_{\beta}=\frac{\left(1+\beta^{2}\right) \times P \times R}{\left(\beta^{2} \times P\right)+R} Fβ=(β2×P)+R(1+β2)×P×R
其中 β > 0 \beta > 0 β>0,表示了查全率相对于查准率的相对重要性。当 β < 1 \beta \lt 1 β<1表示查准率更加重要,当 β > 1 \beta \gt 1 β>1表示查全率更加重要。
当 β = 1 \beta = 1 β=1,查准率与查全率同样重要,这时 F β F_\beta Fβ变为 F 1 F_1 F1。
F 1 = 2 × P × R P + R = 2 × T P 样例总数 + T P − T N F 1=\frac{2 \times P \times R}{P+R}=\frac{2 \times T P}{\text { 样例总数 }+T P-T N} F1=P+R2×P×R= 样例总数 +TP−TN2×TP
实际是查准率和查全率的调和平均值:
1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) \frac{1}{F 1}=\frac{1}{2} \cdot\left(\frac{1}{P}+\frac{1}{R}\right) F11=21⋅(P1+R1)
当有多个混淆矩阵,要综合他们的结果,可以计算出各自的查准率和查全率然后,再计算出宏查准率和宏查全率,最后得到宏 F 1 F_1 F1。
macro- F 1 = 2 × macro- P × macro − R macro- P + macro- R \text { macro- } F 1=\frac{2 \times \text { macro- } P \times \text { macro }-R}{\text { macro- } P+\text { macro- } R} macro- F1= macro- P+ macro- R2× macro- P× macro −R
当有多个混淆矩阵,要综合他们的结果,可以计算出平均混淆矩阵,再计算出微查准率和微查全率,最后得到微 F 1 F_1 F1。
micro- F 1 = 2 × micro − P × micro- R micro- P + micro − R \text { micro- } F 1=\frac{2 \times \operatorname{micro}-P \times \text { micro- } R}{\text { micro- } P+\operatorname{micro}-R} micro- F1= micro- P+micro−R2×micro−P× micro- R
衡量模型的性能,横坐标事假正例率(False Positive Rate,FPR),即被误判为正例的占真实反例的比例:
T P R = T P T P + F N \mathrm{TPR}=\frac{T P}{T P+F N} TPR=TP+FNTP
纵坐标是真正例率(True Positive Rate),即查准率:
F P R = F P T N + F P \mathrm{FPR}=\frac{F P}{T N+F P} FPR=TN+FPFP
ROC曲线下的面积,最大是1(理想情况)。
模型/学习器在训练集上的误差;
所谓“经验”是对于真实误差的估计。
模型/学习器在测试集上的误差。
在训练集上可以得到很小的误差,即经验误差小,但范化误差大,模型学习了很多训练集本身的特异性的规律。
只要相信“ P ≠ N P P\neq NP P=NP”那么必然存在过拟合问题,过拟合只能缓解不能消除。
与过拟合
相反,没有学习到训练集上本质的规律,不能够很好地进行分类。
对模型/学习器的泛化错误率进行分解。最终可以得到:
E ( f ; D ) = bias 2 ( x ) + var ( x ) + ε 2 E(f ; D)=\text { bias }^{2}(\boldsymbol{x})+\operatorname{var}(\boldsymbol{x})+\varepsilon^{2} E(f;D)= bias 2(x)+var(x)+ε2
其中第一项表示偏差 bias 2 ( x ) = ( f ˉ ( x ) − y ) 2 \operatorname{bias}^{2}(\boldsymbol{x})=(\bar{f}(\boldsymbol{x})-y)^{2} bias2(x)=(fˉ(x)−y)2,度量了模型期望预测与真值的偏离程度,刻画了模型本身的拟合能力;第二项表示方差 var ( x ) = E D [ ( f ( x ; D ) − f ˉ ( x ) ) 2 ] \operatorname{var}(\boldsymbol{x})=\mathbb{E}_{D}\left[(f(\boldsymbol{x} ; D)-\bar{f}(\boldsymbol{x}))^{2}\right] var(x)=ED[(f(x;D)−fˉ(x))2],度量了同样大小,不同数据集变动造成的学习性能的变化(不稳定度),刻画了对于数据扰动的影响;第三项表示噪声 ε 2 = E D [ ( y D − y ) 2 ] \varepsilon^{2}=\mathbb{E}_{D}\left[\left(y_{D}-y\right)^{2}\right] ε2=ED[(yD−y)2],是由于数据本身不可避免相对于理想的分布的噪声,也是任何模型能够达到的期望泛化误差的下界,刻画了学习问题本身的难度。
因此泛化误差是由模型的学习能力、数据的充分性、学习任务本身的难度共同决定。
所谓模型选择,就是采取什么算法/假设函数,设置什么参数/超参数。
直接将数据集划分为训练和测试集,两个集合互斥。
单次留出法往往不够可靠,可能产生意想不到的bias,因此可以多次随机shuffle,取平均,同时也能得出评估结果的标准差。
通常将大约2/3~4/5的样本作为训练集。(见bias/variance tradeoff
)
保留类别比例的采样。
如果测试集过小,测试结果/评估结果方差(variance)较大;
如果训练集过小,训练模型本身可能导致偏差(bias)较大。
将数据集划分为k个等份,依次将其中一个作为测试集,剩余k-1个作为训练集,将得到的测试结果(一共k次)平均,即为最终的评估结果。由于在划分数据集时仍然存在随机性,因此可以随机做几次k折交叉验证,再对多次的k折交叉验证平均,例如,10次10折交叉验证。
k一般最常用的是10,此外也常用5、20。
当k折交叉验证中的k等于样本总数时,每个划分后的集合只包含一个样本,称为留一交叉验证。
关键在于采用了自助取样法(bootstrap sampling),即从原始数据集中有放回取样出一个与原始数据集样本容量相同的数据集。假设原数据集有m个样本,则某个样本不被取出的概率为 ( 1 − 1 m ) m \left(1-\frac{1}{m}\right)^{m} (1−m1)m,当数据集足够大时:
lim m ↦ ∞ ( 1 − 1 m ) m ↦ 1 e ≈ 0.368 \lim _{m \mapsto \infty}\left(1-\frac{1}{m}\right)^{m} \mapsto \frac{1}{e} \approx 0.368 m↦∞lim(1−m1)m↦e1≈0.368
所以大约1/3的样本没有被取到(因此也被称为“包外估计”,out-of-bag estimate),从而可以用通过自主取样法得到的数据集作为训练集,原始数据集作为测试集。
但是自助法这个过程中自然的引入了偏差bias,因此这时其缺点。
没错,就是所谓的调参。参数一般分为两种,一种是模型本身的参数,即需要模型通过学习不断修正获得的,往往数量比较多;另一种称为“超参数”其实是认为选择的关于模型/算法的参数,一般不会太多。