KNN

核心思想:一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这类别上样本的特性。KNN算法的结果很大程度上取决于K的选择。

算法的三要素:1,K值得选择;2,距离度量的方式;3,分类决策规则

K值的选择:没有一个固定的经验,一般根据样本的分布,选择一个较小的值,可以通过交叉验证选择一个合适的K值。选择较小的K值:就相当于用较小的领域中的训练实例进行预测,训练误差会减小,容易发生过拟合。选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减小泛化误差,但缺点是训练误差会增大。

度量方式:一般选择欧氏距离

分类决策规则:分类:多数表决法;回归:平均值。

KD树

KD树建树采用的是用从m个样本的n维特征中,分别计算n各特征的取值的方差,用方差最大的第k维特征nk来作为根节点。选择特征nk的取值的中位数nkv对应的样本作为划分点,对于所有第k为特征的取值小于nkv的样本,划入左子树,对于第k为特征的取值大于等于nkv的样本,划入右子树,对于左子树和右子树,采用和刚才同样的办法找到方差做大的特征来做更节点,递归的生成KD树。

eg:

二位样本6个,{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},构建kd树的具体步骤:

1,找到划分的特征。6个数据点在x,y维度上的数据方差分别为6.97,5,37,所以在x轴上方差更大,用第一维特征建树。

2,确定划分点(7,2)。根据x维上的值将数据排序,6个数据的种植(所谓中值,即中间大小的值)为7,所以划分点的数据是(7,2).这样,该节点的分割超平面就是通过(7,2)并垂直于:划分点维度的直线x=7;

3,确定左子空间和右子空间。分割超平面x=7将整个空间分为两个部分:想x<=7的部分为座子空间,包含3个节点={(2,3),(5,4),(4,7)};另一部分为右子空间,包含2个节点={(9,6),(8,1)}

4,用同样的办法划分左子树的节点{(2,3),(5,4),(4,7)}和右子树的节点{(9,6),(8,1)}。最终得到KD树。

 

KD树搜索最近邻

首先在KD树里面找到包含目标点的叶子节点。以目标点为圆心,以目标点到叶子节点样本实例的距离为半径,得到一个超球体,最近邻的点一定在这个超球体内部。然后返回叶子节点的父节点,检查另一个叶子节点包含的超矩形体是否和超球体相交,如果相交就到这个子节点寻找是否有更近的近邻,有就更新最近邻。如果不想交那就直接返回父节点,在另一个子树继续搜索最近邻。当回溯到根节点时,算法结束,保存UI近邻接点就是最终的近邻。

球树:分割块都是超球体

1,先构建一个超球体,这个超球体可以办函所有样本的最小球体。

2,从球中选择一个离球的中心最远的点,然后选择第二个点离第一个点最远,将求中所有的点都分配到离这两个聚类中心最近的一个上,然后计算每个聚类中心,以及聚类能够包含它所有数据点所需的最小半径,这样可以得到两个字超球体和KD树里面的左右子树对应。

3,对于这两个超球体,递归执行条件2,最终得到一个球树。

球树搜索最近邻

使用区属给定目标点的最近邻方法是首先自上而下贯穿整个树找出包含,目标点锁子啊的叶子,并在这个球里找出与目标最近邻的点,将确定出目标点距离它的最近邻的一个上限值,然后跟查找KD树一样,检查星弟节点,如果目标点到兄弟节点中心的距离超过兄弟节点的半径与当前的上限值之和,那么兄弟节点里不可能存在一个更接近的点;否则必须进一步检查位于兄弟节点以下的子树。检查完兄弟节点后,我们向度节点回溯,继续搜索最小近邻值,当回溯到根节点时,最小近邻值就是最终搜索的结果。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值