机器学习kNN算法

机器学习kNN算法

kNN算法(即k邻近算法)是机器学习中最简单有效的一个分类算法,简单的说,kNN算法通过计算样本之间的距离进行分类。

工作原理

  • 首先存在一个训练样本集合,集合中每个样本具有多个特征(即特征向量)和一个标签,标签就是样本的所属分类。
  • 输入没有标签的新样本之后,计算新样本与各个训练样本的距离,距离通常是根据两个样本的特征向量采用欧氏距离公式计算得到。
  • 保留与输入样本距离最近的k个训练样本,统计这些训练样本的标签出现次数,出现次数最多的标签就作为输入样本的标签,至此便完成了对输入样本的分类预测。

注意要点

由于不同特征的原始数据范围可能相差很大,造成在计算欧氏距离时,差值最大的特征会对计算结果起决定性的影响。但是通常来说,特征向量中的各个向量都是同等重要的,所以在计算距离之前,需要将原始特征值进行归一化,使各个特征的取值范围位于0到1之间。我们可以使用如下公式将任意取值范围的特征值转化为0到1区间内的值:

newValue = (oldValue-min)/(max-min) (其中min和max分别是数据集中的最小特征值和最大特征值)

算法缺点

kNN算法需要保存全部训练样本,对每个输入样本,都需要分别计算各个训练样本与该样本的距离,所以kNN算法最大的缺点就是计算复杂度和空间复杂度都很高,当训练样本很多时效率会比较差。

发表评论

电子邮件地址不会被公开。 必填项已用*标注