K最近邻(k-Nearest Neighbour,KNN)分类算法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
k近邻算法的想法很简单,类似于多数表决,关键点是参与多数表决的人是离你最近的k个人。
给定一个实例,首先从训练集中找到离这个实例最近的k个实例,然后根据这k个实例中哪个标签出现次数最多决定该实例的标签。需要注意的点是:
a.距离的度量
b.k值得选取
c.存储和速度
度量距离有很多
距离度量(摘自李航《统计学习方法》)
对n维实数向量空间Rn,经常用Lp距离或曼哈顿Minkowski距离。
Lp距离定义如下:
当p=2时,称为欧氏距离:
当p=1时,称为曼哈顿距离:
当p=∞,它是各个坐标距离的最大值,即:
用图表示如下:
K值选择
选择较小的K值,近似误差会减小,估计误差会增大,意味着整体模型变得复杂,容易发生过拟合;
选择较大的K值,减少估计误差,近似误差会增大,K值的增大就意味着整体的模型变得简单。
在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(一部分样本做训练集,一部分做测试集)来选择最优的K值。
选择较大的K值,减少估计误差,近似误差会增大,K值的增大就意味着整体的模型变得简单。
在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(一部分样本做训练集,一部分做测试集)来选择最优的K值。
分类决策规则
k近邻法中的分类决策规则往往是多数表决,即由输入对象的k个邻近中的多数类决定输入对象的类,通俗点就是“少数服从多数”
资料参考:
李航《统计学习方法》