[机器学习]k-NN算法相关知识点

开一个新专题,每次讲一个机器学习算法的知识点。


k近邻(k-Nearest Neighbor, 简称k-NN)学习是一种常用的监督学习方法。

工作机制: 给定测试样本,基于某种距离度量找出训练集中与其最靠近的 k 个训练样本,然后基于这 k 个"邻居 “的信息来进行预测 . 既可以回答分类问题,也可以回答回归问题。通常,在分类任务中可使用**“投票法” 即选择这 k 个样本中出现最多的类别标记作为预测结果;在回归任务中时使用"平均法”**,即将这 k 个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大.

这种学习算法没有显式的训练过程,属于"懒惰学习"(lazy learning) ,此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到
测试样本后再进行处理;相应的,那些在训练阶段就对样本进行学习处理的方
法,称为"急切学习" (eager learning)。

lazy learning和eager learning的区别如下:

  • 懒惰学习比急切学习在训练阶段花的时间少,但是在预测阶段花的时间较多
  • 懒惰学习都是用局部的线性函数来近似,而急切学习都是全局的方法

摘自统计学习方法

kNN算法有三个要素,分别是:

  • k值的选择
  • 距离的度量
  • 分类决策规则

k值的选择

摘自周志华西瓜书
如果选择较小的k值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差(bias)会减小,只有与输入实例较近的训练实例才会对预测结果起到作用。但缺点是“学习”的估计误差(variance)会增大,预测结果会对近邻的实例点非常敏感。
换句话说,k值的减小就意味着整体模型变得复杂,容易发生过拟合。
如果选择较大的k值,就相当于用较大的邻域中的训练实例进行预测,其优点是“学习”的估计误差(variance)会减小。但缺点是“学习”的近似误差(bias)会增大,这时候与输入实例较远的训练实例也会对预测起作用,使预测发生错误。
即k值的增大就意味着整体模型变得简单,完全忽略训练实例中的大量有用信息,不可取。

k=3~10,一般用交叉验证选取k值。

最近邻分类器虽简单,但它的泛化错误率不超过贝叶斯最优分类器的错误率的两倍。

注意:数据需要标准化

距离的度量

有几种距离计算方法:

  • 明氏距离
    L p ( x i , x j ) = ( l = 1 n x i ( l ) x j ( l ) p ) 1 p L_p(x_i,x_j)=(\sum_{l=1}^n |x_i^{(l)}-x_j^{(l)}|^p)^{\frac{1}{p}}
  • 欧式距离(即 p = 2 p=2
    L 2 ( x i , x j ) = ( l = 1 n x i ( l ) x j ( l ) 2 ) 1 2 L_2(x_i,x_j)=(\sum_{l=1}^n |x_i^{(l)}-x_j^{(l)}|^2)^{\frac{1}{2}}
  • 曼哈顿距离(即 p = 1 p=1
    L 1 ( x i , x j ) = l = 1 n x i ( l ) x j ( l ) L_1(x_i,x_j)=\sum_{l=1}^n |x_i^{(l)}-x_j^{(l)}|
    一般来说用欧氏距离。

分类决策规则
摘自统计学习方法


分割线,以后有补充继续!

发布了24 篇原创文章 · 获赞 0 · 访问量 303

猜你喜欢

转载自blog.csdn.net/Helslie/article/details/104877063
今日推荐