偏差与方差
设测试样本为 $\boldsymbol x$,$y_D$为$\bf x$在数据集中的标签,$y$为$\boldsymbol x$的真实标签,$f$为训练集$D$上学习得到的模型,$f({\boldsymbol x};D)$为$f$在$\boldsymbol x$上的预测输出。
期望预测
$$\overline{f}({\boldsymbol x})=\mathbb{E}_{D}[f({\boldsymbol x} ; D)]$$
方差
使用样本数目相同的不同训练集产生的方差:
$$\operatorname{var}(\boldsymbol{x})=\mathbb{E}_{D}\left[(f(\boldsymbol{x} ; D)-\overline{f}(\boldsymbol{x}))^{2}\right]$$
噪声
$$\varepsilon^{2}=\mathbb{E}_{D}\left[\left(y_{D}-y\right)^{2}\right]$$
偏差
期望输出与真是标签的差别为偏差:
$$\operatorname{bias}^{2}(\boldsymbol{x})=(\overline{f}(\boldsymbol{x})-y)^{2}$$
期望泛化误差分解
期望泛化误差分解,假定噪声期望为0,即$\mathbb{E}_{D}\left[y_{D}-y\right]=0$:
$$
E(f ; D)=\operatorname{bias}^{2}(\boldsymbol{x})+\operatorname{var}(\boldsymbol{x})+\varepsilon^{2}
$$
泛化误差 = 偏差 + 方差 + 噪声
- 偏差度量了算法的期望预测与真是结果的偏离程度,刻画了算法本身的拟合能力。
- 方差度量了通用大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响。
- 噪声表达了在当前任务上任何算法所能达到的期望泛化误差的下界,刻画了学习问题本身的难度。
- 偏差-方差分解说明,泛化性能是由算法的能力、数据的充分性和任务本身难度决定的。
过拟合与欠拟合
-
上图中,训练的初始阶段,算法的学习拟合能力不强,训练数据的扰动不足以使学习器产生显著变化,偏差主导泛化错误率,此时算法欠拟合
- 随着训练程度的增加,算法的拟合能力增强,以至于在训练后期数据的细微扰动都被学习到,方差主导了泛化错误率,此时算法过拟合
进一步理解
偏差可以理解为训练集的表现,方差可以理解为验证集的表现。训练集的误差大(欠拟合)则偏差高,训练集的误差低但验证集误差大(欠拟合)则方差高。假设练集和验证集来自相同分布,举例说明:
0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
训练集误差 | 1% | 15% | 15% | 0.5% |
测试集误差 | 12% | 16% | 30% | 1% |
过拟合,高偏差 | 欠拟合, 高偏差 | 高偏差、方差 | 低偏差低方差 ,适度拟合 |
-
降低过拟合风险的方法:
- 获得更多的数据集
- 降低模型复杂度
- 正则化方法
- 集成学习
- 降低欠拟合风险的方法:
- 添加新的特征
- 增加模型的复杂度
- 减小正则化系数
评估方法
假设有包含$m$个样本的数据集$D=\left\{\left(\bf{x}_{1}, y_{1}\right),\left(\bf{x}_{2}, y_{2}\right), \ldots, \left(\bf{x}_{m}, y_{m}\right)\right\}$,需要从中产生训练集$T$和测试集$S$
留出法(hold-out)
将$D$划分为两个互斥的集合,训练集$T$和测试集$S$。
- 要尽可能保持数据分布的一致性。
- 单次使用留出法估计的结果不可靠,一般采用若干次随机划分,重复进行多次后取平均值
k折交叉验证
以3-折交叉验证为例:
为例建学校因样本划分不同而引入的差别,k折交叉验证通常需要随机使用不同的划分重复P次,最终估计结果是P次k折交叉验证结果的均值。
自助法
数据集$D$中一共有$m$个样本,每次从中随机选一个复制到$D^{\prime}$中(相当于有放回采样),重复$m$次。这样最后得到一个有$m$个样本的数据集$D^{\prime}$。这样一部分样本在$D^{\prime}$中会出现多次,一部分样本则不会出现。假设样本在$m$次采样中不被采到的概率为$\left(1-\frac{1}{m}\right)^{m}$,取极限:
$$
\lim _{m \mapsto \infty}\left(1-\frac{1}{m}\right)^{m} \mapsto \frac{1}{e} \approx 0.368
$$
约有36.8%的样本未在$D^{\prime}$中。我们用$D^{\prime}$作为训练集,$D \backslash D^{\prime}$作为测试集,这样约有1/3没在训练集中出现过的样本作为测试集,这样的测试称为包外估计(out-of-bag)
自助法在数据集较小时很有用。但自助法产生的数据集改变了出事数据集的分布,会引入估计偏差。
性能度量
混淆矩阵
对于二分类问题,可以将真实标签和预测值得组合划分为真正例(TP),假正例(FP),真反例(TN),假反例(FN)。令TP、FP、TN、FN分别表示对于的样本数目,显然有TP+FP+TN+FN=样本总数。则混淆矩阵表示如下:
准确率、精度、召回率
- 准确率(accuracy):
$$acc=\frac{TP+TN}{TP+TN+FP+FN}$$
- 精度(precision,也叫查准率):
$$P=\frac{TP}{TP+FP}$$
- 召回率(recall,也加查全率):
$$R=\frac{TP}{TP+FN}$$
精度与召回率是一堆相互矛盾的指标,P高则R偏低,R 高则P偏低
$F_{1}$ 分数
$F_{1}$分数综合了精度与召回率:
$$F_{1}=\frac{2 \times P \times R}{P+R}$$
$F_{1}$分数有更加一般的形式:
$$F_{\beta}=\frac{1}{1+\beta} \left(\frac{1}{P} + \frac{\beta^{2}}{R} \right)$$
$\beta > 1$时召回率的影响更大,$\beta < 1$时精度的影响更大。
macro与micro
对于多分类问题,每两两类别的组合都对应一个混淆矩阵,我们希望在n个二分类的混淆矩阵上综合考察精度和召回率。
- 先在个混淆矩阵上分别计算P和R,再计算平均值,得到宏查准率(macro-P)、宏查全率(macro-R)、宏$F_{1}$(macro-$F_{1}$)
$$macro P=\frac{1}{n}\sum_{i=1}^n P_{i}$$
$$macro R=\frac{1}{n}\sum_{i=1}^n R_{i}$$
$$macro F_{1}=\frac{2 \times macroP \times macroR}{macroP + macroR}$$
- 还可以将各混淆矩阵的对应缘故进行平均,得到$TP$、$FP$、$TN$、$FN$的平均值$\overline {TP}$、$\overline {FP}$、$\overline {TN}$、$\overline {FN}$,最后得到微查准率(micro-P)、微查全率(micro-R)、微$F_{1}$(micro-F1)
$$micro P=\frac{\overline {TP}}{\overline {TP} + \overline {FP}}$$
$$micro R=\frac{\overline {TP}}{\overline {TP} + \overline {FN}}$$
$$micro F_{1}=\frac{2 \times microP \times microR}{microP + microR}$$
P-R曲线
P-R曲线的横轴是召回率,纵轴是精度。机器学习算法可以一般可以输出属于某个类别的概率,P-R曲线上的某一点表示,在某个概率阈值下,大于该阈值的结果判定为正样本,小于该阈值判定为负样本,此时返回结果对应的召回率和精度。整条P-R曲线就是通过将阈值从高到低移动而形成的。
若一个模型的P-R曲线被另一个完全包住,则后者优于前者。若曲线交叉,则看recall=precision的取值,即平衡点,大的则性能优。
ROC曲线
ROC曲线全称“受试者工作特征(Receiver operating characteristic)”。绘制方法与P-R曲线一样,不同的是,ROC曲线的纵轴是真正例率(TPR),横轴是假正例率(FPR):
$$TPR=\frac{TP}{TP+FN}$$
$$FPR=\frac{FP}{TN+FP}$$
ROC曲线还有另外一种绘制方法:假定正样本有P个,负样本有N个,把横轴刻度间隔设为$\frac{1}{N}$,纵轴刻度间隔设为$\frac{1}{P}$,再根据模型输出的预测概率对样本从高到低排序,以此遍历样本,从零点开始,每遇到一个正样本就沿纵轴方向绘制一个间隔,每遇到一个负样本就沿横轴方向绘制一个间隔,直到(1, 1)这个点。
若一个模型的ROC曲线被另一个完全包住,则后者优于前者。若有交叉,则用ROC曲线下面积AUC(Aera Under ROC Curve)表示:
$$AUC=\frac{1}{2} \sum_{i=1}^{m-1} \left( x_{i+1} – x_{i}\right) \left(y_{i} + y_{i+1} \right)$$
ROC曲线中可能出现斜线,所以应该用梯形面积公式。