机器学习的维度诅咒解释了吗?

机器算法验证 机器学习
2022-02-03 10:10:12

我无法理解维度的诅咒。scikit-learn具体来说,我在用 python做教程时遇到了它。有人可以用更简单的方式解释以下内容吗?抱歉,我一直在尝试理解最长的时间,但无法理解他们如何计算训练示例的数量以实现高效的 KNN 估计器?

这是解释:

为了使估计器有效,您需要相邻点之间的距离小于某个值 d,这取决于问题。在一个维度上,这平均需要 n ~ 1/d 个点。在上述 KNN 示例的上下文中,如果数据仅由一个值范围为 0 到 1 且具有 n 个训练观测值的特征来描述,那么新数据将不会超过 1/n。因此,与类间特征变化的规模相比,只要 1/n 较小,最近邻决策规则就会很有效。

如果特征数量为 p,您现在需要 n ~ 1/d^p 个点。假设我们在一维中需要 10 个点:现在在 p 维中需要 10^p 个点来铺平 [0, 1] 空间。随着 p 变大,一个好的估计器所需的训练点数呈指数增长。

链接在这里

编辑:在该示例中,波浪号 ( ~) 是否也应该代表近似值?还是 python 波浪号运算符?

3个回答

matty-d已经提供了一个很好的答案,但我从 Quora 用户 Kevin Lacker 那里找到了另一个同样可以解释这个问题的答案:

假设你有一条 100 码长的直线,你在上面的某个地方掉了一分钱。它不会太难找到。你沿着这条线走,需要两分钟。

现在假设你在每边都有一个 100 码的正方形,你在上面的某个地方丢了一个便士。这将非常困难,就像在两个粘在一起的足球场中搜索一样。可能需要几天时间。

现在是一个 100 码宽的立方体。这就像搜索一个足球场大小的 30 层建筑。啊。

随着维度的增加,在空间中搜索的难度会变得更大当它只是在数学公式中陈述时,您可能不会直观地意识到这一点,因为它们都具有相同的“宽度”。这就是维度的诅咒。它之所以有名字,是因为它不直观、有用且简单。

翻译那段:

假设有一组描述数据点的特征。也许你在看天气。这组特征可能包括温度、湿度、一天中的时间等。所以每个数据点可能有一个特征(如果你只看温度)或者它可能有两个特征(如果你看温度和湿度)等等。这一段的意思是,根据您的数据具有的维度数量(它具有多少特征),估算器越困难。这是因为如果你只是有数据的一个特征,或者一维数据,那么当你把这个数据绘制成图表时,你会得到一个折线图,想象一个在 0-50 摄氏度之间的折线图,它只需要每个数据点之前的 50 个随机点与任何其他数据点的角度约为 1 度。现在让' s 考虑 2 个维度,讨论湿度和温度,现在更棘手的是要找到 d 使得所有点都在彼此的“d”单位内。想象一下温度仍然在 0-50 之间,但现在湿度也在 0-100% 之间。需要多少随机点才能得到彼此相距 1 或 2 以内的所有点?现在是 100 * 50 或 ~5,000!现在想象 3 维等等。你开始需要更多的点来确保每个点都在其他点的 d 范围内。为了让您的生活更轻松,请尝试假设“d”为 1,然后看看会发生什么。希望有帮助!需要多少随机点才能得到彼此相距 1 或 2 以内的所有点?现在是 100 * 50 或 ~5,000!现在想象 3 维等等。你开始需要更多的点来确保每个点都在其他点的 d 范围内。为了让您的生活更轻松,请尝试假设“d”为 1,然后看看会发生什么。希望有帮助!需要多少随机点才能得到彼此相距 1 或 2 以内的所有点?现在是 100 * 50 或 ~5,000!现在想象 3 维等等。你开始需要更多的点来确保每个点都在其他点的 d 范围内。为了让您的生活更轻松,请尝试假设“d”为 1,然后看看会发生什么。希望有帮助!

该示例可以给出问题的一些直觉,但实际上根本不是一个严格的证明:这只是一个需要许多样本才能获得“良好”空间覆盖率的示例。可能有(并且确实有,例如 2D 中的六边形)比常规网格更有效的覆盖......(低差异序列的复杂区域专门用于此)......并证明即使有这样更好的覆盖还有一些维度的诅咒是另一个问题。实际上,在某些功能空间中,甚至有办法规避这个明显的问题。