我想优化KNN。关于SVM,RF和XGboost有很多内容;但KNN很少。
据我所知,邻居的数量是一个要调整的参数。
但要测试的其他参数是什么?有没有好文章?
谢谢
答案 0 :(得分:3)
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行伪代码)。另一方面,找到最好的相似性度量"因为学习分类器本身就是一个等同的难题,因此没有真正的方法可以做到这一点,人们通常最终会使用简单的事物(欧几里德距离)或者使用他们的领域知识来适应手头的问题。
答案 1 :(得分:1)
Lejlot,几乎总结了一切。 K-NN非常简单,它是一个基于实例的非参数算法,它使它如此美丽,并且对于某些特定的例子非常有效。大多数K-NN研究不是在K-NN本身,而是在计算和硬件中。如果你想要一些关于K-NN和机器学习算法的读数 Charles Bishop - 模式识别和机器学习。警告:数学很重要,但机器学习和真正的计算机科学都是数学。
答案 2 :(得分:1)
通过优化你是否也专注于减少预测时间(你应该),那么你可以实现其他方面来提高算法效率(但这些不是参数调整)。 KNN的主要缺点是,随着训练样本数量的增加,预测时间也越来越长,性能也越来越低。
要进行优化,您可以使用KD树检查KNN,使用反向列表(索引)检查KNN,使用局部敏感哈希(KNN和LSH)检查KNN。 这些将减少预测时间内的搜索空间,从而优化算法。