模型评估
评估方向
模型误差
- 给定损失函数时,基于损失函数的误差显然评估学习方法的标准
- 回归预测模型:模型误差主要使用 MSE
- 分类预测模型:模型误差主要是分类错误率 ERR=1-ACC
- 模型训练时采用损失函数不一定是评估时使用的
Training Error
训练误差:模型在训练集上的误差,损失函数 $L(Y, F(X))$ 均值
- $\hat f$:学习到的模型
- $N$:训练样本容量
- 训练时采用的损失函数和评估时一致时,训练误差等于经验风险
- 训练误差对盘对给定问题是否容易学习是有意义的,但是本质上不重要
- 模型训练本身就以最小化训练误差为标准,如:最小化 MSE、最大化预测准确率,一般偏低,不能作为模型预测误差的估计
- 训练误差随模型复杂度增加单调下降(不考虑模型中随机因素)
Test Error
测试误差:模型在测试集上的误差,损失函数 $L(Y, f(X))$ 均值
- $\hat f$:学习到的模型
- $N$:测试样本容量
测试误差反映了学习方法对未知测试数据集的预测能力,是模型 generalization ability 的度量,可以作为模型误差估计
测试误差随模型复杂度增加呈U型
- 偏差降低程度大于方差增加程度,测试误差降低
- 偏差降低程度小于方差增加程度,测试误差增大
- 训练误差小但测试误差大表明模型过拟合,使测试误差最小的模型为理想模型
模型复杂度
- approximation error:近似误差,模型偏差,代表模型对训练集的拟合程度
- estimation error:估计误差,模型方差,代表模型对训练集波动的稳健性
模型复杂度越高
- 低偏差:对训练集的拟合充分
- 高方差:模型紧跟特定数据点,受其影响较大,预测结果不稳定
- 远离真实关系,模型在来自同系统中其他尚未观测的数据集上预测误差大
而训练集、测试集往往不完全相同
- 复杂度较高的模型(过拟合)在测试集上往往由于其高方差效果不好,而建立模型最终目的是用于预测未知数据
- 所以要兼顾偏差和方差,通过不同建模策略,找到恰当模型,其复杂度不太大且误差在可接受的水平
- 使得模型更贴近真实关系,泛化能力较好
- 简单模型:低方差高偏差
复杂模型:低偏差高方差
模型复杂度衡量参data_science/loss
Over-Fitting
过拟合:学习时选择的所包含的模型复杂度大(参数过多),导致模型对已知数据预测很好,对未知数据预测效果很差
- 若在假设空间中存在“真模型”,则选择的模型应该逼近真模型(参数个数相近)
- 一味追求对训练集的预测能力,复杂度往往会比“真模型”更高
解决方法
- 减少预测变量数量
- 最优子集回归:选择合适评价函数(带罚)选择最优模型
- 验证集挑选模型:将训练集使用 抽样技术 分出部分作为 validation set,使用额外验证集挑选使得损失最小的模型
- 正则化(罚、结构化风险最小策略)
- 岭回归:平方损失,$L_2$ 范数
- LASSO:绝对值损失,$L_1$ 范数
- Elastic Net
- 减弱变量特化程度:仅适合迭代求参数的方法
- EarlyStop:提前终止模型训练
- Dropout:每次训练部分神经元
模型信息来源
- 训练数据包含信息
- 模型形成过程中提供的先验信息
- 模型:采用特定内在结构(如深度学习不同网络结构)、条件假设、其他约束条件(正则项)
- 数据:调整、变换、扩展训练数据,让其展现更多、更有用的信息
评价指标
Classification 分类问题:输出变量$Y$为有限个离散变量
- 混淆矩阵
- F-Measure
- TPR、FPR
- ROC
- AUC
- 混淆矩阵
Tagging 标注问题:输入 $X^{(1)}, X^{(2)}, \cdots, X^{(n)}$、输出 $Y^{(1)}, Y^{(2)}, \cdots, Y^{(n)}$ 均为变量序列
- 类似分类问题
Regression 回归问题
- Squared Error
- MSE
- $R^2$、$R^2_{Adj}$
- AIC
- BIC
- Absolute Error
- MAE
- MAPE
- SMAPE
- Squared Error
- 经验损失、结构损失总是能用作评价模型,但是意义不明确