码迷,mamicode.com
首页 > 其他好文 > 详细

clustering and retrival: week 2 笔记

时间:2018-03-29 13:27:23      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:个数   矩形区域   也会   类别   根据   span   error   笔记   复杂   

华盛顿大学 《机器学习》 笔记。

 

knn

  k-nearest-neighbors : k近邻法

  给定一个 数据集,对于查询的实例,在数据集中找到与这个实例最邻近的k个实例,然后再根据k个最邻近点预测查询实例的类别。

  《统计学习方法》中这样描述的:

    技术分享图片

    技术分享图片

 

  K近邻模型是基于训练数据集 对 特征空间的一个划分。

    技术分享图片

  当k =1 ,为一种特殊情况,称为最邻近法。

  Knn算法实现的三个重要问题: 距离度量选择、k值选择,分类决策方法。

 

   1. 距离度量选择

  常用的距离度量有欧式距离、曼哈顿距离等。

  技术分享图片

  《统计学习方法》中对距离度量总结:

  技术分享图片

 

  2. K值选择

  K过小,预测结果对邻近的实例点十分敏感,容易发生过拟合。

  K过大,估计误差(estimation error)可以减小,但近似误差(approximation error)增大,与实例点隔得很远的训练实例也会对预测起作用。

  k值一般由交叉验证(cross validation)决定。

 

  3.分类决策方法

  即找到k个最邻近点后,如何得出最后的输出结果。对于分类问题,往往采用多数表决

  《统计学习方法》:

    技术分享图片

 

kd树

  实现knn算法时,一个主要的问题是如何对数据集快速搜索。其中,暴力搜索复杂度O(Nlogk),使用特殊的数据结构可以提高搜索效率。

  Kd树是二叉树,表示对k维空间(k是特征的数量)的一个划分。Kd树是一种存储数据集的方式,以便于进行快速搜索。构造kd树相当于不断地用垂直于坐标轴的超平面将k维空间切分,构造成一系列的k维超矩形区域,kd树的每个结点对应于一个k维超矩形区域(《统计学习方法》)。

  

 Kd树的构造方式:以2维空间为例(2个特征)。

  输入数据集,输出kd树。特征为x = (x[1], x[2])

  开始:根节点为包含整个数据集的矩形区域(如下图所示)。以 feature 1 为切割特征,将整个区域切割成两个子空间,生成两个子节点。

  技术分享图片技术分享图片

   对每个子区域递归,重复切分。直到子区域中包含的数据点少于设定的临界值为止。

    技术分享图片 技术分享图片

 给定一个查询点,搜素其近邻点的方法:

  从根节点出发,根据查询点的特征值找到包含查询点的叶子节点,在叶子节点里搜索。

    技术分享图片

  之后再回溯到父节点,在父节点的其他子节点中搜索,这样搜索范围被限制在数据集空间的局部区域,提高搜索效率。

    技术分享图片

 复杂度:

  构造二叉树的复杂度:

      size: 如果每个叶节点只包含1个数据点,一共2N-1个节点。

    depth: O(log N)

    构造时间:O(N log N)

  查询复杂度:

    找到叶子节点: O ( log N)

    回溯到父节点以及移动到另一个子节点搜素最大花费: O(N)

    复杂度   O ( log N) --> O(N)

   (N 为训练集数据点总数)

  注:通过一些剪枝和优化,查询时间复杂度非常接近O(logN),kd树适用于低维空间(特征数较少)的情况,维度较高时接近暴力搜索方法。

    对于高维情况,kd树就不是很适用了,可以使用 LSH(locality sensitive hashing )。

clustering and retrival: week 2 笔记

标签:个数   矩形区域   也会   类别   根据   span   error   笔记   复杂   

原文地址:https://www.cnblogs.com/smartweed/p/8669119.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!