机器学习中的K最近邻(K-Nearest Neighbors)

bamboocqh 2018-07-21

1、什么是kNN?

kNN是最简单的分类算法之一,也是最常用的学习算法之一。kNN属于算法的监督学习。这意味着我们有一个标签数据集组成的训练观察(x,y),想捕捉x和y的关系,我们的目标是函数h:x意味着y,这给一个看不见的观察x,h(x)可以自信地预测相应的输出y。

kNN是存储所有可用案例的简单算法,并基于相似性度量(例如距离函数)对新案例进行分类。kNN已经在1970年初作为非参数技术用于统计估计和模式识别。

kNN也是基于实例的非解析学习算法,

kNN是一个惰性算法。

kNN算法基于特征相似度:样本特征与训练集的相似性决定了我们如何对给定的数据点进行分类。让我们以一个例子来更好地理解kNN。

2. kNN的例子

机器学习中的K最近邻(K-Nearest Neighbors)

让我在这个例子中简要解释一下,通过上图,我们有两个类。根据上图,A类属于黄色类,B类属于紫色类。然后在kNN模型中训练数据集,我们稍后讨论但仅关注于这里的例子k = 3是三个最近邻,k = 6六个最近邻。那么当我们取k = 3然后发生什么,当k = 6然后发生什么。当k = 3然后两个属于紫色类,一个属于黄色类多数紫色投票所以这里紫色类同样考虑当k = 6然后四个属于黄色类,两个属于紫色类,所以多数票是黄色所以考虑黄色类。所以这样kNN就可以了。

让我们简要解释一下如何工作。

3、kNN是如何工作的?

在分类设置中,k-最近邻算法基本上归结为在k个最相似的实例中与给定的“看不见的”观察结果形成了多数票。相似性是根据两个数据点之间的距离度量来定义的。一个常见的选择是欧几里得距离,尤其是在测量平面上的距离时,我们使用欧几里得距离的公式。根据欧几里得距离公式,坐标(x, y)和(a, b)的平面两点间的距离:

dist((x, y), (a, b)) = √(x — a)² + (y — b)²

更正式地给出+ ve整数k看不见的观察x和a.Similarity度量d,knn分类器执行以下两个步骤。

  • 它贯穿x和每个训练观察之间的整个数据集计算。我们将训练数据集中的k个点称为集合A.注意k通常是奇数以防止情况。
  • 然后,它估计每个类的条件概率,即具有给定类标签的A中的点的分数。

kNN在记忆训练观察中搜索与新实例最相似的实例,并为其分配最常见的类

理解kNN的另一种方法是将其视为计算决策边界(即两个以上类别的边界),然后将其用于对新点进行分类。

让我们解决iris数据集

机器学习中的K最近邻(K-Nearest Neighbors)

Dataset

它有两个自变量和萼片长度和萼片宽度,以及一个被称为物种的因变量。

解决方案:

新发现的花,需要分类“无标记”

新无标签花的特点:

  • 花萼长度= 5.2
  • 萼片宽= 3.1
  • 物种= ?

第1步:使用欧几里德距离查找距离

距离(萼片长度,萼片宽度)= √(x - a)²+(y - b)²

这里

  • x =观察到的萼片长度
  • a =实际萼片长度
  • y =观察到的萼片宽度
  • b =实际萼片宽度

现在让我们找到数据集第一行的距离

  • 观察到的萼片长度= 5.2
  • 观察到的萼片宽度= 3.1

现在是数据集中给出的实际值

  • 实际萼片长度= 5.3
  • 实际萼片宽度= 3.7

通过使用距离公式

第1行= √(5.2-5.3)²+(3.1-3.7)²= 0.60828

现在找到所有行类似的方式

机器学习中的K最近邻(K-Nearest Neighbors)

距离解决方案

现在我们的第一步已经完成,现在继续下一步

第二步:找出排名。

在这一步中,我将发现第一个要注意的秩是根据距离设置的,距离是最小的,rank为1,如下所示

机器学习中的K最近邻(K-Nearest Neighbors)

Solution of rank

第3步:找到最近邻

根据rank找到k最近邻

对于k = 1

机器学习中的K最近邻(K-Nearest Neighbors)

特征物种是Setosa所以K = 1是Setosa

对于k = 2

机器学习中的K最近邻(K-Nearest Neighbors)

特征种类是Setosa因为没有找到其他物种因此K = 2是Setosa

k = 5

机器学习中的K最近邻(K-Nearest Neighbors)

功能物种Setosa

特征物种是Setosa,因为多数投票给setosa = 3和virginica = 1和Verscicolor = 1,所以基于最高票数KNN,K = 5是Setosa。

同样,我们可以根据数据集找到所有最近邻居,直到15。

这样k近邻算法就可以工作了。

4.kNN在scikit中的实现学习。

第1部分:数据预处理

机器学习中的K最近邻(K-Nearest Neighbors)

第2部分:构建k-Nearest Neighbors模型

机器学习中的K最近邻(K-Nearest Neighbors)

第3部分:进行预测和可视化结果

机器学习中的K最近邻(K-Nearest Neighbors)

5. kNN的应用

文本分类:

kNN用于文本挖掘或分类,这是从文本中驱动高质量信息的过程。

农业气候预测:

k-Nearest Neighbors用于文本挖掘或分类,它是从文本中驱动高质量信息的过程。

政治科学:

将潜在选民分类为对某候选人投票或不投票。

医学分析:

我们可以预测心脏病发作会有第二次心脏病发作。

6. kNN的优点和缺点。

优点:

  • 对离群值的准确性不敏感,可能来自于不相关的特征。
  • 对于非线性数据很有用。
  • 简单的算法来解释和理解。
  • 它的准确性很高,但与更好的监督学习模型相比,它没有竞争力。
  • 适用于分类和回归。

缺点:

  • 计算上昂贵,因为算法存储所有训练数据。
  • 高内存要求。
  • 存储所有(几乎所有)训练数据。
  • 预测存储可能很慢。
  • 对不相关的特征和数据规模敏感。

相关推荐