您是否也有疑问,例如:
- 什么样的数据最适合我的问题?
- 什么算法最适合我的数据?
- 如何才能最好地配置我的算法?
为什么机器学习专家不能直接回答你的问题?
在这篇文章中,我想帮助您了解为什么没有人能告诉您应该使用哪种算法或如何为您的特定数据集配置算法。
我想帮助您认识到,找到合适的数据/算法/配置实际上是应用机器学习的难点,也是您唯一需要专注解决的部分。
让我们开始吧。

机器学习中的解析解与数值解
照片来源:dr_tr,部分权利保留。
解析解与数值解
在数学中,有些问题可以通过解析方法和数值方法来解决。
- 解析解是指将问题表述成一个易于理解的形式,然后计算出精确的解。
- 数值解是指对解进行猜测,然后测试这些猜测是否足够好,可以停止计算。
例如,求平方根既可以采用解析方法,也可以采用数值方法。
我们通常更偏好解析方法,因为它更快,并且解是精确的。然而,有时由于时间或硬件能力的限制,我们必须诉诸数值方法。
一个很好的例子是寻找线性回归方程中的系数,这些系数可以通过解析方法(例如使用线性代数)计算出来,但当我们将所有数据都载入单个计算机内存以执行解析计算(例如通过梯度下降)时,也可以通过数值方法来求解。
有时,解析解是未知的,我们唯一能依靠的就是数值方法。
解析解
许多问题一旦被定义,其解决方案就十分明确。
这是一系列逻辑步骤,我们可以遵循这些步骤来计算出精确的结果。
例如,对于特定的算术任务,如加法或减法,您知道应该使用哪种运算。
在线性代数中,您可以使用一系列方法来分解矩阵,具体取决于您的矩阵是方阵、矩形、包含实数或虚数值等属性。
我们可以将其更广泛地延伸到软件工程领域,其中会反复出现一些问题,这些问题可以使用已知有效的通用设计模式来解决,而与您的应用程序的具体细节无关。例如,用于对列表中的每个项执行操作的访问者模式。
应用机器学习中的一些问题是明确定义的,并且有解析解。
例如,将分类变量转换为独热编码的方法很简单,可重复,并且(实际上)无论集合中的整数值是多少,方法都基本相同。
不幸的是,我们在机器学习中关心的大多数问题都没有解析解。
数值解
我们感兴趣的许多问题没有精确解。
或者至少,我们还没有找到解析解。
我们必须对解进行猜测,并进行测试以查看解的好坏。这涉及到构建问题,并在候选解集上进行试错。
本质上,寻找数值解的过程可以被描述为搜索。
这些类型的解决方案具有一些有趣的特性:
- 我们通常可以轻易地分辨出好的解和坏的解。
- 我们通常不知道“好”的解是什么样的;我们只能比较我们测试过的候选解之间的优劣。
- 我们通常满足于一个近似的或“足够好”的解,而不是唯一最好的解。
最后一点至关重要,因为我们试图用数值解解决的问题通常是具有挑战性的(因为我们没有简单的方法来解决它们),任何“足够好”的解都将是有用的。这也强调了对于一个给定的问题可能存在许多解决方案,并且其中许多可能足够好以至于可用。
我们在应用机器学习中要解决的大多数问题都需要数值解。
情况比这更糟。
沿途每个子问题的数值解会影响后续子问题的可能解空间。
机器学习中的数值解
应用机器学习是一门数值学科。
给定机器学习模型的核心是一个优化问题,这实际上是寻找一组未知值的项以填充方程的过程。每个算法都有一个不同的“方程”和“项”,这里是松散地使用这些术语。
对于给定的一组项,计算方程以做出预测很容易,但我们不知道使用哪些项才能在给定数据集上获得“好”甚至“最好”的预测集。
这就是我们一直在寻求解决的数值优化问题。
它是数值的,因为我们试图利用来自我们领域的不完整、有噪声且易出错的有限样本来解决优化问题。模型正努力解释数据,并创建这些观测值的输入和输出之间的映射。
机器学习中更广泛的经验解决方案
机器学习算法核心的数值优化问题嵌套在一个更广泛的问题中。
特定的优化问题受多种因素影响,所有这些因素都极大地影响了最终解决方案的“好坏”,而且所有这些因素都没有解析解。
例如
- 使用什么数据。
- 使用多少数据。
- 在建模之前如何处理数据。
- 使用什么建模算法或算法。
- 如何配置算法。
- 如何评估机器学习算法。
客观地说,这些都是您的特定预测建模机器学习问题所代表的开放性问题的一部分。
没有解析解;您必须发现这些元素的组合中最适合您特定问题的方法。
这是一个巨大的搜索问题,其中组合元素被尝试和评估。
您只真正知道一个好的分数是相对于您尝试过的其他候选解的分数而言的。
在迷宫中没有客观的路径,除了试错,也许还可以借鉴一些有已知“足够好”解决方案的相关问题的想法。
这种应用于机器学习的伟大的经验方法通常被称为“机器学习即搜索”,并在以下文章中进行了进一步的描述:
本文也涵盖了这一点:
回答您的问题
我们将回到您具体的问题。
即,什么数据、算法或配置最适合您的特定预测建模问题。
没有人可以查看您的数据或您问题的描述,就能告诉您如何最好地解决它,甚至只是好地解决。
经验可以为专家提供搜索的方向,其中一些早期的猜测可能会奏效,但大多数时候,早期的猜测都过于复杂或完全错误。
必须对预测建模问题进行研究才能找到一个“足够好”的解决方案,而作为机器学习的从业者,您的工作就是做好这项研究。
这是应用机器学习的艰辛工作,也是在该领域被认为有能力的领域,是需要练习和精通的。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
总结
在这篇文章中,您了解了解析解和数值解之间的区别以及应用机器学习的经验性质。
具体来说,你学到了:
- 解析解是产生精确解的逻辑过程。
- 数值解是试错过程,速度较慢,结果是近似解。
- 应用机器学习的核心是数值解,并辅以调整的心态,以便为特定的预测建模问题选择数据、算法和配置。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
深度学习中的反向传播是怎么回事?我一直以为它是数值计算的,但后来一些库谈到了反向传播的解析或符号计算。这与解析解与数值解的主题如何联系起来?
以下是我对这个话题的即兴看法(欢迎纠正)
反向传播是利用误差梯度更新权重的微积分。
在几乎所有情况下,梯度都是通过数值估计来计算的。有时我们想要计算复杂的误差梯度,而不是直接指定它们,我们可以使用像theano/tensorflow这样的符号库来指定这些计算。在底层,执行时会进行一些数值计算。
这两个元素(梯度估计和权重更新)的迭代过程是批处理/小批量/随机梯度下降,这是一个数值优化过程。
先生,请发送关于LDA和PCA技术用于降维的主题给我。我的研究领域是网络。我现在对机器学习感兴趣。
这是关于PCA的信息。
https://machinelearning.org.cn/calculate-principal-component-analysis-scratch-python/
亲爱的Jason,您能否给我一个ML有可能应用于当今高压产品或高压电力系统研究的主题?
我不能。也许可以搜索Google Scholar?
亲爱的Jason,您能否给我一个使用Keras函数进行数值计算的例子?
您确切指的是什么?回归?
这是Keras中的一个回归示例。
https://machinelearning.org.cn/regression-tutorial-keras-deep-learning-library-python/
亲爱的 Jason,
我对机器学习不太熟悉,我想解决Ax=b和A^’x approx b^’+ e的问题,已知A,A^’,b,b^’,我们能否正确地恢复x,其中x是二进制解。
也许可以在CrossValidated或MathOverflow上发帖?