在 KNN 中优化哪些参数?

机器算法验证 机器学习 k-最近邻 优化
2022-04-02 07:36:19

我想优化 KNN。有很多关于 SVM、RF 和 XGboost 的内容;但对于 KNN 来说很少。

据我所知,邻居的数量是要调整的一个参数。

但是要测试哪些其他参数?有什么好文章吗?

谢谢

2个回答

正如您正确认识到的,当涉及到 -NN 应用程序时,几乎总是人们专注于针对关于这个问题的标准论文是Mullin 和 Sukthankar 的Complete Cross-Validation for Nearest Neighbor Classifierskk

话虽如此,这只是故事的一半(如果 -NN,实际上是三分之一)。最近部分意味着我们使用了一些近邻的概念即。我们使用一些距离度量来量化相似性,从而定义邻居和一般的的概念这个选择很可能与同等重要,如果不是更重要的话kk. 举一个明显错误的度量标准的例子:假设我们想在地理上对城市进行聚类,并且我们根据字典顺序来建立它们的接近度;希腊雅典和格鲁吉亚雅典非常接近,而希腊雅典和阿尔巴尼亚地拉那 (*) 相距较远;显然,这个指标对我们的预期目的毫无用处。它们是许多可能的指标;提一些常用的:欧几里得距离、切比雪夫距离马氏距离汉明距离余弦相似度因此,我们需要根据我们对数据的先验知识推导出/选择一个距离度量,或者如果可能的话从我们的数据中学习一个好的度量。距离度量学习本身就是一项任务。关于这个问题的一些不错的第一篇论文是:Yang 等人的局部距离度量学习的有效算法。Weinberger 等人的大边距最近邻分类的距离度量学习。绝大多数应用程序使用欧几里得距离(如果它们是 NLP 应用程序,则使用余弦相似度),但这可能不是最适合手头的数据。

因此,首先考虑要聚类的数据之间的相似性的合理度量是什么,然后关注k

(*) 对于不太了解欧洲地理的人:阿尔巴尼亚和希腊彼此相邻。

为了获得更好的结果,强烈建议对相同规模的数据进行归一化。一般认为归一化范围在 0 到 1 之间。KNN 不适用于大维数据。在这种情况下,需要减少维度以提高性能。此外,处理缺失值将有助于我们改进结果。