k近邻(KNN)是相对基本的机器学习方法,特点是不需要建立模型,而是直接根据训练样本的数据对测试样本进行分类。
1、k近邻的算法?
算法对测试样本进行分类的一般过程如下:
1)根据给定的k值,搜索与测试样本距离最近的k个训练样本;
2)统计k个样本对应的每种分类数量;
3)根据每种分类的数量投票决定样本点所属分类,票数多者得。
例如:对于二分类,采用k=5的k近邻算法进行分类:距离样本点最近的5个点中,属于类0的样本数量为2,属于类1的样本数量为3,最终判定样本点属于类1。
2、k近邻的三要素?
k值、距离计算方法和投票规则是共同决定k近邻算法的三要素。
1)k值前面算法中已经介绍过了,是人为设定的值;根据这个设定的k值,选定距离样本点最近的训练样本。
2)距离计算方法一般采用欧氏距离,也可采用更加一般的Lp距离。举例来说:向量x1=(1,2)和x2=(3,4)均为2维特征向量,欧氏距离为,Lp距离为
,欧氏距离是Lp距离中P=2的特例。
3)投票规则一般采用票数多者得的原则。
3、快速对样本进行分类的方法?
k近邻算法的核心是快速的搜索到距离最近的样本点。对于样本量N很大的数据集,如果采用线性搜索方法,因为需要遍历样本中的每一个点,速度会非常慢。
为此常采用kd树结构来存储原始数据,kd树其实是二叉搜索树,对于树中的每一个节点,其左子节点(left节点)都小于自身,右子节点(right节点)都大于自身。采用该数据结构进行样本搜索时,每次可以排除掉剩余节点中半数(并非严格的半数)的节点,速度会快得多,时间复杂度是O(logN)。