KNN的英文全称叫K-Nearest Neighbor,中文名称为K最近邻算法,它是由Cover和Hart在1968年提出来的。
相似性的度量:
相似性一般用空间内两个点的距离来度量。距离越大,表示两个越不相似。
KNN算法原理:
1. 计算已知类别数据集中的点与当前点之间的距离; |
2. 按照距离递增次序排序; |
3. 选择与当前距离最小的k个点; |
4. 确定前k个点所在类别的出现概率; |
5. 返回前k个点出现频率最高的类别作为当前点的预测分类。 |
电影分类:
KNN算法归纳:
(1)KNN属于惰性学习(lazy-learning) |
(2)KNN的计算复杂度较高 |
(3)k取不同值时,分类结果可能会有显著不同 |
KNN算法应用说明:
按距离加权的k-近邻算法是一种非常有效的归纳推理方法。它对训练数据中的噪声有很好的鲁棒性,而 且当给定足够大的训练集合时它也非常有效。注意通过取k个近邻的加权平均,可以消除孤立的噪声样例的影
响。
问题一:近邻间的距离会被大量的不相关属性所支配。
解决方法:当计算两个实例间的距离时对每个属性加权。
问题二:应用k-近邻算法的另外一个实践问题是如何建立高效的索引。因为这个算法推迟所有的处理,直
到接收到一个新的查询,所以处理每个新查询可能需要大量的计算。
解决方法:目前已经开发了很多方法用来对存储的训练样例进行索引,以便在增加一定存储开销情况下 更高效地确定最近邻。一种索引方法是kd-tree(Bentley 1975;Friedman et al. 1977),它把实例存 储在树的叶结点内,邻近的实例存储在同一个或附近的结点内。通过测试新