- 一、距离度量
- (一)闵可夫斯基距离
- 1. 曼哈顿距离:假设A(0,0) B(2,4)
- (一)闵可夫斯基距离
![ff96ed4d50fe44e6dbda41e4232a18e0.png](https://i-blog.csdnimg.cn/blog_migrate/1dda38db7d6da7c363a2118696febccf.png)
-
-
-
- 曼哈顿距离 = |2 - 0| + |4 - 0|=6
-
-
-
-
- 2. 欧氏距离:
-
![e627d4e2c3b2f1e6653bf3ffcbb5586c.png](https://i-blog.csdnimg.cn/blog_migrate/fbdb8c9c144a94689c0ba9c9ae5118c3.png)
-
-
-
- 欧氏距离=根号 (2-0)^2+(4-0)^2 = 2*根号5
-
-
-
-
- 3. 切比雪夫距离:
-
![f4098203f21c7a783e039bc8f8765fdf.png](https://i-blog.csdnimg.cn/blog_migrate/711c3c905f60212dc1bea409170979ea.png)
-
-
-
- 取坐标差的最大值— |4-0| = 4
-
-
-
-
- 4. 带权平均值
-
![fc52894892105b80970a76563374edf5.png](https://i-blog.csdnimg.cn/blog_migrate/5e23a59dc4680eebced53d32a3d191f7.jpeg)
- 二、KNN算法:
- (一)定义:
- KNN算法又称K近邻算法,是一种有监督学习算法。可以用来处理分类和回归问题。
- (一)定义:
-
- (二)KNN算法的3个基本要素:
- 1. 距离度量,K值选择,决策机制
- 距离一般采用欧式距离
- K值选择直接影响计算结果:
- 过大的K值可能会把对预测结果没有影响的样本点纳入考虑范围,导致分类出错。
- K值过小会让模型敏感,比如选择的最近几个样本点恰好是噪声点,预测就会出错。
- K值选择一般选一个较小的奇数3或者5,取奇数是为了避免平局,尽可能小的取值是为了避免取到噪音值。然后需要采取验证方法来选择最优的K值——网格搜索交叉验证。
- 1. 距离度量,K值选择,决策机制
- (二)KNN算法的3个基本要素:
-
-
-
- 决策机制:分类问题采取投票机制;回归问题使用求均值。
-
-
-
-
- 2. 算法理解:假设有一个样本点A,A点周围有k个距离它最近的邻居样本点,A点的所属类别很大概率就是它的邻居样本点所属的类别。
- 3. 分类问题:这个分类过程是通过距离度量和投票机制来实现的。
- 距离度量:可以采取闵氏距离的3种,常用欧氏距离。
- 投票机制:假设k值取5,即A点周围有5个样本点距离它最近,其中4个属于M类,1个属于N类,投票机制决定A点属于M类。
-
-
-
- 4. 回归问题:
- 回归问题采取取平均值或带权平均值。
- 权重值=1/距离(越靠近样本点的邻居权重就大)
- 4. 回归问题:
-
-
-
- 5. 标准化思考:
- 对于依赖权重的算法,比如线性回归和逻辑回归算法,权重的取值对于模型效果影响极大。如果不对样本数据进行标准化处理,会造成权重值差异增大。
- 因此需要进行标准化或归一化,避免权重差异带来较大的误差。
- 5. 标准化思考:
-
- 三、代码底层实现
- (一)计算原理
- 1. 计算测试数据与训练数据之间的距离
- 2. 对于测试出来的距离进行从小到大的排序
- 3. 选取距离最小的K个值
- 4. 确定前K个点所在类别的出现频
- 5. 根据频率判断测试数据所属的类别
- 缺点:每有一个测试数据都需要计算与训练数据之间的距离,当数据量大的时候,计算量也很大。
- (一)计算原理
-
- (二)优化算法
- 1. 实现方法:
- 蛮力法、球树法(没讲)
- KD树法:
- 二叉树概念:中位数排布,左子树放较小数值,右子树放较大数值。
- 为了提高k近邻搜索效率,考虑使用特殊的结构存储训练数据,以减少计算距离的次数,可以使用kd树 (kd tree)方法。
- kd树分为两个过程:
- 构造kd树(使用特殊结构存储训练集)
- 搜索kd树(减少搜索 计算量)
- 1. 实现方法:
- (二)优化算法