机器学习--分类算法--KNN算法理论

本篇内容参考《百面机器学习》《统计学习方法》

1 KNN算法原理

  • 从训练集中获取K个离待预测样本最近的数据样本
  • 根据获取得到的K个样本数据预测当前待预测样本的目标属性(分类与回归的目标属性)

2 KNN算法中最重要的三个影响因素

1)K值的选择

一般而言,依据样本分布选择一组K值,通过交叉验证的方式,选择合适的K值

2)距离的度量

一般采用欧式距离

3)决策规则

  • 针对分类问题,采用多数表决法或者加权多数表决法
  • 针对回归问题,采用平均值法或者加权平均值法

注意:加权的实现,一般采用距离和权重成反比的方式,即距离倒数的归一化操作

3 KNN算法的实现方式

KNN算法中最点是找出K个最近邻的点

1)暴力实现

计算待预测样本点到训练集所有的样本点的距离,然后选择距离最小的K个样本点作为K近邻

当样本数据很多的时候,算法执行效率太低,是其最大的缺点

2)KD-Tree实现

KD-Tree构建(方差最大)

  • 第一步:计算m个数据中n个特征的方差,把方差最大的第k个特征n_{k}作为根节点,n_{k}的中位数n_{kv}作为样本的划分点
  • 第二步:小于n_{kv}的样本划分到左子树,大于n_{kv}的样本划分到右子树
  • 第三步:对于左右子树同样采用方差最大方式,递归产生KD-Tree

KD-tree搜索最近邻(超球体与超矩形体相交)

  • 第一步:找到KD-Tree中包含待预测样本点的叶子节点,以目标点到该叶子节点中样本的最小距离为半径得到超球体
  • 第二步:返回父节点,超球体是否与另一子节点的超矩形体相交,相交情况下,在该子结点中的样本寻找距离最近的样本点,更新最近邻点,不相交的话,返回父节点的父节点,执行相同操作
  • 第三步:返回根节点,算法结束
发布了5 篇原创文章 · 获赞 0 · 访问量 88

猜你喜欢

转载自blog.csdn.net/weixin_35733800/article/details/105087735