在 KNN 中优化哪些参数?
What parameters to optimize in KNN?
我想优化KNN。关于 SVM、RF 和 XGboost 的内容很多;但对于 KNN 来说很少。
据我所知,邻居的数量是一个需要调整的参数。
但是还有哪些参数需要测试?有什么好的文章吗?
谢谢
KNN 是一个非常简单的方法,除了 K 之外几乎没有什么可以调整的。整个方法就是:
for a given test sample x:
- find K most similar samples from training set, according to similarity measure s
- return the majority vote of the class from the above set
因此,除了K之外唯一用于定义KNN的是相似性度量s,仅此而已。该算法实际上没有其他内容(因为它有 3 行伪代码)。另一方面,找到 "the best similarity measure" 与学习分类器本身一样是个难题,因此没有真正的方法,人们通常最终要么使用简单的东西(欧氏距离),要么使用他们的领域知识来适应解决手头的问题。
Lejlot,总结得差不多了。 K-NN 非常简单,它是一种基于实例的非参数算法,这就是它如此漂亮的原因,并且对于某些特定示例非常有效。大多数 K-NN 研究不在 K-NN 本身,而是在计算和硬件中。如果您想阅读有关 K-NN 和机器学习算法的一些读物 Charles Bishop - 模式识别和机器学习。警告:数学很重,但是,机器学习和真正的计算机科学都是数学。
如果您还关注减少预测时间(您应该),那么通过优化,您可以实施其他方面来提高算法的效率(但这些不是参数调整)。 KNN 的主要缺点是随着训练示例数量的增加,预测时间也会变长,从而导致性能下降。
要优化,您可以检查 KNN with KD-trees、KNN with inverted lists(index) 和 KNN with locality sensitive hashing (KNN with LSH)。
这些将减少预测时间内的搜索 space,从而优化算法。
我想优化KNN。关于 SVM、RF 和 XGboost 的内容很多;但对于 KNN 来说很少。
据我所知,邻居的数量是一个需要调整的参数。
但是还有哪些参数需要测试?有什么好的文章吗?
谢谢
KNN 是一个非常简单的方法,除了 K 之外几乎没有什么可以调整的。整个方法就是:
for a given test sample x:
- find K most similar samples from training set, according to similarity measure s
- return the majority vote of the class from the above set
因此,除了K之外唯一用于定义KNN的是相似性度量s,仅此而已。该算法实际上没有其他内容(因为它有 3 行伪代码)。另一方面,找到 "the best similarity measure" 与学习分类器本身一样是个难题,因此没有真正的方法,人们通常最终要么使用简单的东西(欧氏距离),要么使用他们的领域知识来适应解决手头的问题。
Lejlot,总结得差不多了。 K-NN 非常简单,它是一种基于实例的非参数算法,这就是它如此漂亮的原因,并且对于某些特定示例非常有效。大多数 K-NN 研究不在 K-NN 本身,而是在计算和硬件中。如果您想阅读有关 K-NN 和机器学习算法的一些读物 Charles Bishop - 模式识别和机器学习。警告:数学很重,但是,机器学习和真正的计算机科学都是数学。
如果您还关注减少预测时间(您应该),那么通过优化,您可以实施其他方面来提高算法的效率(但这些不是参数调整)。 KNN 的主要缺点是随着训练示例数量的增加,预测时间也会变长,从而导致性能下降。
要优化,您可以检查 KNN with KD-trees、KNN with inverted lists(index) 和 KNN with locality sensitive hashing (KNN with LSH)。 这些将减少预测时间内的搜索 space,从而优化算法。