模型调参与性能优化

模型选择与调参

给定学习任务,有包含m个样例的数据集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)} D=(x1,y1),(x2,y2),...,(xm,ym),我们可以选择不同的算法,而同一算法也可以配置不同的参数,从而得到不同的模型。选取模型的问题等价于寻找泛化误差最小的模型。我们将数据集划分为2个部分:一部分训练数据训练模型,一部分训练数据作为测试集评估模型,完成模型选择和调参。分2部分是为了避免选手既参加比赛又当裁判:测试集选手是为了评价模型各模型好坏,选择最佳模型。实践中在模型选择完成后,学习算法和参数配置已选定,此时用数据集D重新训练模型,这个模型使用了所有m个样本,这才是最终提交给用户的模型。

为了保证测试集误差近似为泛化误差的准确性,我们有以下注意事项:

  1. 测试样本是从样本真实分布中独立同分布采样获得;
  2. 训练集与测试集尽可能互斥;
    所以模型选取的问题,关键在于解决数据集D拆分,即对于已有的m个样例数据集D,通过处理产生训练集S和测试集T。
  • 处理要考虑的问题就是前述注意事项,为了尽可能保证数据分布的一致性,对于不平衡数据集,采用分层抽样;
  • 为了尽可能保证数据互斥,将D划分为k各互斥子集,选取k-1个子集的并集为训练集,余下的1个为测试集,从而可获取k组训练/测试集,从而进行k次训练和测试,最终返回k次测试结果的均值,即k折交叉验证

性能评估方法:错误率与精度、ROC Curve与AUC

偏差与方差【有效的改进措施】

周志华《机器学习》中推导得出结论:泛化误差可分解为偏差、方差和噪声之和。
偏差是精准程度,描述模型输出结果的期望与样本真实结果的差距,即学习算法本身的拟合能力;方差描述模型的输出稳定性,即数据扰动所造成的影响。模型在测试样本上一般会出现2种异常情况:高方差(过拟合)、高偏差(欠拟合)。

一般来说,偏差与方差是冲突的。给定学习任务,假设我们能控制学习算法的训练程度,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到了,则会发生过拟合。
模型调参与性能优化_第1张图片

学习曲线【样本量~误差曲线】

根据学习曲线也能看出学习器是高偏差还是高方差问题。学习曲线的横轴是样本数,纵轴是训练集和交叉验证集的误差。随着样本数增加,训练集误差不断增大,而交叉验证集因训练数据增加而拟合得更好因此下降。
高偏差情形下的学习曲线:特点是学习器拟合能力差,误差大,一味增加样本并不能给算法性能带来提升。此时可以通过引入更多的相关特征(如采用多项式特征)、减小正则化参数 λ \lambda λ改进模型
高偏差情形下的学习曲线
高方差情形下的学习曲线:特点是学习器有过拟合风险,在交叉验证集性能差,增加样本量有利于提升性能。同时还可以通过减少特征数量、增大正则化参数 λ \lambda λ改进模型。
高方差情形下的学习曲线

参考

吴恩达机器学习:方差与偏差
《机器学习_ 学习笔记 (all in one)_V0.96》

你可能感兴趣的:(机器学习)