前言
参考了一些大佬的文章,这篇是个学习笔记。若有问题,请多指教!
KNN算法介绍
KNN分类算法(K-Nearest-Neighbors Classification)即K近邻算法:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例, 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。
核心思想:要确定测试样本属于哪一类,就寻找所有训练样本中与该测试样本“距离”最近的前K个样本,然后看这K个样本大部分属于哪一类,那么就认为这个测试样本也属于哪一类。
计算
具体步骤
1、计算测试对象与训练集中所有对象的距离,可以是欧式距离、余弦距离等,比较常用的是较为简单的欧式距离。
2、找出上步计算的距离中最近的K个对象。
3、找出K个对象中出现频率最高的对象,其所属的类别就是该测试对象所属的类别。
数学表达式
输入训练集
X:样本的特征向量。
Y:样本的类别。
T:一个特征空间,包含输入的样本。
输出x所属类别y
过程:
(1)根据给定的距离度量,在训练集T中找出与x最邻近的k个点,包含这k个点的x的邻域记作N(k)。
(2)在N(k)中根据分类决策规则(如多数表决)决定x的类别y,其公式如下:
( 说明:当括号等式成立时I为1,否则为0。)
在输出过程中需要注意的三个重要点:K值选择,距离度量,分类决策规则。
下面来解释。
K值选择
K一般低于训练样本数的平方根,它的设定使用交叉检验的方法.
(以K=1为基准)
K值设置过小会降低分类精度;若设置过大,且测试样本属于训练集中包含数据较少的类,则会增加噪声,降低分类效果。
距离度量
常见距离:曼哈顿距离,欧式距离和闵可夫斯基距离。
通式:
p=1时是 曼哈顿距离(Manhattan distance):
p=2时是 欧式距离(Euclidean distance) :
p=∞时:
分类决策规则
KNN分类预测多使用多数表决法。
多数表决法:即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别。
KNN回归多使用选择平均法。
选择平均法:即最近的K个样本的样本输出的平均值作为回归预测值。
结束
感谢阅读!