机器学习——K近邻算法KNN

47 阅读2分钟

原理

  • k近邻一种基本的机器学习算法
  • 是k个最近的邻居的意思
  • 比如:判断一个人的人品,只需要观察与他来往最密切 的几个人的人品好坏就可以得出,即“近朱者赤,近墨者黑”
  • KNN在分类预测时,一般采用多数表决法;而在做回归预测时,一般采用平均值法。

KNN算法实现方式

KNN算法的重点在于找出K个最邻近的点,主要方式有以下几种:

  1. 蛮力实现(brute):计算预测样本到所有训练集样本的距离,然后选择最小的k个距离即可得到K个最邻近点。
  2. KD树(kd_tree):KD树算法中,首先是对训练数据进行建模,构建KD树,然后再根据建好的模型来获取邻近样本数据。

数据量少:蛮力实现:计算到所有样本的距离

样本量大:使用kd tree快速计算

构建kd_tree 以此为例:

image.png

  1. x轴(第一个任选,下一层相反),只看x轴排大小,选取中位数,左小右大,构造KD树

由 2 4 5 7 8 9 选中位数7得到

image.png

  1. 第二层,看y轴(循环),只看y轴排大小,选取中位数,左小右大,构造KD树

3 4 7 选中位数4 6 1 选中位数6 作图

image.png

  1. 第三层,看x轴(循环),只看x轴排大小,选取中位数,左小右大,构造KD树

2 选中位数2

4 选中位数4

8 选中位数8

image.png

以目标点为圆心,以目标点到叶子节点中样本实例的最短距离为半径点(一般为当前叶子节点中的其它训练数据或者刚刚经过的父节点)

image.png

优化方法:特征标准化 + 距离加权 + 降维 + KD树

  • 特征标准化

image.png

视频演示:www.bilibili.com/video/BV1Ag…

实例练习:gairuo.com/p/iris-data…