k-NN 算法最简单的版本只考虑一个最近邻,也就是与我们想要预测的数据点最近的训练,数据点。预测结果就是这个训练数据点的已知输出。
什么是K近邻算法?
KNN的全称是K Nearest Neighbors,意思是K个最近的邻居,从这个名字我们就能看出一些KNN算法的蛛丝马迹了。K个最近邻居,毫无疑问,K的取值肯定是至关重要的。那么最近的邻居又是怎么回事呢?其实啊,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。
简单来说就是根据“距离”进行判别,看一下下面的示例图,也许你就懂了。
图中绿色的点就是我们要预测的那个点,假设K=3。那么KNN算法就会找到与它距离最近的三个点(这里用圆圈把它圈起来了),看看哪种类别多一些,比如这个例子中是蓝色三角形多一些,新来的绿色点就归类到蓝三角了
在介绍KNN算法的原理前,首先先介绍一些基本的概念
关于空间的一些基本概念
几何空间的五条公理
1.从一点向另一点可以引一条直线。
2.任意线段能无限延伸成一条直线。
3.给定任意线段,可以以其一个端点作为圆心,该线段作为半径作一个圆。
4.所有直角都相等。
5.若两条直线都与第三条直线相交,并且在同一边的内角之和小于两个直角,则这两条直线在这一边必定相交
向量空间又分为下面三种:
维度
向量
空间中具有大小和方向的量叫做空间向量
我们可以想象我们我们所分析的数据的每一个属性视为一个向量维度,我们输入的数据其实是某个高维向量空间中的一个点
关于距离的一些基本概念
很多基于向量空间的分类器在分类决策时用到距离的概念。
1、欧氏距离(Euclidean distance)
2、曼哈顿距离(Manhattan Distance)
3、切比雪夫距离 (Chebyshev Distance)
4、闵可夫斯基距离(Minkowski Distance)
5、杰卡德距离(Jaccard Distance)
6、余弦距离(Cosine Distance)
7、相关距离(Correlation distance)
8、汉明距离(Hamming Distance)
欧氏距离(Euclidean distance)
两个点在空间中的最短直线距离
曼哈顿距离(Manhattan Distance)
又称 “城市街区距离”(City Block distance)或“出租车距离”,指从一个十字路口开车到另一个十字路口的驾驶距离,显然不是两点间直线距离。
(1) 二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离:
(2) n维空间点a(x11,x12,…,x1n)与b(x21,x22,…,x2n)的曼哈顿距离:
切比雪夫距离 (Chebyshev Distance)
国际象棋中,国王可以直行、横行、斜行,所以国王走一步可以移动到相邻8个方格中的任意一个。国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?这个距离就叫切比雪夫距离。
闵可夫斯基距离(Minkowski Distance)
闵氏距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性的表述。
两个n维变量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离定义为:
其中p是一个变参数:
当p=1时,就是曼哈顿距离;
当p=2时,就是欧氏距离;
当p→∞时,就是切比雪夫距离。
杰卡德距离(Jaccard Distance)
杰卡德相似系数(Jaccard similarity coefficient):两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示:
杰卡德距离(Jaccard Distance):与杰卡德相似系数相反,用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度:
杰卡德相似系数和杰卡德距离的用途
可将杰卡德相似系数用在衡量样本的相似度上。
假设:样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。那么样本A与B的杰卡德相似系数可以表示为:
杰卡德距离等于1-J
说明:
P:样本A与B都是1的维度的个数
q:样本A是1,样本B是0的维度的个数
r:样本A是0,样本B是1的维度的个数
s:样本A与B都是0的维度的个数