本章内容是在阅读《机器学习》的过程中记录的学习笔记,这本书是机器学习领域的经典书籍,作者是周志华老师。
中文名 | 英文名 | 解释 |
---|---|---|
错误率 | error rate | 我们把分类错误的样本数占总样本数称为错误率 |
精度 | accuracy | 精确度=1-错误率 |
误差 | error | 学习器的实际预测输出与样本的真实输出之间的差异 |
训练误差/经验误差 | trainingerror/empirical error | 学习器在训练集上的误差 |
泛化误差 | generalization error | 学习器在新样本上的误差 |
由于我们并不知道新的样本是什么样的,所以我们能做的是尽量减小经验误差。
过拟合
当学习器把训练样本学得“太好”了的时候,很可能把训练样本自身具有的特点当成了所有样本都具有的特点,,这样就会导致泛化性能下降。这种现象被称为过拟合。相反的,称为欠拟合,是指学习器对训练样本的一般性能都尚未学好。
通常我们需要一个测试集来测试学习器对新样本的判断能力,,然后以测试误差(testing error)作为泛化误差的近似。测试集要与训练集互斥。
设我们有数据集D={(x1,y1),(x2,y2),…,(xm,ym)},将数据集分为训练集S和测试集T。以下介绍几种常用的划分方法。
留出法直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。一般情况下,将大约2/3~4/5的样本用于训练,剩余用于测试。
需要注意的是:
交叉验证法(cross validation)先将D划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性。然后,每次用k-1个子集的并集作为训练集,剩余的子集作为测试集。为减小因样本不同引入的差别,常需要进行p次划分。
如果每个子集只包含一个样例,则得到了交叉验证法的一个特例,留一法(Leave-One-Out,LOO)
给定包含m个样本的数据集D,我们对它进行采样产生数据集D’:每次从D中随机挑选一个样本拷贝到D‘中,重复m次,得到了含有m个样本的D’。显然有些样本会多次出现,而有些样本则一次都不出现。
通过自助采样,数据集D中约有36.8%的样本未出现在D’中。于是我们将D‘作为训练集,D\D’作为测试集。
由于自助法改变了初始数据集的分布,这会引入偏差,故初始数据足够时,留出法和交叉法更常用。
定义:衡量模型泛化能力的评判标准,叫做性能度量(performance measure)
要评估学习器f的性能,就是要把学习器的预测结果f(x)与真实标记y进行比较。回归任务常用的性能度量是“均方误差”(mean squared error),公式如下
E ( f ; D ) = 1 m ∑ ( f ( x i ) − y i ) 2 E(f;D) =\frac{1}{m}\sum(f(\boldsymbol{x_i})-y_i)^2 E(f;D)=m1∑(f(xi)−yi)2
更一般地,对于数据分布 D D D的概率密度函数 p ( ⋅ ) p(\cdot) p(⋅),均方误差可描述为
E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f;D)=\int_{x \sim D}(f(\boldsymbol{x})-y)^2p(x)dx E(f;D)=∫x∼D(f(x)−y)2p(x)dx
错误率是分类错误的样本占样本总数的比例,分类正确的样本占样本总数的比例。
错误率可以定义为:
E ( f ; D ) = 1 m ∑ ∥ ( f ( x i ) ≠ y i ) E(f;D) =\frac{1}{m}\sum \rVert (f(\boldsymbol{x_i}) \neq y_i) E(f;D)=m1∑∥(f(xi)=yi)
精确度定义为:
a c c ( f ; D ) = 1 m ∑ ∥ ( f ( x i ) = y i ) = 1 − E ( f ; D ) acc(f;D) =\frac{1}{m}\sum \rVert (f(\boldsymbol{x_i}) = y_i) = 1 -E(f;D) acc(f;D)=m1∑∥(f(xi)=yi)=1−E(f;D)
更一般地,对于数据分布D和概率密度函数:
E ( f ; D ) = ∫ x ∼ D ∥ ( f ( x ) ≠ y ) p ( x ) d x E(f;D)=\int_{x \sim D} \rVert(f(\boldsymbol{x}) \neq y)p(\boldsymbol{x})d\boldsymbol{x} E(f;D)=∫x∼D∥(f(x)=y)p(x)dx
a c c ( f ; D ) = ∫ x ∼ D ∥ ( f ( x ) = y ) p ( x ) d x = 1 − E ( f ; D ) acc(f;D)=\int_{\boldsymbol{x} \sim D}\rVert(f(\boldsymbol{x}) = y)p(\boldsymbol{x})d\boldsymbol{x}=1-E(f;D) acc(f;D)=∫x∼D∥(f(x)=y)p(x)dx=1−E(f;D)
注: ∥ ( f ( x ) = y ) \rVert(f(\boldsymbol{x})=y) ∥(f(x)=y)表示当 f ( x ) = y f(\boldsymbol{x})=y f(x)=y时,取1,否则取0。由于Latex无法输入大写的罗马字母,故用 ∥ \rVert ∥代替。
查准率 P P P与查全率 R R R分别定义为:
P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
P、R可以构成P-R曲线
P-R曲线可用于比较学习器的优劣,一般利用平衡点来比较,平衡点是P=R的点
F1
F 1 F1 F1是基于查准率与查全率的调和平均,定义如下:
1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) \frac{1}{F1}=\frac{1}{2} \cdot(\frac{1}{P}+\frac{1}{R}) F11=21⋅(P1+R1)
得
F 1 = 2 × P × R 样 例 总 数 + T P − T N F1=\frac{2\times P \times R}{样例总数+TP-TN} F1=样例总数+TP−TN2×P×R
F β F_\beta Fβ是加权调和平均,定义如下:
1 F β = 1 1 + β 2 ⋅ ( 1 P + β 2 R ) \frac{1}{F_\beta}=\frac{1}{1+\beta^2} \cdot(\frac{1}{P}+\frac{\beta^2}{R}) Fβ1=1+β21⋅(P1+Rβ2)
得:
F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_\beta=\frac{(1+\beta^2)\times P\times R}{(\beta^2 \times P)+R} Fβ=(β2×P)+R(1+β2)×P×R
其中 β > 0 \beta>0 β>0度量了查全率对查准率的相对重要性, β > 1 \beta>1 β>1查全率有更大影响, β < 1 \beta<1 β<1查准率有更大影响。
ROC曲线与P-R曲线类似,不过ROC的纵坐标是真正确率(True Positive Rate),横坐标是假正确率(False Positive Rate),两者分别定义为
T P R = T P T P + F N TPR = \frac {TP}{TP+FN} TPR=TP+FNTP
T P R = F P T N + F P TPR = \frac {FP}{TN+FP} TPR=TN+FPFP
ROC曲线下的面积为AUG
统计假设检验(hypothesis test)为我们进行学习器性能比较提供了重要依据。基于假设检验结果我们可以推断出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计学意义上优于B,以及这个结论的把握有多大。
“偏差-方差分解”(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具.
偏差
偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力.
b i a s 2 ( x ) = ( f ˉ ( x ) − y ) 2 bias^2(\boldsymbol{x})=(\bar f(\boldsymbol{x})-y)^2 bias2(x)=(fˉ(x)−y)2
方差
方差度量了同样大小的训练集变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响.
v a r ( x ) = E D [ ( f ( x ; D ) − f ˉ ( x ) ) 2 ] var(\boldsymbol{x})=\mathbb{E}_D[(f(\boldsymbol{x};D)-\bar f(\boldsymbol{x}))^2] var(x)=ED[(f(x;D)−fˉ(x))2]
噪声
噪声表达了在当前学习任务上任何学习算法所能达到的期望泛化误差下界,即刻画了学习问题本身的难度.
ε 2 = E D [ ( y D − y ) 2 ] \varepsilon^2=\mathbb{E}_D[(y_D-y)^2] ε2=ED[(yD−y)2]
泛化误差
E ( f ; D ) = b i a s 2 ( x ) + v a r ( x ) + ε 2 E(f;D)=bias^2(\boldsymbol{x})+var(\boldsymbol{x})+\varepsilon^2 E(f;D)=bias2(x)+var(x)+ε2