数据方面
1、训练数据的数量不足
2、训练数据不具代表性
由于最终我们要实现泛化,如果使用不具代表性的训练集训练出来的模型不可能做出准确的预估。因此使用具有代表性的训练集至关重要,不过做起来是很难的。如果样本集太小,将会出现采样噪声(即非代表性数据被选中);而即便是非常大的样本数据,如果采样方式欠妥,也同样可能导致非代表性数据集,这就是采样偏差。
3、质量差的数据
4、无关特征
一个成功的机器学习项目,关键部分是提取出一组好的用来训练的特征集,这个过程叫做特征工程,包括以下几点。
- 特征选择:从现有特征中选择最有用的特征进行训练。
- 特征提取:将现有特征进行整合,产生更有用的特征。
- 通过收集新数据创造新特征
算法方面
1、过度拟合
模型在训练数据上表现良好,但是泛化时却不尽如人意。
诸如深度神经网络这类的复杂模型可以检测到数据中的微小模式,如果训练集本身是嘈杂的,或者数据集太小(会导致采样噪声),那么很可能会导致模型检测噪声里的模式。显然,这些模式不能泛化至新的实例。
当模型相对于训练数据的数量和噪度都过于复杂时,会发生过度拟合。可能的解决方案如下。
- 简化模型(选择较少参数的模型)
- 选择线性模型而不是高阶多项式模型
- 减少训练数据中的属性数量
- 约束模型
- 收集更多的训练数据
- 减少训练数据中的噪声(修复错误数据、消除异常值)
通过约束模型使其更简单,并降低过度拟合的风险,这个过程称为正则化。在学习时,应用正则化的程度可以通过一个超参数控制。超参数是学习算法(不是模型)的参数。它必须在训练之前设置好,并且在训练期间保持不变。
2、拟合不足
拟合不足和过度拟合正好相反,它的产生通常是因为模型太过简单。解决这个问题的主要方式有:
- 选择一个带有更多参数、更强大的模型
- 给学习算法提供好的特征集(特征工程)
- 减少模型中的约束(比如,减少正则化超参数)