一、思维导图:

二、基本概念:

  • kkk 近邻法:是一种基本分类和回归方法。给定一个训练数据集,其中的类别已经确定,对于输入的实例,在训练数据集中找到与该实例最邻近的 kkk 个实例,这 kkk 个实例中多数属于的类别就作为输入实例的类别输出。
  • 最近邻:是 kkk 近邻方法的一种特殊情况,即当k=1k=1k=1时的情形。
  • 显式学习过程:即在学习过程中需要进行加工,kkk 近邻方法不属于显式学习过程。
  • 单元:对于每个训练实例点 xxx,距离该点比其他点更近的所有点组成的一个区域称为单元。
  • 特征空间的一个划分:每个训练实例点都拥有一个单元,所有训练实例点的单元构成对特征空间的一个划分。

三、k近邻算法:

  1. 算法定义:
    输入:训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)}T=\begin{Bmatrix} (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N}) \end{Bmatrix}T={(x1​,y1​),(x2​,y2​),...,(xN​,yN​)​}, 其中,xi∈χ⊆Rnx_{i}\in \chi \subseteq R^{n}xi​∈χ⊆Rn 为实例的特征向量,yi∈γ={c1,c2,...,cK}y_{i}\in \gamma =\begin{Bmatrix} c_{1},c_{2},...,c_{K} \end{Bmatrix}yi​∈γ={c1​,c2​,...,cK​​} 为实例的类别,i=1,2,...,Ni=1,2,...,Ni=1,2,...,N;
    实例特征向量 xxx。
    输出:实例xxx所属的类别yyy。
    (1)根据给定的距离度量,在训练集TTT中找出与xxx最近邻的kkk个点,称涵盖这kkk个点的xxx的邻域记作 Nk(x)N_{k}(x)Nk​(x);
    (2)在这 Nk(x)N_{k}(x)Nk​(x)中根据分类决策规则(如多数表决)决定 xxx 的类别 yyy,规则如下:
    y=argmaxcj∑xi∈Nk(x)I(yi=cj),i=1,2,...,N;j=1,2,...,K.y=arg \: max_{c_{j}}\sum_{x_{i}\in N_{k}(x)} I(y_{i}=c_{j}),\: i=1,2,...,N;j=1,2,...,K.y=argmaxcj​​xi​∈Nk​(x)∑​I(yi​=cj​),i=1,2,...,N;j=1,2,...,K.
    其中,III是指示函数,即当 yi=cjy_{i}=c_{j}yi​=cj​时,III=1,否则 III=0。

四、k近邻模型:

  1. 模型:
    kkk 近邻模型实际上是对特征空间的划分。模型主要有三个基本要素——距离度量、kkk 值的选择、分类决策规则。当这些元素确定之后,实例 xxx的类别就唯一地确定了。这相当于根据要素将特征空间划分为一些子空间,确定子空间里每个点属于的类。
  2. 距离度量:
    前提:特征空间中两个实例点之间的距离就是两个实例点相似程度的反映。使用的距离为欧氏距离或者更为一般的 LpL_{p}Lp​距离。
    ①LpL_{p}Lp​距离:Lp(xi,xj)=(∑l=1n∣xi(l)−xj(l)∣p)1pL_{p}(x_{i},x_{j})=(\sum_{l=1}^{n}\left | x_{i}^{(l)}-x_{j}^{(l)} \right |^p)^\frac{1}{p}Lp​(xi​,xj​)=(l=1∑n​∣∣∣​xi(l)​−xj(l)​∣∣∣​p)p1​ 其中,特征空间 χ\chiχ 是 nnn 维实数向量空间RnR_{n}Rn​,xi,xj∈χ,xi=(xi(1),xi(2),...,xi(n)),xj=(xj(1),xj(2),...,xj(n))x_{i},x_{j}\in \chi,x_{i}=(x_{i}^{(1)},x_{i}^{(2)},...,x_{i}^{(n)}),x_{j}=(x_{j}^{(1)},x_{j}^{(2)},...,x_{j}^{(n)})xi​,xj​∈χ,xi​=(xi(1)​,xi(2)​,...,xi(n)​),xj​=(xj(1)​,xj(2)​,...,xj(n)​)
    ②欧氏距离(当p=2p=2p=2时):
    L2(xi,xj)=(∑l=1n∣xi(l)−xj(l)∣2)12L_{2}(x_{i},x_{j})=(\sum_{l=1}^{n}\left | x_{i}^{(l)}-x_{j}^{(l)} \right |^2)^\frac{1}{2}L2​(xi​,xj​)=(l=1∑n​∣∣∣​xi(l)​−xj(l)​∣∣∣​2)21​
    ③曼哈顿距离(当p=1p=1p=1时):
    L1(xi,xj)=(∑l=1n∣xi(l)−xj(l)∣)L_{1}(x_{i},x_{j})=(\sum_{l=1}^{n}\left | x_{i}^{(l)}-x_{j}^{(l)} \right |)L1​(xi​,xj​)=(l=1∑n​∣∣∣​xi(l)​−xj(l)​∣∣∣​)
    ④各个坐标距离的最大值(当p=∞p=\inftyp=∞时):
    L∞(xi,xj)=maxl∣xi(l)−xj(l)∣L_{\infty}(x_{i},x_{j})=max_{l}\left | x_{i}^{(l)}-x_{j}^{(l)} \right |L∞​(xi​,xj​)=maxl​∣∣∣​xi(l)​−xj(l)​∣∣∣​
  3. kkk 值的选择:
    kkk值的选择会对 kkk近邻法的结果产生重大影响,在应用中,一般会选取比较小的值,通常采用交叉验证法来选取最优的kkk值。
    ①kkk值选取过小,会降低模型的近似误差,但是缺点是估计误差会增大,距离实例点较近的点对预测结果有较大影响,会导致模型过于复杂,还可能产生过拟合问题;
    ②kkk值选取过大,使得模型过于简单,与kkk值选取过小相反,离实例点较远的点会对预测结果产生错误影响。
  4. 分类决策规则:
    分类决策规则往往是多数表决。

