我想优化KNN。支持向量机( SVM )、射频( RF )和神经网络(XGboost)有很多种,而KNN则很少。
据我所知,邻居的数目是一个需要调优的参数。
但是还需要测试哪些参数呢?有好文章吗?
谢谢
发布于 2017-05-01 21:28:17
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行伪码)。另一方面,寻找“最佳相似性测度”与学习分类器本身相当困难,因此没有真正的方法,人们通常使用简单的事物(欧几里德距离)或使用他们的领域知识来适应当前的问题。
发布于 2017-05-02 02:37:30
莱杰洛,差不多概括了这一切。K是如此简单,以至于它是一个基于实例的非参数算法,这就是它之所以如此美丽的原因,而且对于某些具体的例子来说,它非常有效。大多数K的研究都不是在K本身,而是在计算和硬件方面。如果你想阅读一些K和机器学习算法,查尔斯·毕晓普-模式识别和机器学习。警告:它在数学中很重,但是机器学习和真正的计算机科学都是数学。
发布于 2017-05-03 11:29:41
通过优化,如果您也专注于减少预测时间(您应该),那么还有其他方面可以实现,以提高算法的效率(但这些不是参数调优)。KNN的主要缺点是,随着训练实例的增加,预测时间也随之增加,从而导致性能下降。
要优化,您可以检查KNN与KD-树,KNN与倒排列表(索引)和KNN与局部性敏感散列(KNN与LSH)。这将减少预测时间内的搜索空间,从而优化算法。
https://stackoverflow.com/questions/43726728
复制相似问题