4.1.4 机器学习常见问题
机器学习项目是一个极其复杂的项目,在我们开始机器学习之前,以下几个方面是我们要考虑的。
(1)良好的数据管理能力。
随着机器学习任务中使用的数据的数量和复杂性越来越大,适当的数据管理能力是很重要的。这不仅包括通用项目要求的流程、政策、数据管理所需的程序、权限和认证的机制,还包括如何管理和转换训练数据来训练最佳模型的策略。
(2)建立性能基线模型。
当开发机器学习项目时,确定一个基线模型来衡量我们算法的性能是必不可少的。由于没有一个完美的算法可以解决所有问题,所以我们需要尝试许多算法并进行多种维度的比较来识别模型的相对性能。
(3)数据清洗。
机器学习模型所需的时间在不同算法之间有很大差异,而且数据的准确性和训练模型所花费的时间对模型的准确性有较大的影响。所以在项目开始时通常需要花点时间来整理数据,确保结果尽可能的准确。一般情况下,并不是所有的输入变量都会影响因变量或结果。我们可以通过特征工程去掉某些变量,确保模型使用的变量不包括那些无关的变量。
(4)训练时间。
在数据维数较大且计算能力有限的情况下,训练模型所花的时间就会较长。所以当项目对时间有严格要求时,我们就有必要考虑不需要大量训练的机器学习算法。例如,神经网络可能不适用于有时间限制的任务。
(5)选择合适的模型。
一些机器学习算法对数据结构或期望的输出做出了特定的假设,因此,有必要在模型选择时考虑这些算法是否合适。选择正确的模型有很多好处,包括更准确的预测、更快的训练时间及更有用的结果。有些机器学习模型对异常值或非参数检验有抵抗力。例如,基于决策树的方法通常根据阈值将一个节点分成两个节点。因此,在基于树的方法中,数据离群值的影响较小。
(6)过拟合。
即使模型中的预测变量之间没有关系,但在实际工程中我们还是建议使用较少的变量及复杂的或者使用大量预测变量的模型,以免遭受过度拟合。过度拟合是指模型在训练数据集上表现良好,但在验证和真实世界的设置上却不那么准确,因为它们学习到了数据中的错误(即噪声),而不是变量之间的信号或关系,所以模型要避免过拟合。
(7)资源消耗。
即使我们采用的一个复杂机器学习模型中的所有变量都是相关的,但消耗大量资源的特征变量也会对项目最终的顺利运行产生实际影响。实际考虑因素包括可用数据的数量、随后对存储的影响、计算资源、相关成本、为项目分配的时间,以及学习和验证所需的时间。特征变量可以通过特征选择进行识别,也可以通过特征提取进行转换。在机器学习项目中,帕雷托法则是一种常用的度量方法。使用帕雷托法则,集中于20%最重要的预测变量,应该有助于在合理的时间内建立相对成功的模型。例如,微软发现80%的Windows和Office的错误和崩溃是由20%的检测到的bug引起的。
(8)可解释性。
特征变量较少的机器学习模型更容易可视化、理解和解释。一个成功的机器学习项目的一个关键方面是所有涉众都能理解模型。通过减少特征变量的数量,机器学习模型的成功率可能会降低,但是这同时使模型更容易解释和理解,在项目结束时,这一点尤为关键。这时我们不仅要分享模型的性能及它的工作方式,还要特别关注模型的可解释性。
(9)精确度。
任何机器学习模型都期望能够很好地进行泛化。一个近似值可能比一个精确、准确的输出更有利。通过近似值,模型可以避免过拟合并减少了处理的时间量。
(10)参数。
每个机器学习模型的复杂度受参数和超参数的影响。训练一个模型所需的时间和资源随着参数数量的增加而增加。算法的参数是模型使用的一个变量,该变量的值可以从数据集中估计。算法的超参数是模型外部的一个变量,超参数的值不能从数据中估计出来。相反,它是由我们随机或通过使用启发式的方法预设并优化得到。