1.什么是KNN算法?
KNN(K-Nearest Neighbor)算法是机器学习算法中最基础,最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值的距离来进行分类。
k近邻算法简单,直观:对于一个需要预测的输入向量x,我们只需要在训练数据集中寻找k个与向量x最近的向量的集合,然后把x的类别预测为这k个样本中类别数最多的那一类。
1.1基于上述思想给出KNN算法过程
输入:训练数据集
其中:
输出:实例x所属的类y.
(1)根据给定的距离度量,在训练集T中找出与x最临近的k个点,涵盖这k个点的x的领域记作Nk(x)
(2)在Nk(x)中根据分类决策规则(如多数表决)决定x的类别y:
I为指示函数,即当yi=ci时I为1,否则I为0
k近邻法的特殊情况是k=1的情形,称为最近邻算法,对于输入的实例点(特征向量)x,最近邻法将训练数据集中与x最邻近点的类作为x的类。
2. k近邻模型
k近邻法使用的模型实际上对应于对特征空间的划分。模型主要由三个基本要素----距离度量,k值的选择和分类决策规则决定。
2.1 距离度量
特征空间中两个实例点的距离是两个实例点相似程度的反应的反应。使用的是欧式距离(即坐标轴中两点的距离),但也可以是其他距离,如更一般的Lp距离(Lpdistance)或Minkowski (Minkowski distance)