zoukankan      html  css  js  c++  java
  • k-Nearest Neighbors(k近邻算法)

    内容总结自花书《deep learning》Chapter5,由英文版翻译而来,英文版可以在其官网免费查阅。同时博主也发明中文翻译版的诸多错误和不细致的地方,建议阅读英文版。

    k-Nearst Neighbors(k近邻算法)

    近邻回归算法(nearest neighbor regression)模型简单地存储来自训练集的 X pmb{X} XXX y pmb{y} yyy,当被要求分类一个测试点时,模型查询训练集中与该点最近的项并且返回相关的目标(即label)。换句话说, y ^ = y i hat{y}=y_i y^=yi i = a r g m i n ∣ ∣ X i , : − x ∣ ∣ 2 2 i=argmin||pmb{X_{i,:}-x}||_2^2 i=argminXi,:xXi,:xXi,:x22。算法也可以泛化到使用除 L 2 L^2 L2范数之外其他距离度量。如果该算法被允许通过平均 X i ; : X_{i;:} Xi;: 中所有邻近的向量对应的 y i y_i yi来打破必须是最近的关联,那么该算法会在任意回归数据集上达到最小的可能的训练误差(如果存在两个相同的输入对应不同的输出,训练误差有可能会大于0)。

    更一般的,k-nearest neighbors是一类可以被应用于分类或者回归的技术。作为一个非参数学习算法,k-nearest neighbors不受限于固定数量的参数。我们通常认为k-nearest neighbors算法没有任何参数,而是实现了一个训练数据的简单函数。事实上,甚至不需要一个训练阶段或者学习过程。取而代之的是,在测试时,当我们需要为一个新的测试输入 x pmb{x} xxx产生一个输出 y y y时,我们在训练集中找到k个与 x pmb{x} xxx最近的邻居,返回它们对应的 k k k y y y的平均值。这基本上对任何种类的能在 y y y值上取平均的监督算法都有效。

    作为一个非参数学习算法,k-nearest neighbors能够实现非常高的容量(capacity)。例如,我们有一个多分类任务,使用0-1损失函数来衡量性能。在这样的设定下,1-nearest neighbor在训练样本接近无穷大时收敛到2倍贝叶斯误差。多出来的贝叶斯误差来自随机在两个距离相同的邻居里选一个。当有无穷多训练数据时,所有测试点 x pmb{x} xxx都会有无穷多邻接距离为0。如果算法被允许在这些邻居上投票,而不是随机选择一个,则该过程会收敛到贝叶斯误差率。k-nearest neighbors的高容量使我们在给定一个大型训练集能够取得高准确度。它以高计算量实现这点,然而,给定一个小的有限的数据集,它会泛化得很差。

    k-nearest neighbors的一个缺点是它不能学习到一个特征比另一个特征更有判别性。
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    关于JSON可能出现的错误,待更/todo
    mongoose的安装与使用(书签记录) 2017
    HTTP的学习记录3--HTTPS和HTTP
    HTTP的学习记录(二)头部
    HTTP(一)概述
    LeetCode 455. Assign Cookies
    LeetCode 453. Minimum Moves to Equal Array Elements
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode 447. Number of Boomerangs
    LeetCode 416. Partition Equal Subset Sum
  • 原文地址:https://www.cnblogs.com/wanghongze95/p/13842475.html
Copyright © 2011-2022 走看看