KD树算法是先对数据集进行建模,然后搜索最近邻,最后一步是预测。
KD树中的K指的是样本特征的维数。
一、KD树的建立
m个样本n维特征,计算n个特征的方差,取方差最大的第k维特征作为根节点。选择第k维特征的中位数作为切分点,小于中位数的放左子树,大于中位数的放右子树,递归生成。
举例
有二维样本6个,{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)}:
1、找根节点,6个数据点在x、y维度上的方差分别是6.97,5.37,x维度方差最大,因此选择x维进行键树;
2、找切分点,x维中位数是(7,2),因此以这个点的x维度的取值进行划分;
3、x=7将空间分为左右两个部分,然后递归使用此方法,最后结果为:
二、搜索最近邻
kd树生成之后就可以预测测试集里的目标样本了。
首先找到包含目标样本的