1.5 机器学习的主要挑战
1.5.1 训练数据不足
- 对于复杂问题而言,数据比算法更重要
- 但中小型数据集仍然很普遍,获得额外的训练数据并不总是一件轻而易举或物美价廉的事情,所以暂时不要抛弃算法。
1.5.2 训练数据不具有代表性
- 采样偏差:如果样本太小,那么会出现采样噪声(即非代表性数据被选中),但如果采样方法有缺陷,即使是非常大的样本也可能不具有代表性。
1.5.3 低质量数据
训练数据充满错误、异常值和噪声(例如,低质量的测量产生的数据),系统将更难检测到底层模式,也就更不太可能表现良好。
需要对数据进行清洗,必须决定是完全忽略此属性、忽略这些实例、将缺失值补充完整(例如,填写年龄的中位数),还是训练一个具有该特征的模型,再训练一个没有该特征的模型。
1.5.4 无关特征
机器学习项目成功的一个关键部分是提取出好的特征集来进行训练。这个过程称为特征工程,包括以下步骤:
- 特征选择(在现有特征中选择最有用的特征进行训练)。
- 特征提取(结合现有特征产生更有用的特征,正如我们之前看到的,降维算法可以提供帮助)。
- 通过收集新数据创建新特征。
1.5.5 过拟合训练数据
- 过拟合,也就是指该模型在训练数据上表现良好,但泛化效果不佳。
- 当模型相对于训练数据的数量和噪声过于复杂时,就会发生过拟合。以下是可能的解决方案:
- 通过选择参数较少的模型(例如,线性模型而不是高阶多项式模型)、减少训练数据中的属性数量或约束模型来简化模型。
- 收集更多训练数据。
- 减少训练数据中的噪声(例如,修复数据错误并移除异常值)。
- 正则化:通过约束模型使它更简单,并降低过拟合风险的过程。
正则化例子:
例如,我们之前定义的线性模型有两个参数:θ0和θ1。
因此,该学习算法有两个自由度来调整模型使其适应训练数据,它可以调整直线的高度(θ0)和斜率(θ1)。
如果我们强制θ=0,该算法只有一个自由度,并且会更难正确地拟合数据:它所能做的就是向上或向下移动线以尽可能接近训练实例,所以它最终会在平均值附近。这确实是一个非常简单的模型!
如果我们允许算法修改θ1,但强制它保持较小的值,那么该学习算法的自由度将在1到2之间。它生成的模型会比有两个自由度的模型更简单,但比只有一个自由度的模型要复杂一些。
你希望在完美拟合训练数据和保持模型足够简单之间找到适当的平衡点,以确保模型能够较好地泛化。
- 超参数:学习期间应用的正则化程度可以由超参数控制。超参数是学习算法(而非模型)的参数。因此,它不受学习算法本身的影响,必须在训练前设置并在训练期间保持不变。
如果将正则化超参数设置得非常大,你将得到一个几乎平坦的模型(斜率接近于零)。学习算法虽然肯定不会过拟合训练数据,但也不太可能找到好的解决方案。调整超参数是构建机器学习系统的重要部分。
1.5.6 欠拟合训练数据
欠拟合与过拟合正好相反:当模型太简单而无法学习数据的底层结构时,就会发生欠拟合。
例如,生活满意度的线性模型容易出现欠拟合。
因为现实情况总是比模型更复杂,所以它的预测必然是不准确的,即使是在训练样例上也是如此。
以下是解决此问题的主要方式:
- 选择具有更多参数的更强大的模型。
- 为学习算法提供更好的特征(特征工程)。
- 减少对模型的约束(例如通过减少正则化超参数)。
1.5.7 总结💥
- 机器学习是关于如何让机器更好地完成某些任务的理论,它从数据中学习而无须清晰地编写规则。
- 机器学习系统有许多类型:有监督和无监督,批量的和在线的,基于实例的和基于模型的。
- 在机器学习项目中,你从训练集中收集数据,然后将训练集提供给学习算法。
- 如果该算法是基于模型的,它会调整一些参数以使模型拟合训练集(对训练集本身做出良好的预测),然后希望它也能够对新实例做出良好的预测。
- 如果该算法是基于实例的,那么它会记住样例,并根据相似性度量将它们与学习过的实例进行比较,从而泛化到新实例。
- 如果训练集太小,或者数据不具有代表性、有噪声或被不相关的特征(垃圾进、垃圾出)污染,那么系统的表现不会很好。
- 最后,你的模型既不能太简单(这种情况会导致欠拟合)也不能太复杂(这种情况会导致过拟合)。
- 一旦训练了一个模型,你就不能只是"希望"它泛化到新实例,你还需要评估它并在必要时对其进行微调。