再邻居
k最近的邻居(或k神经网络简言之)是一个简单的机器学习算法分类一个输入通过使用它k最近的邻居。
例如,假设一个k-NN算法得到一个特定男性和女性体重和身高的数据点输入,如下图所示。为了确定未知输入(绿点)的性别,k-NN可以看最近的k邻居(假设 ),并将确定输入的性别为男性。这种方法是标记未知输入的一种非常简单和逻辑的方法,具有很高的成功率。
k-NN用于各种机器学习任务;例如,在计算机视觉,k-NN可以帮助识别手写信件和基因表达在分析中,该算法用于确定哪些基因对某一特征有贡献。总的来说,k-nearest neighbors提供了简单和有效的结合,使其成为许多机器学习任务中具有吸引力的算法。
属性
分类和回归
k-最近的邻居可以用在分类或回归机器学习任务。分类包括将输入点放入适当的类别,而回归包括建立输入点和其他数据之间的关系。在这两种情况下,确定邻居都可以使用许多不同的距离概念,其中最常见的是欧几里得而且汉明距离.欧几里得距离是最流行的距离概念——两点之间直线的长度。汉明距离是相同的概念,但对弦来说,距离是计算两个弦不同位置的数量。此外,对于某些多变量任务,距离必须是归一化(或加权)来准确地表示相关变量之间的相关性强度。
为k-NN分类,一个输入根据它的邻居的多数投票进行分类。即算法得到类成员它的k类的邻居并输出代表大多数k邻居。
k-NN回归以类似的方式工作。返回的值是输入的平均值k邻居。
假设我们要对绿色的圆进行分类。让我们从 (实线)。在这种情况下,算法将返回一个红色三角形,因为它构成了3个邻居中的大部分。同样,与 (虚线),算法将返回一个蓝色的正方形。
如果没有多数票通过k邻居们,我们可以采取许多行动。例如,可以使用多元系统,甚至可以使用不同的算法来确定数据点的成员关系。
假设我们有来自正弦波的数据点(当然有一些方差),我们的任务是产生一个y的值x价值。当给定一个要分类的输入数据点时,k-NN会返回平均值y输入的值k邻居。例如,如果k-NN被要求返回相应的y值 ,算法会找到k最近的点 然后返回平均值y值对应于k点。这个算法很简单,但对大多数人来说非常成功x值。
参数选择
优点和缺点
k-NN是机器学习任务中使用的众多算法之一,在诸如计算机视觉而且基因表达分析。为什么使用k-NN除以其他算法?下面是利弊清单k-NN有多种选择。
优点:
- 非常容易理解和实现。一个k-NN实现不需要太多代码,可以是开始机器学习数据集的一种快速而简单的方法。
- 不假设输入数据上的任何概率分布。这对于概率分布未知的输入非常方便,因此是稳健的。
- 能快速响应输入的变化。k-NN采用惰性学习,在测试期间进行推广——这允许它在实时使用期间进行更改。
缺点:
- 对本地化数据敏感。自k-NN从输入的邻居获取所有信息,局部异常显著影响结果,而不是使用数据的广义视图的算法。
- 计算时间。懒惰的学习要求大多数k-NN的计算在测试时完成,而不是在训练时。对于大型数据集来说,这可能是个问题。
- 规范化。如果一种类别出现的次数比另一种多得多,那么对输入进行分类将更偏向于该类别(因为它更有可能与输入相邻)。这可以通过对较常见的类别应用较低的权重和对较不常见的类别应用较高的权重来缓解;然而,这仍然会在决策边界附近导致错误。
- 维度。在多个维度的情况下,输入通常可以“接近”多个数据点。这降低了效率k-NN,因为算法依赖于亲密度和相似度之间的相关性。这个问题的一个解决方法是降维,它减少了工作可变维度的数量(但可能会在过程中丢失变化趋势)。
参考文献
- Ajanki,。k近邻分类的例子.检索于2016年5月28日https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm#/media/File:KnnClassification.svg