DS&ML_分类算法笔记之k-近邻、KD-Tree模型

其他相关文章

DS&ML_关联分析笔记
DS&ML_分类算法笔记之支持自动机SVM模型
DS&ML_分类算法笔记之随机森林、梯度提升树、XGBoost模型
DS&ML_降维算法笔记之主成分分析PCA模型
DS&ML_分类算法笔记之朴素贝叶斯模型
DS&ML_聚类算法笔记之k-means模型
DS&ML_分类算法笔记之决策树模型
DS&ML_分类算法笔记之逻辑回归模型

对于k-近邻、KD-Tree模型的相关知识点的总结与整理

简单描述一下k-近邻的思想,KNN是什么?

思想:通过计算每个训练样例到待分类样品(待预测样例)的距离,取和待分类样品距离最近的K个训练样例,K个样品中哪个类别的训练样例占多数,则待分类样品就属于哪个类别(就是一个投票表决的过程 )。

K值的选取:先取一个较小的变量,再交叉验证法选择最优的K(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

数据的必要预处理:消除量纲的影响(避免发生数量级较大的变量有时“决定”距离数量级小的变量被“忽略”的情况)

  • 归一化
    将变量的大小映射到0-1之间:(X-Xmin)/(Xmax-Xmin)
  • 标准化
    变量减去均值再除以标准差:(X-X均值)/std(X)

距离的计算

  • 闵氏距离(由维度裂变为曼哈顿、欧式、切比雪夫距离)
    • 对应Lp范数,p为参数
    • 当维度等于1时候,其公式等价于曼哈顿距离。
    • 维度等于2时候,其公式等价于欧式距离。
    • 当维度大于2到无穷大时候,其公式等价于切比雪夫距离。
      • 切比雪夫距离
      • 欧氏距离只能直线走,而曼哈顿距离只能沿着划定的格子边缘走。而切比雪夫中说的距离则是两者的结合体(即可直线走,也可沿着格子走)。二个点之间的距离定义是其各坐标数值差绝对值的最大值。此距离中,加入了优化的成分,通过最值来定义距离。
  • 欧式距离
    • 度量两点之间的直线距离
    • 对应L2-范数
  • 曼哈顿距离
    • 对应L1-范数
  • 马氏距离

优点

  • 适用于样本容量比较大的分类问题
  • 效率较高
  • 概念简单容易实现,可解释性强
  • 与朴素贝叶斯一样支持“增量式训练”:只需要不断添加新的训练数据而不需要重复训练模型

缺点

  • 对每一个个体的预测都是全局搜索,数据量特别大时计算量也会太大,影响效率
  • 对于样本量分布不均衡的时候,会产生误分(重视多数类而忽视少数类)。
  • 预测需要以来存储的训练数据集,存储成本较高

KD-Tree:高维平衡树–KNN的优化

kd树(K-dimension tree)是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。构造kd树相当于不断地用垂直于坐标轴的超平面将K维空间切分,构成一系列的K维超矩形区域。kd树的每个结点对应于一个k维超矩形区域。利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。(划分方法就是类似二分查找:给出一组数据:[9 1 4 7 2 5 0 3 8],先排序,然后以5为分界点,那么数据集就被划分为了左右两个“簇” [0 1 2 3 4]和[6 7 8 9]。因此,根本久没有必要进入第一个簇,可以直接进入第二个簇进行查找。把二分查找中的数据点换成k维数据点,这样的划分就变成了用超平面对k维空间的划分。空间划分就是对数据点进行分类,“挨得近”的数据点就在一个空间里面。)

核心就是中位数作为根,递归建树

使用KNN在树中查找
  1. 从根节点开始递归查找,若目标点当前维的坐标值小于切分点的坐标值,则移动到左子结点,否则移动到右子结点。直到子结点为叶结点为止

  2. 若到达叶节点则作为当前最优节点

  3. 回溯
    • 若当前节点比当前最优更优,则更新当前最优节点
    • 然后检查以最近距离为半径的圆是否和父节点的超平面相交.如果相交,可能在另一个子结点对应的区域内存在距离目标更近的点,移动到另一个子结点。接着,递归的进行最近邻搜索。如果不相交,向上回退
  4. 当回退到根结点时,搜索结束。最后的“当前最近点”即为x的最近邻点

复杂度O(根号n):一条边延展出去至多会与两个区域相交T(1)=O(1);T(n)=2+2*T(n/4);解出根号n

零碎的一些知识点积累

范数,是具有“长度”概念的函数,是矢量空间内的所有矢量赋予非零的正长度或大小。半范数可以为非零的矢量赋予零长度。

  • 向量范数
    • 1-范数
      向量元素绝对值之和,matlab函数为norm(x,1)
    • 2-范数
      向量各个元素平方和的1/2次方,即向量元素绝对值的平方和再开方。L2范数又称Euclidean范数或者Frobenius范数,matlab函数为norm(x,2)
    • -inf-范数
      所有向量元素绝对值中的最大值,matlab调用函数norm(x, inf)
    • p-范数
      向量元素绝对值的p次方和的1/p次幂,matlab调用函数norm(x, p)

R语言class包:knn函数,k最近邻算法,欧式距离;kknn包,kknn函数,加权k最近邻算法,闵式距离(闵可夫斯基距离)

(Copyright © https://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


visitor tracker
访客追踪插件


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值