# 机器学习中的解析与数值解

> 原文： [https://machinelearningmastery.com/analytical-vs-numerical-solutions-in-machine-learning/](https://machinelearningmastery.com/analytical-vs-numerical-solutions-in-machine-learning/)

你有这样的问题：

*   哪些数据最适合我的问题？
*   什么算法最适合我的数据？
*   如何最好地配置我的算法？

为什么机器学习专家不能直接回答您的问题？

在这篇文章中，我想帮助您了解为什么没有人能告诉您使用什么算法或如何为您的特定数据集配置它。

我想帮助您看到找到好的数据/算法/配置实际上是应用机器学习的[难点](https://machinelearningmastery.com/applied-machine-learning-is-hard/)，并且是您需要专注于解决的唯一部分。

让我们开始吧。

![Analytical vs Numerical Solutions in Machine Learning](img/7dd76a85825fd0c0316d1b5c28df15e0.jpg)

机器学习中的解析与数值解
[dr_tr](https://www.flickr.com/photos/dr_tr/5418520466/) 的照片，保留一些权利。

## 解析与数值解

在数学中，一些问题可以通过解析和数字解决。

*   解析解决方案包括以易于理解的形式构建问题并计算确切的解决方案。
*   数值解决方案意味着在解决方案上进行猜测并测试问题是否能够很好地解决以便停止。

一个例子是可以双向解决的平方根。

我们更喜欢解析方法，因为它更快，因为解决方案是准确的。然而，由于时间或硬件容量的限制，有时我们必须求助于数值方法。

一个很好的例子是在线性回归方程中找到可以通过解析计算的系数（例如使用线性代数），但是当我们无法将所有数据放入单个计算机的存储器中以便执行解析时，可以用数值求解计算（例如通过梯度下降）。

有时，解析解决方案是未知的，我们必须使用的是数值方法。

## 解析解决方案

许多问题都有明确定义的解决方案，一旦定义问题就很明显。

我们可以遵循的一组逻辑步骤来计算确切的结果。

例如，您知道在给定特定算术任务（例如加法或减法）时要使用的操作。

在线性代数中，有一套方法可用于[分解矩阵](https://machinelearningmastery.com/introduction-to-matrix-decompositions-for-machine-learning/)，具体取决于矩阵的属性是方形，矩形，是否包含实数或虚数等等。

我们可以更广泛地将其扩展到软件工程，在这里，有一些问题会一次又一次地出现，无论应用程序的具体情况如何，都可以通过一种已知可以正常工作的设计模式来解决。例如[访问者模式](https://en.wikipedia.org/wiki/Visitor_pattern)，用于对列表中的每个项目执行操作。

应用机器学习中的一些问题已经明确定义并且具有解析解决方案。

例如，用于将分类变量转换为[单热编码](https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/)的方法是简单的，可重复的并且（实际上）总是相同的方法，而不管该组中的整数值的数量。

不幸的是，我们在机器学习中解决的大多数问题都没有解析解决方案。

## 数值解

我们感兴趣的许多问题没有确切的解决方案。

或至少，我们已经找到的解析解决方案。

我们必须猜测解决方案并测试它们，看看解决方案有多好。这涉及框架问题并在一组候选解决方案中使用反复试验。

实质上，找到数值解的过程可以[描述为搜索](https://machinelearningmastery.com/applied-machine-learning-as-a-search-problem/)。

这些类型的解决方案有一些有趣的属性：

*   我们通常很容易从坏的解决方案中找到一个好的解决方案。
*   我们经常不客观地知道“_ 好 _”解决方案是什么样的;我们只能比较我们测试过的候选解决方案之间的优点。
*   我们经常对近似或“_ 足够好的 _”解决方案感到满意，而不是单一的最佳解决方案。

最后一点是关键，因为我们试图通过数值解决方案解决的问题通常具有挑战性（因为我们没有简单的方法来解决它们），其中任何“_ 足够好的 _”解决方案都是有用的。它还强调了针对特定问题有许多解决方案，甚至其中许多解决方案可能足以使用。

我们有兴趣在应用机器学习中解决的大多数问题需要数值解决方案。

它比这更糟糕。

沿途每个子问题的数值解决方案影响后续子问题的可能解决方案的空间。

## 机器学习中的数值解

应用机器学习是一门数学学科。

给定机器学习模型的核心是一个优化问题，它实际上是搜索一组具有填充方程所需的未知值的项。每个算法都有一个不同的“_ 方程 _”和“_ 术语 _”，松散地使用这个术语。

方程式很容易计算，以便对给定的一组项做出预测，但我们不知道使用的术语是为了得到“_ 好 _”甚至“_ 最佳 _“对给定数据集的预测集。

这是我们一直在寻求解决的数值优化问题。

这是数值，因为我们试图用我们的域中的噪声，不完整和容易出错的有限观测样本来解决优化问题。该模型正在努力解释数据并在这些观测的输入和输出之间创建地图。

## 机器学习中更广泛的经验解决方案

选择的机器学习算法核心的数值优化问题嵌套在一个更广泛的问题中。

具体的优化问题受到许多因素的影响，所有因素都极大地促成了最终解决方案的“_ 良好性 _”，并且所有因素都没有解析解决方案。

例如：

*   使用什么数据。
*   要使用多少数据。
*   如何在建模之前处理数据。
*   使用什么建模算法或算法。
*   如何配置算法
*   如何评估机器学习算法。

客观地说，这些都是您的特定预测性建模机器学习问题所代表的开放问题的一部分。

没有解析解决方案;您必须发现这些元素的哪些组合最适合您的特定问题。

这是一个大的搜索问题，其中元素的组合被试验和评估。

你真正知道你所尝试的其他候选解决方案的得分是多少。

除了试验和错误之外，没有客观的路径可以通过这个迷宫，并且可能借鉴其他已知“_ 足够好的 _”解决方案的相关问题的想法。

应用机器学习的这种伟大的经验方法通常被称为“_ 机器学习作为搜索 _”，并在帖子中进一步描述：

*   [应用机器学习作为搜索问题的温和介绍](https://machinelearningmastery.com/applied-machine-learning-as-a-search-problem/)

这也包括在帖子中：

*   [为什么应用机器学习很难](https://machinelearningmastery.com/applied-machine-learning-is-hard/)

## 回答你的问题

我们将此问题带回您所遇到的具体问题。

什么数据，算法或配置最适合您的特定预测性建模问题的问题。

没有人可以查看您的数据或问题描述，并告诉您如何最好地解决它，甚至是如何解决它。

经验可以告知专家开始寻找的领域，并且一些早期的猜测可能会得到回报，但通常早期的猜测太复杂或完全错误。

预测性建模问题必须是[工作](https://machinelearningmastery.com/a-data-driven-approach-to-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)

## 摘要

在这篇文章中，您发现了解析和数值解决方案之间的差异以及应用机器学习的经验性质。

具体来说，你学到了：

*   解析解决方案是产生精确解决方案的逻辑程序。
*   数值解决方案是试错法，速度较慢，可产生近似解。
*   应用机器学习的核心数值解决方案具有调整后的思维模式，以便为特定的预测性建模问题选择数据，算法和配置。

你有任何问题吗？
在下面的评论中提出您的问题，我会尽力回答。