做阿里云网站的公司吗wordpress响应式按钮
news/
2025/10/6 7:35:56/
文章来源:
做阿里云网站的公司吗,wordpress响应式按钮,网站建设方案ppt模板,广州网站维护本系列文章md笔记#xff08;已分享#xff09;主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习#xff0c;伴随浅显易懂的数学知识#xff0c;让大家掌握机器学习常见算法原理#xff0c;应用Scikit-learn实现机器学习算法的应用#xff0…
本系列文章md笔记已分享主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习伴随浅显易懂的数学知识让大家掌握机器学习常见算法原理应用Scikit-learn实现机器学习算法的应用结合场景解决实际问题。包括K-近邻算法线性回归逻辑回归决策树算法集成学习聚类算法。K-近邻算法的距离公式应用LinearRegression或SGDRegressor实现回归预测应用LogisticRegression实现逻辑回归预测应用DecisionTreeClassifier实现决策树分类应用RandomForestClassifie实现随机森林算法应用Kmeans实现聚类任务。
全套笔记和代码自取移步gitee仓库 gitee仓库获取完整文档和代码
感兴趣的小伙伴可以自取哦欢迎大家点赞转发~ 共 7 章44 子模块 K-近邻算法
学习目标
掌握K-近邻算法实现过程知道K-近邻算法的距离公式知道K-近邻算法的超参数K值以及取值问题知道kd树实现搜索的过程应用KNeighborsClassifier实现分类知道K-近邻算法的优缺点知道交叉验证实现过程知道超参数搜索过程应用GridSearchCV实现算法参数的调优
1.5 kd树
问题导入
实现k近邻法时主要考虑的问题是如何对训练数据进行快速k近邻搜索。
这在特征空间的维数大及训练数据容量大时尤其必要。
k近邻法最简单的实现是线性扫描穷举搜索即要计算输入实例与每一个训练实例的距离。计算并存储好以后再查找K近邻。当训练集很大时计算非常耗时。
为了提高kNN搜索的效率可以考虑使用特殊的结构存储训练数据以减小计算距离的次数。 1 kd树简介
1.1 什么是kd树
根据KNN每次需要预测一个点时我们都需要计算训练数据集里每个点到这个点的距离然后选出距离最近的k个点进行投票。当数据集很大时这个计算成本非常高针对N个样本D个特征的数据集其算法复杂度为ODN^2。
kd树为了避免每次都重新计算一遍距离算法会把距离信息保存在一棵树里这样在计算之前从树里查询距离信息尽量避免重新计算。其基本原理是如果A和B距离很远B和C距离很近那么A和C的距离也很远。有了这个信息就可以在合适的时候跳过距离远的点。
这样优化后的算法复杂度可降低到ODNlogN。感兴趣的读者可参阅论文BentleyJ.L.Communications of the ACM1975。
1989年另外一种称为Ball Tree的算法在kd Tree的基础上对性能进一步进行了优化。感兴趣的读者可以搜索Five balltree construction algorithms来了解详细的算法信息。
1.2 原理 黄色的点作为根节点上面的点归左子树下面的点归右子树接下来再不断地划分分割的那条线叫做分割超平面splitting hyperplane在一维中是一个点二维中是线三维的是面。 黄色节点就是Root节点下一层是红色再下一层是绿色再下一层是蓝色。 1.树的建立
2.最近邻域搜索Nearest-Neighbor Lookup
kd树(K-dimension tree)是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。kd树是一种二叉树表示对k维空间的一个划分构造kd树相当于不断地用垂直于坐标轴的超平面将K维空间切分构成一系列的K维超矩形区域。kd树的每个结点对应于一个k维超矩形区域。利用kd树可以省去对大部分数据点的搜索从而减少搜索的计算量。 类比“二分查找”给出一组数据[9 1 4 7 2 5 0 3 8]要查找8。如果挨个查找线性扫描那么将会把数据集都遍历一遍。而如果排一下序那数据集就变成了[0 1 2 3 4 5 6 7 8 9]按前一种方式我们进行了很多没有必要的查找现在如果我们以5为分界点那么数据集就被划分为了左右两个“簇” [0 1 2 3 4]和[6 7 8 9]。
因此根本就没有必要进入第一个簇可以直接进入第二个簇进行查找。把二分查找中的数据点换成k维数据点这样的划分就变成了用超平面对k维空间的划分。空间划分就是对数据点进行分类“挨得近”的数据点就在一个空间里面。
2 构造方法
1构造根结点使根结点对应于K维空间中包含所有实例点的超矩形区域
2通过递归的方法不断地对k维空间进行切分生成子结点。在超矩形区域上选择一个坐标轴和在此坐标轴上的一个切分点确定一个超平面这个超平面通过选定的切分点并垂直于选定的坐标轴将当前超矩形区域切分为左右两个子区域子结点这时实例被分到两个子区域。
3上述过程直到子区域内没有实例时终止终止时的结点为叶结点。在此过程中将实例保存在相应的结点上。
4通常循环的选择坐标轴对空间切分选择训练实例点在坐标轴上的中位数为切分点这样得到的kd树是平衡的平衡二叉树它是一棵空树或其左子树和右子树的深度之差的绝对值不超过1且它的左子树和右子树都是平衡二叉树。
KD树中每个节点是一个向量和二叉树按照数的大小划分不同的是KD树每层需要选定向量中的某一维然后根据这一维按左小右大的方式划分数据。在构建KD树时关键需要解决2个问题
1选择向量的哪一维进行划分
2如何划分数据
第一个问题简单的解决方法可以是随机选择某一维或按顺序选择但是更好的方法应该是在数据比较分散的那一维进行划分分散的程度可以根据方差来衡量。好的划分方法可以使构建的树比较平衡可以每次选择中位数来进行划分这样问题2也得到了解决。
3 案例分析
3.1 树的建立
给定一个二维空间数据集T{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)}构造一个平衡kd树。 1思路引导
根结点对应包含数据集T的矩形选择x(1)轴6个数据点的x(1)坐标中位数是6这里选最接近的(7,2)点以平面x(1)7将空间分为左、右两个子矩形子结点接着左矩形以x(2)4分为两个子矩形左矩形中{(2,3),(5,4),(4,7)}点的x(2)坐标中位数正好为4右矩形以x(2)6分为两个子矩形如此递归最后得到如下图所示的特征空间划分和kd树。 3.2 最近领域的搜索
假设标记为星星的点是 test point 绿色的点是找到的近似点在回溯过程中需要用到一个队列存储需要回溯的点在判断其他子节点空间中是否有可能有距离查询点更近的数据点时做法是以查询点为圆心以当前的最近距离为半径画圆这个圆称为候选超球candidate hypersphere如果圆与回溯点的轴相交则需要将轴另一边的节点都放到回溯队列里面来。 样本集{(2,3),(5,4), (9,6), (4,7), (8,1), (7,2)}
3.2.1 查找点(2.1,3.1) 在(7,2)点测试到达(5,4)在(5,4)点测试到达(2,3)然后search_path中的结点为(7,2),(5,4), (2,3)从search_path中取出(2,3)作为当前最佳结点nearest, dist为0.141
然后回溯至(5,4)以(2.1,3.1)为圆心以dist0.141为半径画一个圆并不和超平面y4相交如上图所以不必跳到结点(5,4)的右子空间去搜索因为右子空间中不可能有更近样本点了。
于是再回溯至(7,2)同理以(2.1,3.1)为圆心以dist0.141为半径画一个圆并不和超平面x7相交所以也不用跳到结点(7,2)的右子空间去搜索。
至此search_path为空结束整个搜索返回nearest(2,3)作为(2.1,3.1)的最近邻点最近距离为0.141。
3.2.2 查找点(2,4.5) 在(7,2)处测试到达(5,4)在(5,4)处测试到达(4,7)【优先选择在本域搜索】然后search_path中的结点为(7,2),(5,4), (4,7)从search_path中取出(4,7)作为当前最佳结点nearest, dist为3.202
然后回溯至(5,4)以(2,4.5)为圆心以dist3.202为半径画一个圆与超平面y4相交所以需要跳到(5,4)的左子空间去搜索。所以要将(2,3)加入到search_path中现在search_path中的结点为(7,2),(2, 3)另外(5,4)与(2,4.5)的距离为3.04 dist 3.202所以将(5,4)赋给nearest并且dist3.04。
回溯至(2,3)(2,3)是叶子节点直接平判断(2,3)是否离(2,4.5)更近计算得到距离为1.5所以nearest更新为(2,3)dist更新为(1.5)
回溯至(7,2)同理以(2,4.5)为圆心以dist1.5为半径画一个圆并不和超平面x7相交, 所以不用跳到结点(7,2)的右子空间去搜索。
至此search_path为空结束整个搜索返回nearest(2,3)作为(2,4.5)的最近邻点最近距离为1.5。
4 总结
首先通过二叉树搜索比较待查询节点和分裂节点的分裂维的值小于等于就进入左子树分支大于就进入右子树分支直到叶子结点顺着“搜索路径”很快能找到最近邻的近似点也就是与待查询点处于同一个子空间的叶子结点
然后再回溯搜索路径并判断搜索路径上的结点的其他子结点空间中是否可能有距离查询点更近的数据点如果有可能则需要跳到其他子结点空间中去搜索将其他子结点加入到搜索路径。
重复这个过程直到搜索路径为空。
未完待续 同学们请等待下一期
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929063.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!