knn基础与优化1--kd-tree

KNNKNN(K-Nearest Neighbours),k最近邻算法,是一个基于距离的有监督算法,常被用于分类问题的算法,它也可以用于回归问题。所谓k最近邻,就是k个最近的邻居的意思,说的是每个数据点都可以用它最接近的k个邻居数据点来代表。当用于分类时,用k个最近邻居所属类别的多数做预测结果;当用于回归时,用k个最近邻居对应标签的平均值来表示预测结果。knn算法虽然简单,但在数据量较大时,效果还是相当不错的。注意事项:k值的选取:k值是需要预先设定的;选小了(极端k=1),数据噪音将会对结果有
摘要由CSDN通过智能技术生成

KNN

KNN(K-Nearest Neighbours),k最近邻算法,是一个基于距离的有监督算法,常被用于分类问题的算法,它也可以用于回归问题。所谓k最近邻,就是k个最近的邻居的意思,说的是每个数据点都可以用它最接近的k个邻居数据点来代表。当用于分类时,用k个最近邻居所属类别的多数做预测结果;当用于回归时,用k个最近邻居对应标签的平均值来表示预测结果。knn算法虽然简单,但在数据量较大时,效果还是相当不错的。

注意事项:

  • k值的选取:k值是需要预先设定的;选小了(极端k=1),数据噪音将会对结果有很大的影响,容易欠拟合;选大了,则预测耗时会很大;实际应用是需要折中效果和耗时进行考虑。
  • 样本数量:很明显,在应用knn进行分类时,需要注意各类别样本数量都不要太少、而导致小样本类别的数据很容易被淹没了,否则k个最近邻居基本都不会属于小样本类别,对效果会有很大影响;在这种情况下,可以考虑对样本进行加权,来缓解样本不均衡的问题。

虽然knn可以暴力实现,就是每预测一个样本,就计算其与每个训练样本的距离,找到k个最近邻居,但复杂度O(nd)太高,为了提高kNN搜索的效率、加快预测时的速度,可以考虑使用特殊的结构存储训练数据、通过一定规则过滤掉不可能是k近邻的点,以减少计算距离的次数,便出现了kd-tree与ball-tree。

kd-tree

kd-tree (K-dimension tree) 是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。kd-tree是一种二叉搜索树,树节点的分裂表示着使用贴着坐标轴的超平面把数据空间切割成两个子空间,不断分裂直至节点中包含数据点数小于一定的数量,分裂停止,kd-tree构造完成,最终数据空间被切成了一个个超矩形子空间,如下图所示。kd树的每个结点对应于一个超矩形空间区域,每个非叶子节点都在分割超平面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值