帮助理解多维数据的 kNN

机器算法验证 机器学习 k-最近邻
2022-03-19 09:53:31

我了解空间数据kNN算法的前提。而且我知道我可以扩展该算法以用于任何连续数据变量(或具有汉明距离的标称数据)。但是,在处理高维数据时使用了哪些策略?

例如,假设我有一个数据表 (x[1], x[2], x[3], ..., x[n]),我想构建一组分类器来预测其中一个列(比如 x[n])。使用 kNN 算法,我将从剩余的列 (x[1]-x[n-1]) 中选择任意两列进行训练。所以说我可以选择 x[1] 和 x[2] 并根据它们构建一个分类器。或者我可以选择 x[1] 和 x[4],或者我可以选择 x[5] 和 x[8],等等。我什至可以只选择一个列并从中构建一个分类器,或者 3 个列并构建一个分类器关闭它。使用更高维度(2D、3D 等)是否有优势,还是应该构建 x-1 单维度分类器并以某种方式聚合它们的预测?

由于从变量的所有潜在组合构建所有这些分类器在计算上会很昂贵。我如何优化此搜索以从该集合中找到最佳的 kNN 分类器?而且,一旦我找到一系列分类器,将它们的输出组合到单个预测的最佳方法是什么?投票可能是这个问题最简单的答案。或者根据每个分类器的训练数据中的错误率对每个投票进行加权。

大多数实现如何将 kNN 应用于更通用的学习?

1个回答

使用更高维度(2D、3D 等)是否有优势,还是应该构建 x-1 单维度分类器并以某种方式聚合它们的预测?

这取决于您的功能是否提供信息。您是否怀疑某些功能在您的分类任务中没有用处?为了更好地了解您的数据,您还可以尝试计算响应变量和每个特征之间的成对相关性或互信息。

要组合所有(或部分)特征,您可以尝试计算查询点和每个“训练”点之间的 L1(曼哈顿)或 L2(欧几里得)距离作为起点。

由于从变量的所有潜在组合构建所有这些分类器在计算上会很昂贵。我如何优化此搜索以从该集合中找到最佳的 kNN 分类器?

这就是特征子集选择的问题。在这个领域有很多学术工作(参见 Guyon, I. 和 Elisseeff, A. (2003)。变量和特征选择简介。机器学习研究杂志,3,1157-1182。对于一个很好的概述)。

而且,一旦我找到一系列分类器,将它们的输出组合到单个预测的最佳方法是什么?

这将取决于所选特征是否独立。在特征是独立的情况下,您可以通过响应变量(无论您对什么进行分类)通过互信息(或其他信息量的度量)对每个特征进行加权。如果某些特征是依赖的,那么单个分类模型可能效果最好。

大多数实现如何将 kNN 应用于更通用的学习?

通过允许用户指定他们自己的点集之间的距离矩阵。当使用适当的距离度量时,kNN 效果很好。