后续章节中我们将会看到,目前已经有多种不同的机器学习算法用来解决不同的问题。从David Wolpert的著名论断“天下没有免费的午餐”中,我们可以总结出重要的一点:我们无法真正免费使用学习算法[1]。直觉上,我们会联想到另外一个流行的谚语,“如果你手上有一把锤子,你会把所有的问题都看作是钉子,我觉得这个有一种莫名的吸引力”(Abraham Maslow,1996)。举例来说:任何分类算法都有其内在的局限性,如果我们不对分类任务预先做一些设定,没有任何一个分类模型会比其他模型更具优势。因此在实际解决问题过程中,必不可少的一个环节就是选用几种不同的算法来训练模型,并比较它们的性能,从中选择最优的一个。在比较不同模型之前,我们需要先确定一个指标来衡量算法的性能。一个常用的指标就是分类的准确率,指的是被正确分类的样例所占的比例。
正常情况下大家会问:我们在选择训练模型的时候没有使用测试数据集,却将这些数据用于最终的模型评估,那该如何判断究竟哪一个模型会在测试数据集和实测数据上有更好的表现?针对该问题,我们可以采用交叉验证技术,将训练数据集进一步分为训练子集和验证子集,从而对模型的泛化能力进行评估。不同机器学习算法的默认参数对于特定类型的任务来说,肯定不是最优的。后续章节将介绍如何使用超参优化技术来帮助我们提升训练模型的性能。直观上看,超参并不是从数据集中训练得出的参数,但却是我们借以提高模型性能的关键节点。后续章节将结合实例对这些内容进行更清晰的介绍。
[1] The Lack of A Priori Distinctions Between Learning Algorithms,D.H.Wolpert 1996;No Free Lunch Theorems for Optimization,D.H.Wolpert and W.G.Macready,1997.