您的位置:首页 > 其它

统计学习-3

2013-10-07 14:58 302 查看
统计学习
    本次我们对另外一种基本分类与回归方法加以讨论,k近邻法。k近邻法的输入为实例的特征向量,对应特征向量的点;输出为实例的类别,可以取多类。本篇将对k近邻的算法思想,模型已经实现方法—kd树加以分析。

    k近邻法的思想很简单,在一个给定的训练集中,对于一个新的输入实例,找出与该实例最临近的k个实例,这k个实例多数属于某个类,就把该输入实例分为这个类。具体方法为,对于训练数据集T={(x1,y1),(x2,y2), ...,(xN,yN)},xi为实例的特征向量,y2为实例类别,属于{c1,c2,
...,ck}。输入一个实例x,根据给定的距离度量,在训练集T中找到与x最近邻的k个点,涵盖这k个点的邻域记作Nk(x)。在Nk(x)中根据分类决策规则,决定x的类别y,如多数表决规则:

y=argmax∑ I(yi=cj)
其中I为指示函数,当 yi=cj时,I为1,否则为0。当k=1时,k近邻算法特殊化为最临近算法,对于输入实例点的特征向量x,最近邻法将训练数据集中的与x最临近的点的类最为x的类。

    k近邻法的模型实际对应着特征空间的划分,模型由三个基本要素决定,距离度量,k值的选择,分类决策规则。

    特征空间中两个实例点的距离是对这两个实例相似度的反映,但由不同的距离距离所确定的最近邻点是不同的。通常特征空间是n维实数向量空间Rn,使用的距离可以采用欧氏距离,或采用更为一般的Lp距离或Minkowski距离。

    k值的选取会对k近邻法的结果产生重大影响。若选取较小的k值,相当于用较小邻域中的训练实例进行预测,因为只有与输入实例较近的训练实例才会对预测结果起作用,学习的近似误差会减少。但同样的,也会造成学习的估计误差增大,因为预测结果对近邻的少数实例点非常敏感,当临近的实例点是噪声时,预测结果就会出错。也就是说,k值的减少,将导致整体模型变得复杂,容易发生过拟合。若选取较大的k值,相当于用较大邻域中的训练实例进行预测,这将会减小学习的估计误差,但会增大学习的近似误差,因为与输入实例距离较远的训练实例,也会对预测结果产生作用,造成偏差。k值的增大,意味着模型的简单化,模型过于简单将会导致忽略训练实例中的部分有用信息,降低准确性。在实际应用中,可以先选择较小的k值,然后采用交叉验证法来确定最优k值。

    在k近邻法中的分类决策规则通常采用的是多数表决,即由输入实例的k个邻近训练实例中的多数所属类来决定输入实例的所属类。可以证明多数表决规则等价于经验风险最小化。

    在实现k近邻法时,着重要考虑的是如何对训练数据进行快速k近邻搜索,这在特征空间高维数及训练数据量大时尤为重要。最为容易实现的是线性搜索,依次计算输入实例与每个训练实例的距离,但当数据量增大时,极为耗时。为提高搜索效率,可以使用结构存储训练数据,以减少计算量,kd树是一种较为常用的方法。kd树是为了完成对k维空间中实例点存储以便快速检索而设计的树形结构。kd树为二叉树,表示对k维空间的切分,构造kd树相当与用垂直于坐标轴的超平面,将特征空间进行分割为子超矩形区域,kd树的每个结点对应一个子超矩形区域。具体构造方法为,构造根结点对应于k维空间中包含所有实例的超矩形区域,然后采用递归方法,不断对k维空间进行切分,生成子结点。在超矩形区域中选取一个坐标轴及在此坐标轴上的一个切分点,确定一个通过该切分点并垂直于选定坐标轴的超平面,将当前超矩形区域切分为两个子区域,此时实例被分在两个子区域内,重复这个过程直至子区域内没有实例,在这个过程中,将落在切分超平面上的实例保存在相应的结点上。通常选择训练实例在选定坐标轴上的中位数作为切分点,这样的kd树较为平衡。

    讨论了如何建立kd树以后,我们接下来对kd树的搜索方法进行分析。给定一个目标点,搜索其最邻近,首先找到包含目标点的叶结点,然后从该叶结点出发,依次回退到父结点,不断查找与目标点最邻近的结点,当确定不可能存在更近的结点时终止,利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。具体实现方法为,在kd树中找到包含目标点x的叶结点:从根结点出发,递归地向下访问kd树,若目标点x当前维的坐标小于切分点的坐标,则移动到左子结点,否则移动到右子结点,直到子结点为叶结点为止。以此结点为当前最近点。递归向上回退,在每个结点进行如下操作:如果该结点保存的实例点比当前最近点距离目标点更近,则以该实例点为当前最近点。当前最近点一定存在于该结点一个子结点对应的区域,检查该子结点的兄弟结点对应区域是否存在更近的点,判断方法为检查另一个子结点对应的区域是否与以目标点为球心,以目标点到当前目标点间的距离为半径的超球体相交,如果相交,则说明可能在另一子结点对伊不能个的区域内存在距目标点更近的点,移动到另一个子结点,接着递归进行最近临搜索。若不相交则向上回退,当回退到根结点时,搜索结束,最后的当前最近点即为x的最近邻点。

    若实例点为随机分布的,kd数的搜索的平均时间复杂度为O(logN),N为训练实例数,kd数适用于训练实例数远大与空间维数时的k近邻搜索,当空间维数接近实例数是,效率迅速下降,几乎接近于线性扫描。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习 统计学
相关文章推荐