KNN算法中K是 咋决定的
上边说得都很好,我总结一下:靠经(xia)验(meng),也就是把这东西又变成一个art… 这其实也是knn之类被人诟病的一点。当然的确有一些思路,比如上边提到的各种。
■网友
可以试试用 Rough set来确定一个K
■网友
经验就是k=3,上限k=sqrt(n)
■网友
正好也遇到这个问题,看到research gate上也有人讨论,很有意思。先看你需要提取什么信息进行分析,K值到底取多少合适貌似没有定论。采用的方法各种,有人用Cross Validation,有人用贝叶斯,还有的用bootstrap,链接:https://www.researchgate.net/post/How_can_we_find_the_optimum_K_in_K-Nearest_Neighbor
■网友
已故的 Peter Hall 教授在这方面做过一些很重要的工作,比如以下两篇文章:
Hall, P., \u0026amp; Samworth, R. J. (2005). Properties of bagged nearest neighbour classifiers. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 67(3), 363–379.
Hall, P., Park, B. U., \u0026amp; Samworth, R. J. (2008). Choice of neighbor order in nearest-neighbor classification. The Annals of Statistics, 36(5), 2135–2152.
这里简单说一下每篇文章的内容(符号和原文略有不同),具体还是要参考原文。
第一篇文章探讨的是
-NN 分类器(classifier)。对于每一个测试样本点(testing data point),
-NN 用离它最近的训练样本点(testing data point)的类别(class label)作为对该测试样本点类别的预测。然而
-NN 在样本量
趋于无穷的时候是不具有一致性(consistency)的——也就是说
-NN 的精度不会收敛到(理论上最优的)贝叶斯分类器(Bayes classifier)的精度。一般的改进方法是利用 bagging,也就是利用原始的训练数据集产生若干 bootstrap 样本(bootstrap resample),从每一个 bootstrap 数据集中训练出一个
-NN 分类器,然后用这些分类器进行投票。Leo Breiman 告诉我们,一般来说对于不稳定的分类器(比如分类树以及这里的
-NN),bagging 产生的集成分类器(aggregated classifier)比单个分类器的精度要高。然而 Hall \u0026amp; Samworth (2005) 指出,如果 bootstarp 样本的样本量过大,那么 bagging 产生的集成分类器仍然不具有一致性。这时候就需要做 subsampling,也就是 bootstrap 样本的样本量
需要小于原始数据集的样本量
。不仅如此,为了使得集成分类器具有一致性,
和
必须要满足
当
时,
且
也就是说每一个 bootstrap 样本的样本量发散到无穷,但比例
收敛到
推荐阅读
- 为啥这个算法误差的看起来这么小
- 使用算法帮助人们筛选reader的信息是否存在可能
- 请问如果想成为算法工程师的话,大学选专业是选软件工程好还是计算机科学与技术好。
- 神经网络算法是否真的属于人工智能范畴
- 以算法为例,是否存在讲解者认为“懂得自然懂了,不懂的我说再多也白搭”的心理
- 豆瓣FM的推荐算法还有哪些可以改进的地方
- 如果已确定图像中物体的位置, 常用的目标分割和提取算法有哪些
- 请问只靠优化软件可以提高手机信号质量吗就是说不改变基带芯片和天线设计,信号质量可以靠算法优化吗
- 网络台球的动量算法规则是咋写的
- 各种hash算法的值域是啥分布