五、k近邻法的实现:kd树:

  1. 构造kdkdkd树:
    算法3.2(构造平衡kdkdkd树):
    输入:kkk 维空间数据集 T={x1,x2,...,xN},T=\begin{Bmatrix} x_{1},x_{2},...,x_{N} \end{Bmatrix},T={x1​,x2​,...,xN​​}, 其中xi=(xi(1),xi(2),...,xi(k))T,i=1,2,...,N;x_{i}=(x_{i}^{(1)},x_{i}^{(2)},...,x_{i}^{(k)})^{T},i=1,2,...,N;xi​=(xi(1)​,xi(2)​,...,xi(k)​)T,i=1,2,...,N;
    输出:kdkdkd 树
    (1) 开始:构造根结点,根结点对应包含 TTT 的 kkk 维空间的超矩形区域。
    选择x(1)x^{(1)}x(1)为坐标轴,以 TTT 中所有实例的x(1)x^{(1)}x(1)坐标的中位数为切分点,将根结点对应的超矩形区域分为两个子区域。切分由通过切分点并与坐标轴x(1)x^{(1)}x(1)垂直的超平面实现。
    由根结点生成深度为1的左右子节点;左子结点对应坐标x(1)x^{(1)}x(1)小于切分点的子区域,右结点对应于坐标x(1)x^{(1)}x(1)大于切分点的子区域。
    将落在切分超平面上的实例点保存在根结点。
    (2) 重复:对深度为jjj的结点,选择x(l)x^{(l)}x(l)为切分的坐标轴,其中l=j(modk)+1l=j(mod \: k)+1l=j(modk)+1,以该结点的区域中所有实例的x(l)x^{(l)}x(l) 坐标的中位数为切分点,将该结点对应的超矩形区域切分为两个子区域。切分由通过切分点并与坐标轴x(l)x^{(l)}x(l)垂直的超平面实现。
    由该结点生成深度为j+1j+1j+1的左、右子结点;
    将落在切分超平面上的实例点保存在该结点。
    (3) 直到两个子区域没有实例存在时停止。从而形成kdkdkd树的区域划分。

  2. 搜索kdkdkd树:
    算法3.3(用kdkdkd树的最近邻搜索):
    输入:已构造的kdkdkd树,目标点xxx;
    输出:xxx的最近邻。
    (1)在 kdkdkd 树中找出包含目标点 xxx 的叶节点:从根节点出发,递归地向下访问 kdkdkd 树。若目标点 xxx当前维的坐标小于切分点的坐标,则移动到左子节点,否则移动到右子节点。直到子节点为叶节点为止。
    (2)以此叶节点为“当前最近点”。
    (3)递归地向上回退,在每个节点进行以下操作:
    (a) 如果该节点保存的实例点比当前最近点距离目标点更近,则以该实例点为“当前最近点”。
    (b)当前最近点一定存在于该节点一个子节点对应的区域。检查该子节点的父节点的另一子节点对应的区域是否有更近的点。具体地,检查另一子节点对应的区域是否与以目标点为球心、以目标点与“当前最近点”间的距离为半径的超球体相交。
    如果相交,可能在另一个子节点对应的区域内存在距目标点更近的点,移动到另一子节点。接着,递归地进行最近邻搜索;
    如果不想交,向上回退。
    (4)当回退到根节点时,搜索结束。最后的“当前最近点”即为 xxx 的最近邻点。

