数学之路(3)-机器学习(3)-常用算法-KD树和与KNN

KNN算法是机器学习里面比较简单的一个分类算法了,整体思想比较简单:计算一个点A与其他所有点之间的距离,取出与该点最近的k个点,然后统计这k个点里面所属分类比例最大的,则点A属于该分类。

最邻近结点算法采用向量空间模型来分类,概念为相同类别的案例,彼此的相似度高,而可以借由计算与已知类别案例之相似度,来评估未知类别案例可能的分类。  
目标:分类未知类别案例。  
输入:待分类未知类别案例项目。已知类别案例集合D ,其中包含 j个已知类别的案例。  
输出:项目可能的类别。  
依公式计算 Item 与 D1、D2 … …、Dj 之相似度。得到Sim(Item, D1)、Sim(Item, D2)… …、Sim(Item, Dj)。
将Sim(Item, D1)、Sim(Item, D2)… …、Sim(Item, Dj)排序,若是超过相似度门槛t则放入邻居案例集合NN。自邻居案例集合NN中取出前k名,依多数决,得到Item可能类别。
        关键在于找到 特征空间中两个实例点的距离和反应出两个实例点之间的相似性程度,距离有欧氏距离,马氏距离,余弦相似度等等。

    下面是KD树的算法


数学之路(3)-机器学习(3)-常用算法-KD树和与KNN_第1张图片


按我的 理解,这个算法就是找到中点,也就是统计上中mean或median,然后以这个中点为标准来决定这个点离哪个中点更近
 
至于为什么要有KD村





那是因为样本的特征码很多的情况下,


将样本的每个特征码做为一维


n个特征码形成了N维空间


最后在N维空间中来进行聚类
 
这是无监督学习


就是无样本~


自然得划分~


 target的当前最小距离圈和那个绿点的两个子区域都有相交,如果只进入一个区域,那岂不是有可能漏掉最近邻么?


是怎么样确定没有进入的那个子空间一定没有更近邻的节点的呢?


个人理解


更近邻这个标准是针对当前划分好的群落的中点而言


一个群落


你说这个点离这个群落最近


必须要有一个重心


这个重心就是中点
这就是我对KD树和KNN的理解

你可能感兴趣的:(算法,数学,机器学习)