读书笔记 - 机器学习(Cornell) - 第16节 KD树

本文介绍了机器学习中的两种空间划分方法:KD树和球状树。KD树通过特征空间划分来加速k-NN算法,而球状树利用超球面边界进行数据组织,尤其适用于数据呈低维流形分布的情况。在高维数据中,球状树通常表现优于KD树。
摘要由CSDN通过智能技术生成

第16节 KD树


KD Trees


%matplotlib inline

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.patches import Circle
from sklearn.neighbors import KDTree, BallTree

k-NN算法时间复杂度(Time Complexity of k-NN)

考虑 d d d维空间

训练时:k-NN记录每个数据样本的标签,易知再添加一个数据样本的时间复杂度为 O ( d ) O(d) O(d)

测试时:需要计算新数据样本与所有训练数据样本间的距离。

n n n表示训练数据样本数,则训练时间复杂度为 O ( d n ) O(dn) O(dn);分类测试样本时间复杂度也为 O ( d n ) O(dn) O(dn)

为提高精度,需要增大的训练数据集规模( n ≫ 0 n \gg 0 n0),这严重制约测试阶段性能。

目标:使k-NN在测试阶段更快。

KD树(k-dimensional Trees)

KD树的核心在于划分特征空间(partition feature space)。由于大部分数据样本所处分区位于 k k k个最近邻样本之外,因此可不予考虑。

  • 划分方法:

(1)将数据沿某一特征分成两个分区;

(2)记录每个训练样本所处分区。

  • 测试阶段,考虑最近邻情况:

(1)识别测试样本 x t x_t xt所处分区;

(2)查找该分区内 x t x_t xt的最近邻样本(nearest neighbor) x N N x_{NN} xNN

(3)计算 x t x_t xt与分区边界的距离 d w d_w dw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值