03 K近邻法——读书笔记相关推荐

  1. 03 k近邻法——课后习题答案

    答案: k=1时,模型复杂,预测准确率较高: k=2时,模型简单,预测准确率相比于k=1时低. 答案: 答案: 输入:已构造的kdkdkd树,目标点xxx. 输出:x的k近邻. (1)在 kd 树中找 ...

  2. 《统计学习方法》读书笔记——K近邻法(原理+代码实现)

    传送门 <统计学习方法>读书笔记--机器学习常用评价指标 <统计学习方法>读书笔记--感知机(原理+代码实现) <统计学习方法>读书笔记--K近邻法(原理+代码实现 ...

  3. 构建之法读书笔记03

    构建之法读书笔记03 阅读之前:   我发现这本书我越往后读越是后期软件方面的东西,好多东西因为我之前没有接触过软件,所以都变得晦涩难懂,但是大体意思我也应该明白.我知道微软但是不曾设想过他的工作体系 ...

  4. 机器学习理论《统计学习方法》学习笔记:第三章 k近邻法

    机器学习理论<统计学习方法>学习笔记:第三章 k近邻法 3 k近邻法 3.1 K近邻算法 3.2 K近邻模型 3.2.1 模型 3.2.2 距离度量 3.2.3 K值的选择 3.2.4 分 ...

  5. 《统计学习方法》学习笔记(4)--k近邻法及常用的距离(or 相似度)度量

    一.k近邻法基础知识 1. 特征空间中两个实例点的距离反应了两个实例点的相似程度. 2. k近邻模型三要素 = 距离度量(有不同的距离度量所确定的最邻近点不同)+k值的选择(应用中,k值一般取一个比较 ...

  6. 统计学习笔记(3)——k近邻法与kd树

    在使用k近邻法进行分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决的方式进行预测.由于k近邻模型的特征空间一般是n维实数向量,所以距离的计算通常采用的是欧式距离.关键的是k值的选取, ...

  7. 统计学习方法笔记(李航)———第三章(k近邻法)

    k 近邻法 (k-NN) 是一种基于实例的学习方法,无法转化为对参数空间的搜索问题(参数最优化 问题).它的特点是对特征空间进行搜索.除了k近邻法,本章还对以下几个问题进行较深入的讨 论: 切比雪夫距 ...

  8. 【机器学习】《统计学习方法》学习笔记 第三章 k近邻法

    第三章 k k k 近邻法(KNN) 多分类模型,思路是将最近的 N N N 个邻居的分类值中的多数作为自己的分类值.没有显式的学习过程. 三个基本要素:距离度量. k k k 值选择和分类决策规则. ...

  9. 复现经典:《统计学习方法》第 3 章 k 近邻法

    本文是李航老师的<统计学习方法>[1]一书的代码复现. 作者:黄海广[2] 备注:代码都可以在github[3]中下载. 我将陆续将代码发布在公众号"机器学习初学者", ...

最新文章

  1. react 监听组合键_投资组合中需要的5个React项目
  2. 数据库从表中随机选择一行数据
  3. matlab java错误_Matlab启动时大量java错误的处理方法
  4. ubuntu安装vmware(支持mac)与卸载
  5. python中静态方法可以访问对象变量_python 面向对象-实例变量、类变量、实例方法、类方法、静态方法...
  6. Exchange Powershell查看用户最后登陆邮箱时间
  7. 图解面试题:找出数组中重复的数字?
  8. 编写并调试一个单道处理系统的作业调度模拟程序_操作系统系列(2):操作系统发展历史...
  9. Open Graph Protocol(开放内容协议)
  10. 计算机组成原理复习笔记
  11. 通过追女孩时的常见对话来看你会不会聊天
  12. BZOJ 4399 魔法少女LJJ(线段树合并)
  13. 真菌元胞自动机Python实现
  14. M - Help Hanzo (大数区间素数筛)
  15. AFNetworking为什会请求不到数据
  16. 统计专业人数。本题要求实现一个函数,统计学生学号链表中专业为计算机的学生人数。
  17. ES6 入门—ES6 解构赋值
  18. Android自定义日期区间选择,类似12306酒店入住的日期选择
  19. 国家大地2000坐标 4547范围 坐标值相关
  20. 数据库应用——MySQL函数

热门文章

  1. NYOJ 擅长排列的小明 酒馆浪人的博客
  2. 大一新生学计算机用买电脑吗,大学一年级就买电脑合适吗?
  3. 详解事件代理(事件委托)以及应用场景
  4. 自己实现fmod函数
  5. Charles使用技巧
  6. 李诞池子的幽默工具箱
  7. 52周存钱挑战4.0
  8. HCIE--MAC,ARPSTP
  9. 解决MySql 1045 Access denied for user ‘root‘@‘localhost‘ (using password: YES)
  10. 解决LinuxMysql1045错误ERROR 1045 (28000): Accessdenied for user ‘root‘@‘localhost‘ (using password: YES)