2.1经验误差与过拟合
精度+错误率=1
- 过拟合(overfitting):模型的准确率在训练集上表现良好,在测试集或其他数据上表现较差。这是由于“过度学习”了训练集的某些特征,没有很好学习到样本的普遍特征,所以在新的数据上不能做出很好的判断。过拟合不可避免,因为P=NP显然是不成立的。我们只能缓解过拟合,无法避免。
- 欠拟合(underfitting):没有学好训练集的规律。欠拟合很好解决。e.g.对于决策树,增加分支;对于神经网络,增加训练轮数即可。
由于过拟合的存在,训练集上的误差不适合作为标准,而泛化误差不能直接获取。如何进行模型选择(model selection)就成为一个问题。
2.2评估方法
我们可以选用一个测试集来评估模型的测试误差(testing error),以测试误差代替泛化误差进行模型选择。
为了确保能验证模型是否真正学到了“普遍规律”,测试集的数据应当尽量与训练集的数据互斥。
那么,如何获取这样的测试集?
- 留出法(hold-out):直接将数据集D一分为二,一份作训练集,一份作测试集。
划分时要注意两个问题:
A.数据分布的一致性,这点通常通过“分层采样”来实现。
B.分割方式带来的误差,这点要通过随机划分,重复实验取平均值来尽量避免。
C.训练集和测试集的比例:测试集小时,评估结果的方差较大;训练集小时,评估结果的偏差较大. - K-fold交叉验证
特殊:留一法——准确,但数据集太大时计算开销过大 - 自助法(bootstrap):
优点是训练集和原样本数据量相同,避免了样本规模带来的误差;缺点是改变了数据的分布(有一些数据被重复采样放进训练集了)
得到了测试误差,接下来就是调参(parameter tuning),确定最终模型。
调参不可能穷尽所有可能,一般设定参数范围和步长,得到少量候选值,从中选出最终值。但是很多算法参数非常多,即便这样折中,工作量依然很大。
模型评估与选择中用于评估测试的数据集常称为“验证集" (validation set).
例如,在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参.
2.3性能度量
评估学习器的泛化误差需要标准。
- 回归预测任务:经常采用均方误差
- 分类任务:错误率,精度,查准率,查全率,F1;ROC 与 AUC
“平衡点”(Break-Event Point,简称BEP)是“查准率= 查全率时的取值
进行学习器的比较时,与P -R 图相似,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住"则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性地断言两者孰优孰劣.此时如果一定要进行比较,则较为合理的判据是比较RO C曲线下的面积,即AUC (Area Under
ROC Curve)
- 代价敏感错误率与代价曲线
- 比较检验
- 偏差与方差分解