K最近邻(KNN)
1. KNN算法概述
KNN属于分类算法,没有训练过程,新样本根据距离寻找最靠近样本的K个点,根据这K个点的分类确定新样本类别(选择K个点的多数分类)。
如下图,历史数据集有两类,红色三角形和蓝色正方形,现在需要判定绿色圆圈属于三角形还是正方形?
由图可见,若K值选择3,与圆圈最近的3个点中,有1个正方形和2个三角形,则我们判定绿色圆圈属于三角形类。若K选择5,则相应判定绿色圆圈属于正方形类。
算法描述:
- 计算测试数据与训练数据(带标签)之间的距离;
- 距离按照递增进行排序;
- 选择距离最近的K个点;
- 选择K个点出现最多的类别进行新样本分类。
由算法可见,影响分类结果的主要是K值和距离,所以使用KNN分类重点应该在选择最优K值和合适距离度量方法。
2. 如何选择K?
- K值太小,若K=1,则样本的分类结果只由最近的样本类别确定,所以容易受噪声点的影响。
- K值太大,若K=样本数n,则每个新样本的分类结果直接由训练集确定,此时无论输入实例是怎样的,分类结果都是训练实例中最多的类。
- 实际工作中,往往令K=1开始逐步增大,最大不超过训练样本数的平方根,使用交叉验证,评估不同K值下的分类情况,选择最优K值。
3. 距离度量?
距离度量就是如何衡量样本(特征向量)之间的距离,距离越小,相似度大,属于同一类别概率大。
常用的距离的度量方法有:欧式距离,曼哈顿距离;余弦相似性,皮尔逊相关系数。
其中余弦相似性和相关系数用于衡量样本之间相似性,相似性越大,属于同一类别概率大。
存在特征向量X = (x1,x2,x3...xn) Y=(y1,y2,y3..,yn)
欧式距离:
曼哈顿距离:
余弦相似性(注重两个向量在方向上的差异,而不是数值上的差异):
皮尔逊相关系数(衡量样本特征向量之间的线性相关程度)计算方法为协方差/标准差乘积、
2020-05-27 20:21