K近邻算法:参数选择、距离度量与应用实践
1. 选择K值的算法
选择K值在一定程度上具有主观性和非科学性,因此有许多算法可以在给定的训练集上优化K值。选择K值的方法有很多,从遗传算法到暴力搜索再到网格搜索。
很多人认为,应该根据你作为实现者所拥有的领域知识来确定K值。例如,如果你知道K取5就足够了,那么就可以选择它。
尝试基于任意K值来最小化误差的问题被称为爬山问题。其思路是遍历几个可能的K值,直到找到合适的误差。使用遗传算法或暴力搜索等算法来寻找K值的难点在于,随着K值的增加,分类的复杂度也会增加,从而降低性能。换句话说,K值越大,程序运行得越慢。
有人认为,对总体规模的1%进行两次迭代就足够了。通过尝试不同的K值,你应该能大致了解哪些可行,哪些不可行。
2. 什么是“近邻”
想象你坐在城市街区的拐角处。从街区的一个拐角到对角的拐角有多远?
答案取决于你的限制条件:你能徒步跳过围栏,还是必须开车?如果你开车,行驶的距离将是街区长度的两倍;如果你直走,距离将是$\sqrt{2}x$,其中x是街区的长度。假设一个街区长250英尺(76.2米),那么开车的距离将是500英尺(152.4米),而步行大约是353.5英尺(107.75米)。
从几何课上我们知道,勾股定理指出斜边的长度是$a^2 + b^2$。在现代数学术语中,这些被称为度量,它们是衡量点与点之间距离的一种方式。我们使用距离函数来计算这些度量,在前面的例子中,使用的是出租车距离函数和欧几里得距离函数。有很多种测量距离的方法,了解如何测量距离对于理解K近邻算法的工作原理至关重要,因为该算法是基于数据的接近程度。大多数情况下
超级会员免费看
订阅专栏 解锁全文
1283

被折叠的 条评论
为什么被折叠?



