1.3 开始学习
搭建一个机器学习系统将面临一些挑战与问题,本节中我们将尝试解决这些问题。其中的许多问题是在特定领域内存在的,而另一些则不是。
学习的挑战
下面列出了在尝试搭建学习系统时,开发人员通常会遇到的一些挑战和问题。
1.特征提取——特征工程
特征提取是搭建机器学习系统过程时重要的一步。如果开发人员通过选择适当/正确数量的特征来很好地解决这一挑战,那么学习过程的其余部分将会很简单。此外,特征提取是依赖于领域的,并且需要先验知识来了解哪些特征对于特定任务来说可能是重要的。例如,前文提到的鱼类识别系统的特征与垃圾邮件检测或识别指纹的特征不同。
特征提取将从开发人员拥有的原始数据开始,然后构建衍生的变量/数值(特征),这些特征将为学习任务提供有用的信息,并有助于后续的学习和评估(泛化)。
一些任务具有大量的特征而只有较少的训练样本(观察),用于促进随后的学习和泛化过程。在这种情况下,数据科学家使用降维技术来将大量的特征缩减为一个比较小的集合。
2.噪声
在鱼类识别任务中,读者可以看到长度、重量、鱼的颜色以及船的颜色可能会有所不同,同时可能还存在阴影、低分辨率的图像以及其他物体。所有这些问题都会对这些本应为鱼类分类任务提供信息的解释性特征产生影响。
一些解决方案在这种情况下会有帮助。例如,有人可能会考虑检测船只的ID并且去除船只中某些可能不包含系统所要检测鱼类的部分,这种解决方案将会减小搜索空间。
3.过拟合
正如你在鱼类识别任务中所看到的,开发人员尝试通过增加模型复杂性并使得模型对训练样本中的每个实例都能完美分类,试图提高模型的性能。正如你在之后将看到的,这类模型并不能在未见过的数据上正常工作(比如开发人员用于测试模型性能的数据)。训练的模型在训练样本集上超常发挥但在测试样本集上表现不佳的情况称为过拟合。
如果读者浏览本章的后半部分,那么会看到我们将构建一个学习系统,其目标是将训练样本当作模型的知识库,以便从中学习并在未见过的数据上泛化。训练模型在训练数据集上出现的性能误差并不是用户所感兴趣的;相反,用户比较感兴趣的是训练模型在那些训练过程中未见过的测试样本上出现的误差。
4.机器学习算法的选择
有时候用户对于模型在某一特定任务上的表现不满意,而需要另一类模型。每种学习策略都有它自己关于数据的假设,而这种假设将成为学习的基础。作为一名数据研究员,读者应该去发掘哪种观点最适用于你的数据,这样读者就有能力去选择尝试哪一类模型而拒绝另一类模型。
5.先验知识
正如在模型选择和特征提取的概念中所讨论一样,如果读者有以下先验知识,就可以解决这两个问题:
- 合适的特征;
- 模型选择部分。
事先了解鱼类识别系统中的解释性特征使得用户能够区分不同类型的鱼类。通过努力想象分析所拥有的信息,用户可以做出更好的判断并且了解到不同鱼群分类的信息类型。在此先验知识的基础上,就可以选择合适的模型簇了。
6.缺失值
缺失的特征主要是由于缺少数据或选择了“保密”选项而导致的。用户在学习过程中要怎么处理这类问题呢?例如,某类鱼的宽度特征因为某些原因而丢失了。有很多种方法可以处理这些丢失的特征。