参考

  • 百面机器学习
  • 机器学习模型优化 —— Model Optimization

    知识点

    基本概念

  • 期望泛化误差=bias2+var2+噪声。要得到好的模型,首先要数据噪声小,其次训练误差要小,同时要对数据波动不敏感。

  • 欠拟合时,模型的拟合能力差,训练损失大,即偏差大。
  • 过拟合时,模型的泛化能力差,测试损失远大于训练损失,即方差大。
  • 真实数据是有限的和有噪声的。理想的数据是无限大且无噪声。较好的数据是量要大、信噪比要高。

过拟合解决方法

  • 增大数据量:获取更多数据;数据增强,图像变换、GNN。
  • 降低模型复杂度:early stop;减少网络层数、神经元个数;减少树的深度、剪枝。
  • 正则化:L1、L2。
  • 使用集成方法:dropout、bagging。

欠拟合解决方法

  • 增加有效特征:多项式特征、业务特征、优化网络结构
  • 增加模型复杂度:增加训练轮数;增加网络层数、神经元个数;增加树的深度、叶子个数。
  • 减小正则项

    数据量有限带来的问题

  • 测试集和训练集数据分布不同,包含的数据规律不同,从而测试误差较大。要达到好的效果,就要训练集和测试集数据量要大,信噪比要高,保证数据同分布。

  • 拟合模型不唯一。例如很多高阶项,可能使训练集完美拟合,而测试集误差很大,因此需要控制模型复杂度。方法一,减少高阶项,例如减少网络深度等。高阶项在自变量发生微小变化时,函数值会发生很大变化。方法二,减小权重值,取L1和L2正则化等。权重值减少时,模型输入发生微小变化时,输出值变化较小,从而过拟合问题小。

数据噪声带来的问题

  • 扰乱了数据规律。训练出的模型,包含了数据规律和噪声两部分。特别是模型复杂时,完美拟合了噪声,但是测试集噪声又不同了,以至于测试误差较大。
  • 造成了数据差异。如果噪声比较大,而且测试集和训练集噪声又不同,那么学习到的基本都是噪声,不可能得到好的模型。

疑问

  • 阿里DIN论文中,auc只有0.6,但是一样会出现过拟合问题。过拟合和欠拟合可以同时发生。