你是否有如下疑问:
什么数据最适合我的问题?什么算法最适合我的数据?
如何对我的算法进行调参?
本文将为你解释为什么没有一个机器学习专家能对上述问题给出直接答案。事实上,找到合适的数据、算法、参数是应用机器学习的难题,也是你唯一需要努力解决的部分。
解析解与数值解
在数学运算中,有些问题可以通过解析法和数值法解决。
解析解是用一种易于理解的形式描述问题,并计算精确解。数值解是先猜测解,随后检验此解是否足以解决问题。
平方根是一个能同时用两种方法解决的案例。
但通常我们更偏爱解析法。因为这种方法更快,并且能得到精确的解。尽管如此,有时由于时间和硬件性能的限制,我们必须采用数值法。
找到线性回归方程的系数是一个很好的例子。它既可以通过解析法计算,比如使用线性代数;但当我们不能把所有数据都储存在一台电脑里来进行解析计算时,我们也可以运用数值法解决问题,比如通过梯度下降法。所以,当解析解是未知的时候,我们只能借助数值法。
解析解
一旦问题被界定之后,很多问题都有明确的解。我们可以遵循一系列逻辑步骤来计算最终的精确解。例如当给定一个具体的算术问题时(如加法或减法),你知道如何操作。在线性代数中,有一系列的方法可以用来分解矩阵,这取决于矩阵的特性是方阵、矩形阵、包含实数还是虚数等等。
附链接(机器学习中分解矩阵的简介):
https://machinelearningmastery.com/introduction-to-matrix-decompositions-for-machine-learning/
我们可以将其更广泛地拓展到软件工程中,对于那些反复出现的问题,无论具体的应用场景如何,我们可以通过一系列广受好评的设计来解决它们。例如用访问者模式对列表中每一项执行操作。
一些问题在机器学习中已经界定明确并且得到了解析解。例如无论数据集中整数值有多少个,我们都可以用同样的方法很容易地将一个分类变量变为独热编码(one hot encoding)。然而不幸的是,机器学习中我们关心的大部分问题都没有解析解。
附链接(为什么在机器学习中使用独热编码):
https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/
数值解
很多我们感兴趣的问题并没有精确解,或者至少没得到解析解。我们必须要猜测可能的解并测试它们,看看解是否合适。这涉及到构建问题并在一系列候选解中进行试错。从本质上来看,寻找数值解的过程可以看作一个搜索的过程。
这些解有一些有趣的特性:
不合适的解与合适的解是很容易区分的。我们通常不知道合适的解长什么样,只能在已经测试的候选解中进行对比。
我们的目标往往是找到一个近似的或“足够好”的解而不是唯一的最佳解。
最关键的是最后一点,因为通常情况下,我们尝试用数值解来解决的问题都非常有挑战性(因为我们没有简单的方法来解决它)。这种情况下,任何足够好的解都很实用。此外,需要强调的是一个给定的问题会有多种解,其中的许多解都足以解决问题。但机器学习中我们感兴趣的很多问题都需要数值解。比这更糟的是,随着进度的推进,每个子问题的数值解会影响后续子问题的解空间
机器学习中的数值解
应用机器学习是个数值性质的学科。一个给定的机器学习模型,其核心是个优化问题,本质上是要寻找一系列有未知参数的项来完成等式。从广义上来讲,每个算法都有不同的“等式”和“项”。
等式一般是容易计算的,以便估计给定项的参数。但是对于给定的数据集,我们往往不知道要用什么项多少项才能得到“不错的”甚至是“最佳的”预测
这就是我们经常要解决的数值优化问题。之所以是个数值问题,是因为我们要用有噪声的、不完整的和易出错的有限观测样本来解决优化问题。模型会尽可能地解释数据并在这些观测的输入和输出之间形成映射。
机器学习中更广泛的经验解
作为机器学习算法的核心,数值优化问题实际上属于一类更广泛的问题。具体的优化问题受很多因素影响,这些因素在很大程度上影响了最终解的“优化程度”,并且都没有解析解。例如:
使用什么数据使用多少数据
在建模前如何处理数据
使用什么模型或算法
如何给算法调参
如何评估算法效果
客观地讲,以上这些是机器学习中的开放性问题的一部分。它们没有解析解,你必须探索哪些元素的组合能最好地解决你的问题,对各种组合方案进行测试和评估,这个过程相当于一个巨大的搜索问题。在这种情况下,你需要知道其他候选方案的得分,才能知道高分应当是多少。除了试错法,还可以从其他已经得到解的相关问题中借鉴想法,除此以外没有其他客观路径能解决这个问题。
这种凭经验的方法经常被称为“搜索式机器学习”,后文提供的文献中进行了进一步探索。
回答你的疑问
我们回到开头的问题,在一个具体的建模预测问题中,什么样的数据、算法和参数最合适呢。没人能通过看你的数据或问题描述,就告诉你怎样解决它最好,甚至是相对好。经验可以帮助领域内的专家找到着手点,并帮助他们验证早期猜测,但通常情况下早期猜测过于复杂或存在低级错误。
要找的足够好的解,往往需要预测建模。并且作为机器学习从业者,这也是你的职责。这是应用机器学习的艰难工作,也是需要练习的部分。掌握好这个部分可以使你在业内更有竞争力。
拓展阅读
关于本文如果想了解更多,可以参阅以下资源:
基于数据驱动选择机器学习算法
https://machinelearningmastery.com/a-data-driven-approach-to-machine-learning/
将应用机器学习问题归为搜索问题的简介
https://machinelearningmastery.com/applied-machine-learning-as-a-search-problem/
为什么应用机器学习很难?
https://machinelearningmastery.com/applied-machine-learning-is-hard/
解析法和数值法有什么差别?
https://math.stackexchange.com/questions/935405/what-s-the-difference-between-analytical-and-numerical-approaches-to-problems
总结
通过本文的介绍,你应当明白了解析解和数值解之间的区别,以及应用机器学习的经验性质。具体来说如下:
解析解是得到精确解的逻辑过程。数值解是更慢的试错过程并且只能得到估计解。
在对一个具体的预测建模问题选择数据、算法和参数时,应用机器学习的核心思想是寻找一个数值解。